1

私は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

一時停止

ご覧のとおり、バッチファイルには次のものが指定されています。

  1. JDKパス:(C:\ jdk1.6.0_14 \ bin \ java)
  2. 最大メモリと最小メモリのJavaVM引数:(-Xms64M -Xmx512M)
  3. ORBクラス名:(-Dorg.omg.CORBA.ORBClass = com.iona.corba.art.artimpl.ORBImpl)
  4. ORBシングルトンクラス名:(-Dorg.omg.CORBA.ORBSingletonClass = com.iona.corba.art.artimpl.ORBSingleton)
  5. 実行するjarファイル名:(-jar lib_6.3 \ UI_Fall_Test63.jar)
  6. ドメイン名:(-ORBdomain_name VOIAMODOMAINNEW)
  7. 主な関数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

なぜコンソールが消えてしまうのか理解できませんでした。それでも、スタックを表示するためにアプリケーションで印刷を行いました。しかし、コンソールは数秒以内に消えます。理由がわかりません。

4

3 に答える 3

2

消えるウィンドウからテキストをキャプチャすることに関心がある場合は、ログを有効にすることができます。Windows で次のフォルダを見つけます。

C:\Users\{username}\AppData\LocalLow\Sun\Java\Deployment\deployment.properties

次の形式で任意のディレクトリを使用して、これらの行を追加します。

deployment.log=true
deployment.user.logdir=C\:\\tmp
于 2015-07-29T00:29:37.867 に答える
0

smw は正しいです。ORB クラスと ORBSingleton クラスのプロパティのタイプを間違えたため、意図した Orbix ORB の代わりに JavaIDL が使用されます。

<j2se initial-heap-size="..." max-heap-size="...">ヒープサイズは、JNLPのタグの属性として設定されます。

Java7u45 以降では、これらのプロパティを有効にするために JNLP ファイルに署名する必要があることに注意してください。

于 2014-04-28T21:19:10.733 に答える
0

CORBA については何も知りませんが、jnlp ファイルと提供されたコマンド ラインを比較すると、問題がいくつか見られます。

jnlp ファイルでプロパティを設定するときは、先頭の「D」を削除します。使用するコマンドラインバージョンで

-Dorg.omg.CORBA.ORBClass=com.iona.corba.art.artimpl.ORBImpl

これは基本的に、システム プロパティ「org.omg.CORBA.ORBClass」を「com.iona.corba.art.artimpl.ORBImpl」に設定するよう jvm に指示します。したがって、プロパティの名前は実際には「org.omg.CORBA.ORBClass」であり、プロパティ タグで指定する必要がある名前です。

<property name="org.omg.CORBA.ORBClass" value="com.iona.corba.art.artimpl.ORBImpl"/>

「-ORBdomain_name VOIAMODOMAINNEW 1」コマンド ライン引数は、システム プロパティとして設定されませんが、コマンド ライン パラメータとしてプログラムのメイン クラスに渡されます。次のように、application-desc タグ内の引数タグで指定する必要があります。

<application-desc name="CORBADemo Demo Application" main-class="Launch" width="300" height="300">
    <argument>-ORBdomain_name</argument>
    <argument>VOIAMODOMAINNEW </argument>
    <argument>1</argument>
</application-desc>

これらの変更が問題を解決するのに十分かどうかはわかりませんが、出発点になる可能性があります.

問題をさらに診断するには、次のようなコマンド ラインから webstart アプリケーションを起動すると役立つ場合があります。

javaws http://www.yourservername.com/yourpath/CORBADemo.jnlp
于 2013-04-03T16:21:47.970 に答える