メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年12月28日日曜日

[work][OpenOffice][SDK][java] Professional UNO読み中(19) Importing a UNO Object

http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Importing_a_UNO_Object
を読む。

Importing a UNO Object
もっとも共通のプロセス間通信の使用ケースはexporting serverからUNOオブジェクトの参照をimportすること。
マニュアルのサンプルでは、ComponentContextへの参照を取得している。

で、この参照の正しい方法は、、、


com.sun.star.bridge.UnoUrlResolver
 

というサービスを使う方法。
com.sun.star.bridge.UnoUrlResolverのインタフェースはcom.sun.star.bridge.XUnoUrlResolverに定義されている。

interface XUnoUrlResolver: com::sun::star::uno::XInterface
{
/** resolves an object on the UNO URL */
com::sun::star::uno::XInterface resolve( [in] string sUnoUrl )
raises (com::sun::star::connection::NoConnectException,
com::sun::star::connection::ConnectionSetupException,
com::sun::star::lang::IllegalArgumentException);
};
 

こんな感じで。

で、このresolvメソッドに渡される引数の文字列はUNO URLと呼ばれる文字列を指定する。

UNO-URLのフォーマットは以下のとおり。

Scheme:コネクションタイプ,パラメータ;プロトコルタイプ,パラメータ;Exportされているオブジェクト名
 

Schemeのところには"uno"を指定する。

コネクションタイプのところにはコネクションタイプを指定する(socketとか)
パラメータをつける場合には","(カンマ)で区切り、"="で名前と値のペアを記述できる。

socket,host=localhost,port=1234
 

などと指定できる。パラメータはhostとport。

プロトコルタイプのところにはプロトコルタイプを指定する。(urpとか)
パラメータをつける場合には","(カンマ)で区切り、"="で名前と値のペアで記述できる。

urp
 

などなど。

Exportされているオブジェクト名のところには

StarOffice.ServiceManager
 

などと指定できる。

で、続けて書くと、

uno:socket,host=localhost,port=1234;urp;StarOffice.ServiceManager
 

こんな感じ。これをresolve()に渡してやる。


UnoUrlResolverの制限
  1. どんな場合でもbridgeの終了を検知できない
  2. プロセス間通信の切断ができない。
  3. ローカルで初期化したオブジェクトをリモートプロセスに渡せない



おしまい。
.

0 コメント: