• ベストアンサー

Jakarta NTサービスとともに動かすには。。。

TOMCATをNTのサービスとしてバックグランドで実行させようとして その方法が書かれていた(http://www.ingrid.org/jajakarta/tomcat/tomcat-3.2.3/doc-ja/NT-Service-howto.html)を参考にしながらやっているのですが、うまくいきません。 環境は、Win2000、JDK1.3.1_02、TOMCAT3.2.4です。 サービスは登録されるのですが、サービスを開始すると途中でエラー以下のエラーがでて、実際には開始されません。 「システムエラーが発生しました。 システムエラーが1067発生しました。 プロセスを強制終了しました。」 logフォルダに出てくる「jvm.stderr」の内容は javax.xml.parsers.FactoryConfigurationError: java.lang.ClassNotFoundException: org.apache.crimson.jaxp.SAXParserFactoryImpl at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:120) at org.apache.tomcat.util.xml.XmlMapper.readXml(XmlMapper.java:210) at org.apache.tomcat.startup.Tomcat.execute(Tomcat.java:187) at org.apache.tomcat.startup.Tomcat.main(Tomcat.java:240) Exception in thread "main" となります、なにがいけないのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KaZtoYou
  • ベストアンサー率73% (11/15)
回答No.2

%TOMCAT_HOME%/conf/wrapper.propertiesの設定を見直してください。 サービスで動作するのでJAVA_HOMEやTOMCAT_HOME,CLASSPATHといった 環境変数は参照することができません。そのためそれら設定を全て上記の 設定ファイルで指定する必要があります。 えっと、調べてみたところtomcat3.2.4からcrimson.jarを利用しています けれどもwrapper.propertiesはtomcat3.2.3の時のと変わっていません。 よってwrapper.class_pathの記述にcrimson.jarを追加してやる必要があります。 wrapper.class_path=$(wrapper.tomcat_home)\lib\crimson.jar の一文を追加してあげることで動作するのではないでしょうか? P.S JDK1.3.1では既知の問題が対処されていましたか?http://developer.java.sun.com/developer/bugParade/bugs/4323062.html tomcatのドキュメントにもあるように実際に動かしてみるまで信用できなもので(汗)

zima_id
質問者

お礼

具体的なご回答ありがとうございます。 KaZtoYouさんのご指摘のとおりにやってみたところ、エラーの発生は回避することができました。 しかし、起動時の状態では動作するようになったのですが、一度ログオフするとだめになってしまいます。 一応J2SDK 1.4にしたのですが。。。 jvm.stdoutにこんなメッセージが出ています。 「FATAL: configuration error Starting tomcat. Check logs/tomcat.log for error messages 」 やっぱり設定がどこかぬけているのでしょうか?

zima_id
質問者

補足

イベントビューアをみたのですが、「~サービスは不正に終了しました。」と出ています。 どうやらログオフ時にサービスが終了してしまっているようです。 ログオフ時になにかおきているのでしょうか?

その他の回答 (1)

  • kaihou100
  • ベストアンサー率83% (10/12)
回答No.1

 もうすでに解決されているかもしれませんが…。  Tomcat3.2.4のソースを読めば分かるとおり、org.apache.tomcat.startup.Tomcat:187 は、 %TOMCAT_HOME%\conf\server.xmlをXMLとして解析する 部分です。  で、そこから例外が出ているわけですが、どんな例外が 出ているかを見ると、FactoryConfigurationErrorとなっています。  さて、これだけでは内容がつかめないのでと、他を 見てみると、 java.lang.ClassNotFoundException: org.apache.crimson.jaxp.SAXParserFactoryImpl と言ってますよね。  これは、crimsonの一部のクラスが見つからないといわれているわけです。  ここにきて、実は変なことに気づきます。crimsonはデフォルトのパッケージには含まれていません。それなのに使われているわけです。(実はJ2SDK 1.4には含まれてます…って1.3系には含まれていたかどうかは失念)  というわけで、CrimsonをDLし、適当な場所に配置するだけで動くようになるはずです。

参考URL:
http://xml.apache.org/crimson/
zima_id
質問者

お礼

ご回答ありがとうございました。 いちおうCrimsonはあるようです。 この際なのでJ2SDK 1.4にしてみました。

関連するQ&A