組み込みの ActiveMQ ブローカーを持つバンドルをデプロイしたプレーンな Felix ベースの OSGI 環境があります。同じ OSGI 環境に別のバンドルをデプロイしたいと考えています。この環境には、ActiveMQ Web コンソールの War ファイルがデプロイされる桟橋が組み込まれています。埋め込まれた桟橋を生成し、war ファイルをこのバンドル (bundleActivator Start Method) の一部として展開しようとしましたが、次の例外が発生します -
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:431)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:393)
バンドル クラスパスに Servlet-API jar があります (パッケージをインポートし、バンドルの展開中に解決されています)。また、activemq-web-console-5.10.0.war ファイルの lib フォルダーにも Servlet-API jar が含まれていることに気付きました。
したがって、Servlet-API jar の重複が原因である可能性があると考えた場合、この例外がスローされ、バンドル クラスパスから Servlet-API jar が削除されました (インポートを削除し、そのパッケージをエクスポートするバンドルをアンデプロイしてみました)。バンドルがデプロイされず、配線の例外を受け取った場合 (Jetty の依存関係には明らかにその jar が必要なため)。
warファイルを解凍して再度パックして試したくありません。
注意: この war ファイルは Karaf に正常にデプロイされましたが、私自身の felix ランチャーを使用してプレーンな Felix に基づく OSGI 環境にデプロイできませんでした。
助けてください !
編集
埋め込まれた jetty を含むバンドルがデプロイされますが、それを開始すると、Jetty が開始されている (war ファイルをデプロイしている) 間に上記の例外がスローされます
編集終了