我使用Java SE平台的Java IDL组件开发了CORBA服务器/客户端。
我想在Windows平台上将此应用程序作为服务启动,因此我使用了Java Service wrapper,并将应用程序安装为服务。
但在启动服务器之前,我需要启动 orbd.exe - 来自Oracle的CORBA命名服务。
我尝试使用来自Windows的sc create
命令将此exe安装为服务。
但是当我使用sc start
它会挂起并抛出错误:
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
这个Windows服务有什么问题?
如何以Windows服务启动CORBA命名服务?
答案 0 :(得分:3)
您收到错误1053,因为orbd.exe不是本机Windows服务,无法正确响应启动自身的请求。您将需要一个“服务包装”应用程序,它可以接受Windows服务命令(启动,停止)并对您的可执行文件采取适当的操作(启动,终止)。
如果您的需求是基本的,那么Microsoft's free SRVANY utility就足够了,但也有一些更强大的商业替代品。
答案 1 :(得分:1)
你实际上也可以使用Wrapper运行orbd。
基本上,您需要在orbd.conf文件中使用以下属性:
wrapper.java.command=%JAVA_HOME%/bin/java
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
wrapper.app.parameter.1=com.sun.corba.se.impl.activation.ORBD
wrapper.java.additional.1=-Dapplication.home="%JAVA_HOME%"
wrapper.java.additional.2=-Dcom.sun.CORBA.activation.DbDir="%JAVA_HOME%"/orb.db
wrapper.java.additional.3=-Dcom.sun.CORBA.activation.Port=1049
wrapper.java.additional.4=-Dcom.sun.CORBA.POA.ORBServerId=1
wrapper.java.classpath.1=%JAVA_HOME%\lib\tools.jar
wrapper.java.classpath.2=%JAVA_HOME%\classes
wrapper.java.classpath.3=../lib/wrapper.jar
wrapper.java.library.path.1=../lib
wrapper.java.library.path.2=%JAVA_HOME%/bin
wrapper.name=orbd
wrapper.displayname=CORBA Naming Service
将此服务作为服务安装后,您可以为应用程序设置对该服务的依赖关系,以确保在运行应用程序时启动orbd。
wrapper.ntservice.dependency.1=orbd
(您需要重新安装应用程序才能设置依赖关系)
希望这会帮助你。
欢呼声