私はJavaWebStartの初心者です。ミドルウェアとしてCORBAを使用したサンプルのクライアントサーバーアプリケーションがあります。フロントエンド(クライアント)はJavaで、バックエンド(サーバー)はC++です。アプリケーションは、jarファイルとバッチファイルを使用して実行およびテストされます。次に、そのアプリケーションをJavaWebStartとJNLPにデプロイします。JNLPファイルと署名されたjarファイルを作成して同じように構成しました。
これで、すべての人が知っているように、CORBAアプリケーションには、RPCによってサーバーと通信するためのドメインファイル(.cfg)といくつかのorg.omgクラスが必要です。
JNLPでこれらのドメインファイル名、パス、CORBAクラスなどを指定する方法に固執しています。それでも、Java Web StartでCORBAアプリが正しく機能し、サーバーと通信できるようにする構成を正確に理解することはできません。すべてのOrbixjar、IDL Stub jarが存在し、署名されています。JNLPファイルを参考にしています。実際、これらのドメインファイルとCORBAクラスをパラメータとして追加してみました。しかし、いつものようにそれは機能せず、JNLPを実行した後、Javaコンソールが突然消えます。
CORBADemo.jnlp
?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://172.28.1.139:8400/Test_CORBA_App" href="CORBADemo.jnlp">
<information>
<title>CORBA Demo</title>
<vendor>Ushacomm</vendor>
</information>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="lib_6.3-Signed/UI_Fall_Test63.jar" main="true" download="eager" />
<jar href="lib_6.3-Signed/ConfigurationService.jar" download="eager" />
<jar href="lib_6.3-Signed/IDLStub.jar" download="eager" />
<jar href="lib_6.3-Signed/art-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/art.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_cio-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_cio.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_nio-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_nio.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_tls-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_tls.jar" download="eager" />
<jar href="lib_6.3-Signed/codeset.jar" download="eager" />
<jar href="lib_6.3-Signed/concurrency-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/concurrency.jar" download="eager" />
<jar href="lib_6.3-Signed/ifc-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/ifc.jar" download="eager" />
<jar href="lib_6.3-Signed/iiop.jar" download="eager" />
<jar href="lib_6.3-Signed/java_management_logging-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/java_mgmt_plugin-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/java_portable_interceptor-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/management-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/management.jar" download="eager" />
<jar href="lib_6.3-Signed/mgmt.jar" download="eager" />
<jar href="lib_6.3-Signed/omg-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/omg.jar" download="eager" />
<jar href="lib_6.3-Signed/perf_logging.jar" download="eager" />
<jar href="lib_6.3-Signed/portable_interceptor.jar" download="eager" />
<property name="Dorg.omg.CORBA.ORBClass" value="com.iona.corba.art.artimpl.ORBImpl"/>
<property name="Dorg.omg.CORBA.ORBSingletonClass" value="com.iona.corba.art.artimpl.ORBSingleton"/>
<property name="ORBdomain_name" value="VOIAMODOMAINNEW"/>
</resources>
<application-desc name="CORBADemo Demo Application" main-class="Launch" width="300" height="300">
</application-desc>
<update check="background"/>
<argument>1</argument>
<security>
<all-permissions/>
</security>
</jnlp>
<
バッチファイルを使用してjarからアプリを実行していたとき、バッチファイルは次のようになります。
runJar.bat C:\ jdk1.6.0_14 \ bin \ java -Xms64M -Xmx512M -Dorg.omg.CORBA.ORBClass = com.iona.corba.art.artimpl.ORBImpl -Dorg.omg.CORBA.ORBSingletonClass = com.iona .corba.art.artimpl.ORBSingleton -jar lib_6.3 \ UI_Fall_Test63.jar -ORBdomain_name VOIAMODOMAINNEW 1
一時停止
ご覧のとおり、バッチファイルには次のものが指定されています。
- JDKパス:(C:\ jdk1.6.0_14 \ bin \ java)
- 最大メモリと最小メモリのJavaVM引数:(-Xms64M -Xmx512M)
- ORBクラス名:(-Dorg.omg.CORBA.ORBClass = com.iona.corba.art.artimpl.ORBImpl)
- ORBシングルトンクラス名:(-Dorg.omg.CORBA.ORBSingletonClass = com.iona.corba.art.artimpl.ORBSingleton)
- 実行するjarファイル名:(-jar lib_6.3 \ UI_Fall_Test63.jar)
- ドメイン名:(-ORBdomain_name VOIAMODOMAINNEW)
- 主な関数args:(1)すべてのライブラリ(Orbix jarおよびその他のサードパーティライブラリ)は、#Point5で指定したjarの場所ディレクトリがlib_6.3であることがわかるように、私のlib_6.3フォルダーに配置されます。同様に、Webスタートでは、「jarsigner」によってすべてのjarに署名し、lib_6.3_Signedに配置しました(投稿したJNLPファイルで以前に見たように)
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
// using JavaScript to get location of JNLP file relative to HTML page
var dir = location.href.substring(0,location.href.lastIndexOf('/')+1);
var url = dir + "CORBADemo.jnlp";
deployJava.createWebStartLaunchButton(url, '1.6.0');
</script>
</BODY>
</HTML>
デスクトップにダウンロードされた起動ボタンjnlpをクリックした後。jnlpを実行した後、WebStartConsoleは特定の時点で消えます。調査したところ、私のアプリケーションでは、CORBAネーミングサービスの参照を解決する前に印刷物を提供していることがわかりました。「NamingService」を解決しようとしてこのコードを実行しているときに、問題が発生したと思います。
org.omg.CORBA.Object initNCRef = i_objORB.resolve_initial_references( "NameService"); ->"i_objORB"は"org.omg.CORBA.ORB"タイプのオブジェクトです。
CORBAアプリケーションでは、ORBのNamingServiceの解決は、バッチファイルで指定した次のクラスによって容易になります。あなたは私の以前の投稿でバッチファイルを見ることができます。-Dorg.omg.CORBA.ORBClass = com.iona.corba.art.artimpl.ORBImpl
なぜコンソールが消えてしまうのか理解できませんでした。それでも、スタックを表示するためにアプリケーションで印刷を行いました。しかし、コンソールは数秒以内に消えます。理由がわかりません。