0

VB6で開発されたCOM+コンポーネントがあります。

コンポーネントサービスマネージャーCOM+アプリケーションに登録すると、ASPからこのように使用できます

Set Comando = Server.CreateObject("JuiciosComando.clsComando")
ComandoExecute = Comando.execute(Xml)
Set Comando = Nothing

必要なのはこれだけです。コンポーネントは(おそらく巨大な)文字列を受け取り、別の(おそらく巨大な)文字列を返します...

Javaからこれとまったく同じコンポーネントにアクセスする方法はありますか?

私がこれまでに見つけたのはJ-Integraですが、これは商用製品です。

codeguru.comでもこのスレッドを見つけましたが、C ++。NETの知識はかなり貧弱で、無料の純粋なJavaソリューションを見つけたいだけです。

4

5 に答える 5

5

Eddie が述べたように、Java 経由で COM を使用する主な方法は 2 つあります。C++ を使用して JNI ラッパーを作成する方法と、サードパーティの JAR を使用して COM オブジェクトをラップする方法です。

私は過去に C++ を使用して COM オブジェクトをラップしようとしましたが、気弱な人向けではありません。実行するのは簡単ではなく、リソースをリークするのは非常に簡単です。

ComfyJ と JACOB という 2 つのサードパーティ JAR も使用しました。

ComfyJ は非常に使いやすく、COM クラスの Java ラッパー クラスを生成する codegen ユーティリティも含まれていました。

http://www.teamdev.com/comfyj/index.jsfからダウンロードして試用できます。

(私は TeamDev とは一切関係ありません!)

完全に無料のソリューションがどうしても必要な場合は、JACOB ( http://sourceforge.net/projects/jacob-project/ ) を試すこともできます。

ドキュメントに問題がありましたが、比較的安定していました。

于 2009-01-29T17:32:32.440 に答える
4

JACOBがかなりうまく機能していることを確認できます。私はこれを多くのCOM自動化プロジェクトに問題なく使用してきました。そしてそれは無料です...

于 2009-01-30T11:08:22.213 に答える
2

私はもともと JNI を使用してネイティブ コードと対話して COM にアクセスしようとしたアプリケーションを使用していましたが、最終的には保守とデバッグが非常に困難になりました。(幸いなことに、私はアプリケーションのその部分に取り組んでいませんでした!) この経験の結果として、COM にアクセスする必要がある Java コードは、COM にアクセスする C# アプリケーションを作成することをお勧めします。 2 つのアプリケーション間の釘付けソケット。

JNI は、C# と比較して、Java では不必要にリスクが高く、難しいため、Java からこれを行う最も安定した方法は、Java から行わないことです。COM アクセスの専門知識を持つもの (C#) に COM アクセスを委任します。

もう 1 つの方法は、JNI を管理するサードパーティ ライブラリのライセンスを取得することです。しかし、面倒を好まない限り、独自の JNI ソリューションを開発しないことを強くお勧めします。

後で追加: 参照したリンクでわかるように、JNI コードは JVM 全体をクラッシュさせる可能性があります。少なくとも COM アクセスがソケットの反対側にある場合、C# アプリケーションがクラッシュした場合、C# アプリケーションが戻ったときに簡単に再確立できるソケットのみが失われます。ただし、 COM にアクセスするときに C# がクラッシュする可能性ははるかに低くなります。はい、純粋な 100% Java ソリューションの方が優れていますが、タスクを別の言語に委譲する方がはるかに優れている場合もあります。

于 2009-01-29T17:11:30.267 に答える
1

たぶん、私にとってはうまく機能し、com イベントもサポートする com4j を試してみてください。ここで見つけることができます: https://com4j.dev.java.net/

于 2009-05-30T12:26:19.483 に答える
0

申し訳ありませんが、このスレッドが古いことは承知していますが、j-Interop が役に立ちます。

j-interop.org Web サイトから:

「j-Interop は Java オープン ソース ライブラリ (LGPL の下) であり、DCOM ワイヤ プロトコル (MSRPC) を実装して、任意の COM コンポーネントと相互運用できる純粋な双方向非ネイティブ Java アプリケーションの開発を可能にします。」

乾杯、マット

于 2009-05-30T02:26:48.650 に答える