2

私の目的は、OSGI フレームワークで JSF アプリケーションを実行することです。そこで、PAX-WEB と呼ばれる OSGi Web アプリケーション用のサーブレット コンテナーに WAR ファイルをデプロイしようとしています。WildFly 8.0 アプリケーション サーバーで動作する適切な JSF 実装があります。このアプリケーションから OSGi 化された WAR ファイルを作成することに成功しました。Maven を使用して PAX-WEB にデプロイしようとすると、次のエラーが発生します。

不足している要件: javax.servlet.annotation

/libアプリケーションのフォルダにこれらの JAR があります: jsf-api-2.1.7, jsf-impl-2.1.7, . WAR ファイルに追加して再デプロイすると、今度は次のエラーが発生します。jsp-api-2.1jstl-1.2javax.servlet-api-3.0.1.jar

javax.faces.webapp.FacesServlet は javax.servlet.Servlet にキャストできません

このエラーで JSF ページを実行できますが、JSF タグが表示されません。

4

1 に答える 1

1

ここで 2 つの問題が混在しています。1 つは、フレームワークのセットアップにサーブレット クラスがありません。その場合、pax-web-jetty-bundle を使用することを提案します。これは uber バンドルであり、サーブレット クラスも含まれてエクスポートします。その場合、フレームワークのセットアップで使用可能なサーブレット jar がないことを確認してください。ところで。Pax Web 自体のサンプルと統合テストを見ると、必要なライブラリーを理解するのに役立ちます。

あなたが直面している 2 番目の問題は、サーブレット クラスを戦争に追加することの問題です。これは、OSGi およびサーブレットの仕様によって禁止されています。

そのため、シナリオについてこれ以上の知識がなくても、Apache Karaf サーバー (Pax Web を使用) を使用した方がよい場合があります。これは、すべてのインフラストラクチャ バンドルが既に含まれており、連携して動作することがわかっているためです。

もう 1 つ、ops4j メーリングリストでより多くのより良いフィードバックを得ることができます。

于 2015-04-10T10:34:42.230 に答える