2

JavaSEプラットフォームのJavaIDLコンポーネントを使用してCORBAサーバー/クライアントを開発しました。

このアプリケーションをWindowsプラットフォームのサービスとして開始したいので、Java Serviceラッパーを使用し、アプリケーションをサービスとしてインストールしました。

ただし、サーバーを起動する前に、orbd.exe(OracleのCORBAネーミングサービス)を起動する必要があります。

sc createWindowsからのコマンドを使用して、このexeをサービスとしてインストールしてみました。

しかし、私がこのオーブサービスを開始するときsc start

ハングし、次のエラーがスローされます。

 [SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion. 

このWindowsサービスの何が問題になっていますか?

CORBAネーミングサービスをWindowsサービスとして開始するにはどうすればよいですか?

4

2 に答える 2

3

orbd.exeはネイティブのWindowsサービスではなく、それ自体を開始する要求に適切に応答できないため、エラー1053が発生します。Windowsサービスコマンド(開始、停止)を受け入れ、実行可能ファイルに対して適切なアクション(起動、終了)を実行できる「サービスラッパー」アプリケーションが必要になります。

ニーズが基本的なものであれば、 Microsoftの無料のSRVANYユーティリティで十分ですが、より堅牢な商用の代替手段もいくつか利用できます。

于 2012-04-20T15:02:36.907 に答える
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

(依存関係を設定するには、アプリケーションを再インストールする必要があります)

これがお役に立てば幸いです。

乾杯

于 2012-04-23T03:57:24.397 に答える