将 CORBA orbd-Name 服务安装为 Windows 服务
Posted
技术标签:
【中文标题】将 CORBA orbd-Name 服务安装为 Windows 服务【英文标题】:Installing CORBA orbd-Name Service as Windows Service 【发布时间】:2012-04-20 12:53:57 【问题描述】:我使用Java SE平台的Java IDL组件开发了CORBA服务器/客户端。
我想在 Windows 平台上将此应用程序作为服务启动,所以我使用 Java Service wrapper 并将应用程序作为服务安装。
但在启动服务器之前,我需要启动 orbd.exe - Oracle 的 CORBA 命名服务。
我尝试使用 Windows 中的sc create
命令将此 exe 安装为服务。
但是当我使用 sc start
启动这个 orb 服务时
它挂起并抛出以下错误:
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
这个 windows 服务有什么问题?
如何将 CORBA 命名服务作为 windows 服务启动?
【问题讨论】:
【参考方案1】:您收到错误 1053,因为 orbd.exe 不是本机 Windows 服务,并且无法正确响应启动自身的请求。您将需要一个“服务包装”应用程序,它可以接受 Windows 服务命令(启动、停止)并对可执行文件采取适当的操作(启动、终止)。
如果您的需求是基本的,Microsoft's free SRVANY utility 就足够了,但也有一些更强大的商业替代方案可用。
【讨论】:
【参考方案2】:您实际上也可以使用 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
(需要重新安装应用才能设置依赖)
希望这对您有所帮助。
干杯
【讨论】:
一个问题,如果我想在启动/停止服务时产生副作用,比如删除任何目录,我该如何实现? (其实我是想删除orb.db目录)以上是关于将 CORBA orbd-Name 服务安装为 Windows 服务的主要内容,如果未能解决你的问题,请参考以下文章
使用 WiX 将 NServiceBus.Host 安装为服务
将MongoDB安装为Windows服务---安装MongoDB服务