2013-01-02 29 views
1

我是Java Web Start的新手。我有一個以CORBA作爲中間件的示例Client-Server應用程序。前端(客戶端)在Java中,後端(服務器)在C++中。該應用程序運行並使用jar和批處理文件進行測試。現在我想在Java Web Start和JNLP中部署該應用程序。 我已經通過創建一個JNLP文件並簽名了罐子來配置它。Java Web Start控制檯消失

現在衆所周知,任何CORBA應用程序都需要一個域文件(.cfg)和一些org.omg類來通過RPC與服務器進行通信。

我堅持如何在我的JNLP中指定這些域文件名,路徑,CORBA類等。即使如此,我也無法確切知道什麼配置會使Java Web Start中的CORBA應用程序正常工作,以便它可以與服務器通信。所有Orbix罐子,IDL存根罐子都存在並簽名。我給我的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> 

<

當我從罐子使用批處理文件我的批處理文件看起來像這樣

runJar.bat Ç運行的應用程序:\ 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. Java虛擬機用於最大和最小存儲器參數:(-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. 主要函數參數:(1) 所有庫(Orbix jar以及其他第三方庫)都放在我的lib_6.3文件夾中,如您在#Point5中指定的那樣,jar位置目錄是lib_6.3。在相若方式開始網上我已經通過「的jarsigner」簽訂的所有的罐子,把他們在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後,web啓動控制檯在特定點消失。 調查後,我發現在我的應用程序中,它在解析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

我不明白爲什麼控制檯正在消失。即使是我在我的應用程序中打印以查看堆棧。但控制檯在幾秒鐘內消失。我不明白爲什麼。

+0

的JNLP是無效的。使用[JaNeLA](http://pscode.org/janela/)進行檢查並更正錯誤。 –

回答

0

我對CORBA一無所知,但我可以看到將您的jnlp文件與您提供的命令行進行比較的一些問題。

在jnlp文件中設置屬性時,請刪除前導「D」。在命令行版本使用

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

這基本上是告訴JVM來設置系統屬性「org.omg.CORBA.ORBClass」到「com.iona.corba.art.artimpl.ORBImpl」。所以屬性的名稱確實是「org.omg.CORBA.ORBClass」,這是你應在屬性標記指定的名稱:

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

的「-ORBdomain_name VOIAMODOMAINNEW 1」命令行參數沒有設置作爲系統屬性,但作爲命令行參數提供給程序的主類。你應該在你的應用程序說明標籤內的參數標籤像這樣指定它們:

<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 
0

SMW問題是正確的,因爲你輸入了錯誤的ORB類& ORBSingleton類屬性JavaIDL將被用來代替預期的Orbix ORB。

heapsizes被設置爲JNLP中<j2se initial-heap-size="..." max-heap-size="...">標記的屬性。

請注意,從Java7u45開始,您需要簽署您的JNLP文件,以便使這些屬性發揮作用。

2

如果您有興趣從消失窗口捕獲文本,則可以啓用日誌記錄。在Windows中查找該文件夾:

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

添加這些行,你使用這種格式喜歡的任何目錄:

deployment.log=true 
deployment.user.logdir=C\:\\tmp