ksaitoの日記

日々試したことの覚え書き

Sonatype NexusをTomcatで動かす

Sonatype Nexusは、Webアプリケーションとして実装されています。
オープンソース版は、warファイルとServletコンテナをバンドルしたバージョンがありますが、warファイルは、Ubuntu 9.10のaptリポジトリにあるTomcat6では、起動できませんでした。
FAQには、Tomcat6をサポートしているとありましたが、情報も少なくあきらめました。

Ubuntu 9.10のTomcat6パッケージ

Ubuntu 9.10のTomcat6パッケージは、6.0.20-2ubuntu2.1というバージョンです。
そのままでプロイすると下記のようなエラーで起動できません。
Tomcat6に含まれるServlet APIとnexusのWarファイルに含まれるservlet-apiの.jarファイルのバージョンが合わないことが原因のようです。

2010/03/17 23:12:22 org.apache.catalina.startup.HostConfig deployWAR
情報: Webアプリケーションアーカイブ nexus.war を配備します2010/03/17 23:12:22 org.apache.catalina.loader.WebappClassLoader validateJarFile
情報: validateJarFile(/var/lib/tomcat6/webapps/nexus/WEB-INF/lib/servlet-api-2.5
-6.1.12.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending cl
ass: javax/servlet/Servlet.class2010/03/17 23:12:24 org.apache.catalina.core.StandardContext start
致命的: Error listenerStart
2010/03/17 23:12:24 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/nexus]

試しにnexusに含まれるservlet-api-2.5-6.1.12.jarを削除して起動してみまると、

情報: Webアプリケーションアーカイブ nexus.war を配備します
2010/03/18 22:45:40 org.apache.catalina.core.StandardContext start
致命的: Error listenerStart
2010/03/18 22:45:40 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/nexus]

となり起動に失敗します。
残念ながらTomcat5.5のパッケージは、なかったので試せませんでした。

Apache Tomcatのオリジナル

apache-tomcat-5.5.28とapache-tomcat-6.0.26で、それぞれ試してみました。
Tomcat-5.5.28は、問題なく動作、Tomcat 6.0.26は、同じエラーメッセージで動きませんでした。
NexusのWarに含まれるServlet-api*.jarを削除したところ起動できるようになりました。

原因わからずですが、回避策があるのでまあ良いか...