問題タブ [pax-web]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jetty - Pax-Web で Jetty コネクタを作成する
プログラムで Pax-Web 経由で Jetty コネクタを追加する可能性 (API) はありますか。Pax-Web は内部的に優れたJettyServer
インターフェースを使用していますが、利用可能な OSGi サービスはないようです。使用可能にする必要があるポートは事前にわからないためjetty.xml
、構成目的で使用することはできません。
誰にもアイデアはありますか?
spring - spring dmを使用してkarafでヘシアンサービスを構成する
環境で:
- カラフ 3.0.1
- 春 3.2.4
- ヘシアン 4.0.33
既に CXF を介してサービスを公開しており、現在、同じサービスを Hessian Service として公開しようとしています。
war や web.xml はなく、プレーン Bean + pax-http だけで、次のことを試しました。
アイデアは、ターゲットが HessianServiceExporter であるサーブレット (HttpRequestHandlerServlet) を登録することですが、WebApplicationContext が見つかりません: ContextLoaderListener が登録されていませんか? .
スプリング コードをトレースしたところ、内部の突堤がサーブレットを認識し、その init メソッドを呼び出しています。
スプリング WebApplicationContext がなく、ターゲット プロパティを inyected できないため、ここに問題があります。
何か不足していますか?または、このように機能させることはできません。
回避策として、サーブレットを独自の実装 (setTarget など) で拡張することを検討していますが、それはしたくありません。
アップデート
独自の HttpContext を作成して追加しようとした後、まだ何かが欠けています:
独自の HttpContext を実装しました。
豆を追加しました
サービス:
最後にサービスとしてのサーブレット:
init メソッドは WebApplicationContext を探しているので、GenericWebApplicationContext Bean を宣言して明示する必要があるように見えますが、この Bean を OSGi に必要な HttpContext に「結合」する方法がわかりません。
apache-karaf - pax-web で @WebServlet と @Component を使用する方法
Pax-Web WAR-Extender を使用するセットアップがあるので、標準的な方法でサーブレットを登録できます。
WAR-Extender を使用する前は、サーブレットは、他の osgi 参照を挿入できるシングルトンでした。エクステンダーを使用すると、Declarative-Service XML によりサービスが注入されますが、ブラウザーでサーブレットにアクセスすると、他のサービスを注入せずに新しいインスタンスが作成されます。
私の目標は、OSGi-Service-Registry をプログラムで呼び出さないようにすることです。サーブレットがシングルトンとして扱われるように、または OSGi サービスが再注入されるように、構成はありますか?
jsf - .War ファイルをデプロイする Apache Karaf
私の目的は、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.1
jstl-1.2
javax.servlet-api-3.0.1.jar
javax.faces.webapp.FacesServlet は javax.servlet.Servlet にキャストできません
このエラーで JSF ページを実行できますが、JSF タグが表示されません。
jetty - karaf で jetty を使用して静的ファイルを提供する (バンドル外)
ファイルシステム内のどこかから静的ファイルを提供するという単純な問題に取り組んでいますが、Web アプリケーションの外部では実行できません。
これを行う方法に関するいくつかの例がありますが、どれも機能していないようで、これまでのところ、実際に機能するという確認を誰かから見つけることができませんでした.
etc ディレクトリにある jetty.xml は、 https: //ops4j1.jira.com/wiki/display/paxweb/Advanced+Jetty+Configuration または ops4j GitHub サンプルに記載されているように編集されています。
したがって、これを jetty.xml に追加します。
またはこれ:
両方のバージョンで jetty / karaf が正常に起動し、karaf がシャットダウンされると確認できます
2015-06-02 12:02:57,838 | 情報 | プール-7-スレッド-2 | ContextHandler
| 113 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | oejsServletContextHandler を停止しました{/fileserver,file:/Users/Shared/testenv/}
ただし、ファイルは localhost:8181/fileserver では提供されません
それが(新しくインストールされたカラフコンテナで)機能している唯一の方法は、使用することです
ただし、これを行うと、karaf で実行されている他の Web アプリケーションが壊れます。たとえば、Camel Servlet コンポーネントを使用しています。
それで、誰かがkarafのjettyインスタンスを介して静的ファイルを提供する作業構成を持っていますか、それとも今これを行う方法はありますか?
どんな助けでも感謝します。少し早いですがお礼を!
ところで: Karaf 3.0.3 の使用
編集:
Achim から提供されたスニペットを使用してテストを再実行し、DEBUG ログを有効にしました。
2015-06-03 15:33:25,492 | デバッグ | プール-6-スレッド-1 | XmlConfiguration | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | XML oejshContextHandler{/,null}.setContextPath(/static-content) 2015-06-03 15:33:25,527 | デバッグ | プール-6-スレッド-1 | XmlConfiguration | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | XML oejshContextHandler{/static-content,null}.setHandler(org.eclipse.jetty.server.handler.ResourceHandler@3855ace4) 2015-06-03 15:33:25,529 | デバッグ | プール-6-スレッド-1 | コンテナー
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | コンテナ oejshContextHandler{/static-content,null} + org.eclipse.jetty.server.handler.ResourceHandler@3855ace4 as handler 2015-06-03 15:33:25,529 | デバッグ | プール-6-スレッド-1 | 容器
| | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | コンテナ org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection@6665534e + oejshContextHandler{/static-content,null} as handler 2015-06-03 15:33:25,542 | デバッグ | プール-6-スレッド-1 | アブストラクトライフサイクル
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | oejshContextHandler を開始しています{/static-content,null} 2015-06-03 15:33:25,542 | デバッグ | プール-6-スレッド-1 | AbstractHandler
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | oejshContextHandler を開始しています{/static-content,null} 2015-06-03 15:33:25,543 | デバッグ | プール-6-スレッド-1 | 抽象的なライフサイクル
| | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | 開始済み oejshContextHandler{/static-content,null} 2015-06-03 15:34:27,974 | デバッグ | /静的コンテンツ | サーバー
| 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | REQUEST /static-content on AsyncHttpConnection@638f2d20,g=HttpGenerator{s=0,h=-1,b=-1,c=-1},p=HttpParser{s=-5,l=10,c=0 }、r=1 2015-06-03 15:34:27,974 | デバッグ | /静的コンテンツ | サーバーモデル
| | 78 - org.ops4j.pax.web.pax-web-spi - 3.1.4 | 一致する [/static-content]... 2015-06-03 15:34:27,975 | デバッグ | /静的コンテンツ | サーバーモデル | 78 - org.ops4j.pax.web.pax-web-spi - 3.1.4 | パス [/static-content] がどのコンテキストとも一致しません 2015-06-03 15:34:27,975 | デバッグ | /静的コンテンツ | サーバー | 71 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.15.v20140411 | RESPONSE /static-content 200 処理済み = false
ここで、Get バージョン (動作していない) と Set バージョン (動作している) の違いに気付きました。
Set はクラスorg.eclipse.jetty.server.handler.HandlerList
Get を設定し、クラスに追加しますorg.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection
。これは、次のように記述されています。
登録されたエイリアスへのリクエスト パスの部分文字列ベースのマッチングを実行した後、リクエスト パスに一致するハンドラー (=コンテキスト) のみを呼び出す Jetty ハンドラー コレクション
エイリアスに関して問題がある可能性はありますか?
編集2:
これを掘り下げてみましたが、実際にはこれを機能させることができません。統合テストと通常のカラフの違いについてはわかりませんが、問題があるに違いありません。この問題を再現するには、新鮮な karaf (3.0.3) コンテナーを取得しfeature:install war
、スニペットを実行して etc/jetty.xml に追加して、このように表示し、resourceBase のパスを編集してローカル パスと一致させます。
localhost:8181/static-content を使用して、ブラウザ経由でコンテキストにアクセスしてみてください。
結果は常に 404 - 見つかりません。
Linux と Windows を実行している複数のシステムでこれを試しました。
apache-camel - Pax Web DefaultResourceMapping の Jetty コネクタを指定する方法
Camel-CXF を使用して、バンドルから Web サービスを公開しています。構成にはブループリントを使用します。私の理解では、この CXF 構成は、指定されたポートで Jetty コネクタを動的に作成し、指定されたパスで CXF サーブレットを公開します。
これはうまく機能します。サービス エンドポイントは、指定されたポートとパスで利用できます。
ここで、Tomi Vanek のwsdl-viewerスタイル シートによって変換された元の WSDL を利用できるようにしたいと思います。Pax Web の DefaultResourceMapping を使用して、静的リソースを利用可能にする方法を見つけました。
ただし、これにより、ポート 8181 のデフォルトの Jetty コネクタで WSDL にアクセスできるようになります。私が理解できないのは、リソース マッパーをデフォルト以外のコネクタにバインドする方法です。具体的には、CXF エンドポイント用に動的に作成されたコネクタへ。
jsf - PAX-WEB 4.2.3 / Jetty 9.2.10 を使用する Apache Karaf 4.0.3 で JSF を使用するために CDI (OpenWebBeans または JBoss Weld) をセットアップする方法
JSF / Primefaces で使用するために、Apache Karaf 4.0.3 を CDI (PAX-CDI) でセットアップしようとしています。すでに Apache OpenWebBeans と JBoss Weld で試しましたが、すべての試行で例外が発生しました (以下を参照)。
私の現在の設定:
全般的
src/main/webapp/WEB-INF/web.xml (削除済み)
pom.xml (削除済み)
一般的な CDI 機能 / バンドル
JBoss 溶接
追加の依存関係
追加のインポート パッケージ
src/main/webapp/META-INF/context.xml
CDI 機能 / バンドル
OpenWebBeans
追加の依存関係
なし
追加のインポート パッケージ
src/main/webapp/META-INF/context.xml
CDI 機能 / バンドル
これらのセットアップに関する私の問題
JBoss 溶接
JBoss Weld を使用すると、現在 NoClassDefFoundError になります。
ただし、探しているクラスが存在する必要があります。
2つのライブラリがそのパッケージをエクスポートするため、競合しないのはちょっと奇妙ですが、実行時に両方のライブラリが必要なように見えるため、それが問題なのか、それを解決する方法が問題なのかはわかりません.
OpenWebBeans
OpenWebBeans では、PAX-CDI の現在の開発ブランチ (0.x)にパッチを適用する必要がありました。Jetty のバージョンが古い (JettyDecorator は古いスタイルのインターフェースを実装していた) ため、実行する必要があります。これですべてが正常に起動しますが、JSF ページが Bean にアクセスしようとするとすぐに、次の例外が発生します。
マイビーン
質問は次のとおりです。
私の設定に何か問題があるかどうか誰かが知っていますか? JSFでApache Karaf / CDIセットアップを実行している人はいますか? Karaf と (PAX-)CDI に関する既知の問題はありますか?
どんな助けにも本当に感謝します!
よろしくお願いします。ファビアン
jetty - Karaf で jetty.xml フラグメント バンドル プロパティを設定する方法
org.ops4j.pax.web.pax-web-jetty
Karaf 内で完全にピックアップされた jetty.xml ファイルを含むフラグメント ホストを作成しました。
この jetty.xml ファイルには、次のような行が含まれています。
jetty.ssl.host
値を設定できるように、どこに設定すればよいか教えてください。
ベスト、ジェローム