Java Web Start控制台消失了

时间:2013-01-02 10:40:03

标签: java jnlp java-web-start

我是Java Web Start的新手。我有一个示例客户端 - 服务器应用程序与CORBA作为中间件。前端(Client)是Java,后端(Server)是C ++。运行应用程序并使用jar和批处理文件进行测试。现在我想在Java Web Start和JNLP中部署该应用程序。 我通过创建JNLP文件和签名的jar来配置相同的。

现在众所周知,任何CORBA应用程序都需要一个域文件(.cfg)和一些org.omg类来通过RPC与服务器通信。

我遇到了如何在我的JNLP中指定这些域文件名,路径,CORBA类等。即便如此,我还无法准确理解哪些配置会使CORBA应用程序在Java Web Start中正常运行,以便它也可以与服务器通信。所有的Orbix罐子,IDL Stub罐子都存在并签名。我将我的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>

&LT;

当我使用批处理文件从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. 最大和最小内存的Java VM参数:( - X6464M -Xmx512M)
  3. ORB类名:( - Dor.omg.CORBA.ORBClass = com.iona.corba.art.artimpl.ORBImpl)
  4. ORB单例类名:( - Dor.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文件中看到的那样)
  8. 的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”); - &gt;“i_objORB”是“org.omg.CORBA.ORB”类型的对象。

    在CORBA应用程序中,解决了ORB的NamingService,这是我在批处理文件中指定的以下类。您可以在我之前的帖子中看到批处理文件。         -Dorg.omg.CORBA.ORBClass = com.iona.corba.art.artimpl.ORBImpl

    我无法理解为什么控制台会消失。即便如此,我还是在我的应用程序中打印了查看堆栈。但是控制台会在几秒钟内消失。我不明白为什么。

3 个答案:

答案 0 :(得分:2)

If you are interested in capturing the text from a vanishing window, you may enable logging. Find this folder in Windows:

preg_replace('~href=(\'|"|)(.*?)(\'|"|)(?<!\/|http:\/\/|https:\/\/)~i',  'href=$1http://website2.com/$2$3', $content);

add these lines, using whatever directory you like in this format:

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

答案 1 :(得分: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标记内的参数标记中指定它们,如下所示:

<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

答案 2 :(得分:0)

smw是对的,因为你错误输入了ORB类&amp;将使用ORBSingleton类属性JavaIDL而不是预期的Orbix ORB。

将堆积大小设置为JNLP中<j2se initial-heap-size="..." max-heap-size="...">标记的属性。

请注意,从Java7u45开始,您需要对JNLP文件进行签名,以使这些属性生效。