http://wiki.services.openoffice.org/wiki/Documentation/DevGuide
のとおり、FirstStep中。
# apt-get install openoffice.org openoffice.org-dev
でインストール。
FirstStepに書かれてあるbuild.xmlを参考に、ここで必要なjarは、、、、
/usr/lib/openoffice/program/classes/{jurt.jar,unoil.jar,ridl.jar,juh.jar}
だけ。
あと、CLASSPATHに入れておかなければいけないのは、、、
/usr/lib/openoffice/sdk/com/sun/star/lib/loader/*.class
らしい。
で、FirstStepのとおりのコードを書き・・・、ant。で、ant run。
おぉー。接続した。
X-Serverに接続しに行くので、Xも起動しておかないとダメ。
X-Serverなしでできないかと探してみたけど、OpenOfficeのメーリングリストで、
without X-Serverは非対応だって言っていた。
残念。
で、動かしたソースは、
public class FirstUnoContact {
public static void main(String[] args) {
try {
// get the remote office component context
com.sun.star.uno.XComponentContext xContext =
com.sun.star.comp.helper.Bootstrap.bootstrap();
System.out.println("Connected to a running office ...");
com.sun.star.lang.XMultiComponentFactory xMCF =
xContext.getServiceManager();
String available = (xMCF != null ? "available" : "not available");
System.out.println( "remote ServiceManager is " + available );
}
catch (java.lang.Exception e){
e.printStackTrace();
}
finally {
System.exit(0);
}
}
}
。。。
FirstStepのまんまでした。
OpenOffice の UNO APIを使用するには、
- クライアントでUNOの初期化
- サーバからコンポーネントコンテキスト取得
内部的には、
- ServiceManagerを初期化して、
- OpenOffice.orgサーバとの接続を確立して、(サーバが居なければ立ち上げる)
- OpenOffice.orgサーバからコンポーネントコンテキストを取得する
FirstStepでは、この辺の面倒なところを、
com.sun.star.comp.helper.Bootstrap.bootstrap()
がやってくれているらしい。
次に、
xContext.getServiceManager();
がコールされ、serviceManagerを取得している。
OpenOffice.orgのUNO APIではこのserviceManagerが肝なんだってさ。
ふーん。
ついでに、OpenOffice.orgを事前にサーバとして立ち上げておく場合と
サーバとして立ち上げておかない場合でやってみたら、どちらもうまくうごく(もちろんそうだ。。)
が、やっぱり事前にサーバとして立ち上げておかないと重いねー。
.
0 コメント:
コメントを投稿