Top > OOobbs2 > 157

OOobbs2/157 Edit

  • サマリ: 複数のファイルを同時に扱う方法は?
  • 環境: Calc
  • 状態: 未解決
  • 投稿者: 初級Javaかき2?
  • 投稿日: 2008-11-17 (月) 12:44:39

質問 Edit

OpenOfficeをListenモードで起動し、Javaでファイル作成をしています。 1度に30ファイル程を作成するのですが、時間がかかり、スレッドを利用して、並行処理にして、時間を短縮しようと思ったのですが、コネクションが 切断されてしまい、上手く処理できません。 並行処理は出来ないんでしょうか?

回答 Edit

  • OOo はスレッドに対応していません・・・。

ときどき見かける問題ですが、サーバーなどで処理中に次の処理が入ると正しく動作しなくなることがあるようです。

そう、どちらかというとマルチスレッドで処理が走らないようにすべきです。一部のコンポーネントをスレッド対応に変更されるようですが・・・いつか。

  • はにゃ? 2008-11-17 (月) 17:26:27
  • どれくらい大きなシートを作成しているのかわかりませんが、Java から接続して処理する api の呼出し毎に数 msec のディレイがありますし。OOo の api は遅いことがよく知られています。Calc でシートにデータを書き込んでいるのであれば、com.sun.star.sheet.XCellRangeData インターフェースなどを使用すればすこしだけ早くなります。というよりも、ODF ファイルを吐いた方が早いですけどね・・・。ODF Tool Kit を使うとか。 -- はにゃ? 2008-11-17 (月) 18:06:23
  • 1台のPCに複数のポート番号の異なるOpenOfficeを起動することはできるんでしょうか? -- 初級Javaかき2 2008-11-17 (月) 20:46:59
  • WinXP 上だと同じ実行ファイルで二つ起動させようとしても起動しません。soffice.bin かなにかが OOo のプロセスを仕切っていたんじゃなかったかと思います (私はよく知りませんが)。私の環境では OOo 2.4.1 が二つと OOo 3.0 が入っていますが、それぞれ別々に起動すればもちろん別々に利用できます。実行ユーザーを別にしたりすればうまくいくのかな・・・? -- はにゃ? 2008-11-17 (月) 22:44:25
  • WinXP上で別ユーザーで実行をすると、2つ起動しました。ですが、コマンドベースでの実行は駄目なようです。バージョンの違うOOoだと起動するようですね。別端末にインストールされたOOoを使用する方法は無いんでしょうか? -- 初級Javaかき2 2008-11-18 (火) 14:12:04
  • 別のIPを持った端末上で動作している OOo に接続するには resolver で指定するときに soket 接続を使用、IP を指定してやります。 -- はにゃ? 2008-11-18 (火) 16:48:16
  • socket接続にてIPを指定して接続を試みているのですが、上手くいきません。相手がLinuxだからなのでしょうか。 -- 初級Javaかき2 2008-11-25 (火) 12:15:33
  • 私の方でも VMWare Player 上の Linux からホストの WinXP 上で動いている OOo にはうまく接続できたんですけど・・・。逆がつながらない・・・。 -- はにゃ? 2008-11-25 (火) 14:58:17
  • Linux側の設定を以下のようにすると、接続できました。
    soffice -invisible -headless -display 1.0 -accept="socket,host=0,port=8100;urp;StarOffice.ServiceManager" &
     SunのStarOffice8の開発ガイドに「監視または接続するリソースのホスト名または IP 番号。ローカルホストとする場合もあります。アクセプタ文字列では、これを 0 として(「host=0」)、使用可能なすべてのネットワークインターフェースで受け入れる場合もあります。」とありましたので、host=0を設定してみると、外部からでも出来るようです。 -- 初級Javaかき2 2008-11-26 (水) 10:42:07
  • あー、確かに書いてました・・・。一応リンク Opening a Connection

後は、TCP/IP で接続すると遅いのが問題ですね・・・。ネットワークを介すると更に遅い始末。それ以外にはファイルデータ自体のやり取りなども面倒ですねぇ。OOo の再起動などの関連も含めると、oooforum では Java での場合には RMI などを使うといいようなことが書かれてました。私は Java なんてさっぱり分かりませんが。その辺は使う人に任せるとしますけど。

  • はにゃ? 2008-11-26 (水) 23:20:52

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes