我是 Java Web Start 的新手。我有一个使用 CORBA 作为中间件的示例客户端-服务器应用程序。前端(客户端)使用 Java,后端(服务器)使用 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>
<
当我使用批处理文件从 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 )
- 最大和最小内存的 Java VM 参数:(-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)
- 主要功能参数:(1)所有库(Orbix jar以及其他第三方库)都放在我的lib_6.3文件夹中,如您所见我在#Point5中指定的jar位置目录是lib_6.3。同样,在 web start 中,我已经通过“jarsigner”对所有 jars 进行了签名,并将它们放入 lib_6.3_Signed 中(正如您之前在我发布的 JNLP 文件中看到的那样)
索引.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
我不明白为什么控制台会消失。即使为此我在我的应用程序中打印以查看堆栈。但是控制台会在几秒钟内消失。我不明白为什么。