ActiveX から Enterprise JavaBeans (EJB) へのブリッジは、 フリー・スレッド・アクセスとアパートメント・スレッド・アクセスの両方をサポートし、 フリー・スレッド・マーシャラーをインプリメントして、 Active Server Pages (ASP) などのハイブリッドな環境で使用できるようにします。 ActiveX プロセスで作成された各スレッドは、 スレッドが ActiveX から EJB へのブリッジを介して通信するときに、 Java 環境でミラーリングされます。
Java オブジェクト (JObjectProxy オブジェクトや JClassProxy オブジェクトはありません) へのすべての参照が ActiveX スレ ッドにロードされると、ActiveX から EJB へのブリッジは、Java 仮想マシ ン (JVM) コードからスレッドを切り離します。 したがって、マルチスレッド Windows アプリケーションからアクセスする Java コードは、 すべてスレッド・セーフであることに注意する必要があります。 Visual Basic コードおよび VBScript アプリケーションは両方とも、基本的に単一スレッドです。 したがって、Visual Basic および VBScript アプリケーションでは、 Java プログラムへのアクセスに関するスレッド化の問題はありません。 Active Server Pages およびマルチスレッド C/C++ プログラムでは、問題が発生する可能性があります。
ActiveX プロセス | ActiveX プロセスによる JVM アクセス |
---|---|
スレッド A - 1 で作成 | スレッド 1 - 2 で接続 |
スレッド B - 4 で作成 | スレッド 2 - 4 で接続、6 で切り離し、スレッド 3 - 7 で接続 |
スレッド C - 4 で作成 |
Microsoft のインターネット情報サーバーにおける Active Server Pages (ASP) は、 マルチスレッド環境です。 XJB.JClassFactory オブジェクトを作成したら、 それをアプリケーション・グローバル・オブジェクトとしてアプリケーション・コレクションに保管することができます。 ASP 環境内のすべてのスレッドは、 同じ ActiveX から EJB へのブリッジ・オブジェクトにアクセスできるようになりました。 Active Server Pages は、 デフォルトで CPU 当たりの ASP プロセスごとに 10 のアパートメント・スレッドを作成します。 これは、ActiveX から EJB へのブリッジ・オブジェクトが初期化されると、 このオブジェクトを、オブジェクトを作成したスレッドだけではなく、 10 のスレッドすべてが呼び出せるということを意味します。
単一アパートメント動作をシミュレートする必要がある場合は、 Visual Basic コードで単一アパートメント・スレッドの ActiveX ダイナミック・リンク・ライブラリー (DLL) を作成して、 ActiveX から EJB へのブリッジ・オブジェクトをカプセル化します。 これにより、JVM オブジェクトへのすべてのアクセスが、必ず同じスレッドで行われるようになります。 <OBJECT> タグを使用して、XJB.JClassFactory をアプリケーション・オブジェクトに割り当てる必要があり、 さらに、単一スレッド化動作を Web アプリケーションに導入した場合の結果を認識している必要があります。