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の制限
- どんな場合でもbridgeの終了を検知できない
- プロセス間通信の切断ができない。
- ローカルで初期化したオブジェクトをリモートプロセスに渡せない
おしまい。
.
0 コメント:
コメントを投稿