問題タブ [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.

0 投票する
1 に答える
332 参照

pax - Pax WebホワイトボードのResourceMappingは、バンドルの外側を指すパスを持つことができますか?

ResourceMapping以下をOSGiサービスとして登録しようとしました。

ただし、ブラウザの。の下に結果が表示されませんhttp://127.0.0.1:8282/resources/aFileUnderMyPath。PaxWebがログのマッピングにアクセスしていることがわかります。これは可能ですか、それとも代わりにサーブレットを作成する必要がありますか?

0 投票する
1 に答える
4846 参照

jetty - ファイルシステムから静的コンテンツを提供するためにKarafのJettyを取得するには?

Karaf のバンドル外から静的コンテンツを提供する必要があります。すでに Pax Web と Jetty が組み込まれているので、問題にはならないと思っていましたが、今のところ成功していません :(

、、および機能がインストールされjettyhttpいます。http://team.ops4j.org/wiki/display/paxweb/Advanced+Jetty+Configurationに従って、これを に追加しました:http-whiteboardwaretc/jetty.xml

完全なファイルは次のとおりです。

そしてorg.ops4j.pax.web.cfg、この内容でファイルを作成しました:

私が見るログで

しかし、ファイルは表示されません。たとえば、ファイルがありますが、 または/home/aromanov/workspaces/odp-server/ru.focusmedia.odp.server.poim.resources-rodniki/.styleのいずれhttp://192.168.1.9:8080/app/.styleかに移動するとhttp://192.168.1.9:8282/app/.style404 エラーが発生します。

0 投票する
1 に答える
568 参照

java - Declarative Services を使用した OSGi+Pax-Web での GWT の問題

プログラムによる Service Tracker の代わりに Declarative Services を使用するために、OSGi (Equinox) および Pax-web で実行されている既存の GWT アプリを移行しています。

Equinox で Pax-Web を使用しています。WAR ベースの GWT アプリケーションは、PAX-WEB War エクステンダーによって問題なくロードされますが、この方法では宣言型サービスを使用できません。

私はすべてのサーブレットを戦争からうまくリファクタリングし、それらを宣言型 OSGi サービスに変換しました ( <provide interface="javax.servlet.Servlet"/>)。このようにして、サーブレット内の厄介な ServiceTracker コードと特定の OSGi 依存関係をすべて取り除きました。[1]の情報を使用して、フィルターを登録し、静的コンテンツとウェルカム ページを提供するために、他のすべての web.xml 機能をさらに複製しました。

この時点では正常に動作するはずですが、PAX-WEB と GWT がそのリソースをロードしようとする方法に問題があります。

シリアライゼーション記述子のロード中に、GWT はローカル コンテキストからシリアライゼーション ポリシー ファイルをロードします。私の場合、次のようなリソースを解決しようとします: /ctx/ctx/62394587E47773FB1594FF.gwt.rpc このリソースは GWT コンパイラーによって作成され、/war/ctx/ctx/resource... の下に配置されます。

以前は、標準の wab マッピング ( Webapp-Context: /ctx, Webapp-Root: /war) gwt を使用すると、そのリソースが正しく検出されました。プログラムによるリソース マッピングを使用するようになりました。

GWT はリソースの読み込みに失敗し、次のエラーが発生します。

[注: 最後の文は「結果としてシリアライゼーションの問題が発生することになります」と読む必要があります]

HttpServiceContext がリソースをロードし、パスをプログラム Web コンテキストに関連する URL ではなくファイルとして解釈する問題を追跡しました。

このリソースはバンドル ファイル システムの /war/ctx/ctx/ の下にあるため、これは明らかに失敗します。これはバグ PAXWEB-314 [2] に関連しているようです。この実装では、相対パスをファイル パスに変換します。

この問題を回避する方法はありますか? WAB の代わりに OSGi DS を使用して GWT と PAX-WEB を使用している人はいますか? 考えられる方法の 1 つは、GWT コンパイラによって生成された /war/ctx を /ctx にコピーすることですが、ハックの方向に進む前に適切な解決策を見つけたいと思います。

何か案は?

1 - https://github.com/ops4j/org.ops4j.pax.web/blob/master/samples/whiteboard/src/main/java/org/ops4j/pax/web/extender/samples/whiteboard/internal/ Activator.java [2] - http://team.ops4j.org/browse/PAXWEB-314

0 投票する
1 に答える
802 参照

caching - OSGi 環境で提供される静的リソースのカスタム応答ヘッダーの設定

私たちが解決しようとしているタスクは、HttpService.registerResources()メソッドCache-Controlを使用して OSGi 環境で公開される静的リソース (例: )のカスタム応答ヘッダーを設定することです。

次の詳細を考慮して、この目標を達成するための最善の方法は何ですか?

  • 「リソース」サービスのセットに基づいて、多数のリソース登録が存在する可能性があります。これらの OSGi サービスは、それらが存在する静的リソース パスとバンドルに関する情報を提供します。リソース パスの登録数は、50 から 200 の間であると予想されます。
  • 実装は OSGi フレンドリーであるべきです。Pax Web 拡張機能の使用は許容されます。
  • 実装は Web サーバーに依存しない必要があります (たとえば、Jetty に関する直接的な知識がない場合)。

私たちが考えている解決策は次のとおりです。

  1. HttpContext.handleSecurityで応答ヘッダーを設定する

    • このアプローチの欠点は、セキュリティを処理する方法が、セキュリティにまったく関係のないロジックにも関与することです。
  2. registerResource()リソース URI と同じ URI を使用して、呼び出しごとにフィルターを登録します。フィルターは、応答ヘッダーを設定するための応答になります。

    • このアプローチの欠点は、同じ目的を果たすフィルターが多すぎる可能性があることです。しかし、これまでのところ、これが最も簡単な解決策のようです。
  3. ルート パスに 1 つのフィルターを登録し、要求 URI が既知のリソース URI パスに対応する場合に応答ヘッダーを設定するように構成します。

    • このアプローチの欠点は、リソース パスを知るためにフィルタを教育する必要があることです。これは、実装が少し複雑になることを意味します。

提案された解決策について意見を聞き、他の代替案を知りたいと思っています。

0 投票する
1 に答える
149 参照

java - NCSAリクエストハンドラはpax-web1.1.4では機能しません

pax-web1.1.4でNCSAリクエストロギングを有効にしようとしています。推奨される方法は機能しません。ファイルは作成されましたが、空のままです。ソースコードを見ると、Jettyサーバーのpax Web実装は、すべてのハンドラーがコンテキストに対応する必要があると想定するJettyServerHandlerCollectionにリクエストを渡すことがわかりました。したがって、org.ops4j.pax.web.log.ncsa。*オプションを使用するだけでは不可能に見えます。

何かが足りないのですか、それともこの機能がpax webで機能しないのですか?回避策はありますか?

0 投票する
2 に答える
722 参照

jetty - jetty osgi : 1 つの securityHandler ですべてのサーブレットを保護する

paxweb の osgi バンドルとして jetty を使用しています。OSGI HttpService のおかげで登録されたすべてのサーブレットとリソースが、1 つの共通の SecurityHandler によって保護されていることを確認したいと思います (さらに、JAASLoginService を使用したいと考えています)。また、認証されていないすべてのリクエストを 1 つのログイン ページにリダイレクトしたいと考えています。

このシナリオを構成することは可能ですか?

0 投票する
1 に答える
1300 参照

java - Pax Web でデプロイされた Web バンドルから (Blueprint) OSGi サービスにアクセスする方法は?

現在、Pax Web を使用して OSGi Web アプリケーション バンドルを展開しています。この Web バンドルから、一連の OSGi サービスにアクセスする必要があります。システムの残りの部分では、サービスの作成と利用に Blueprint を使用しています。これは、プロキシ、ダンピングなどを提供するため、優れています。

Pax Web でデプロイされた Web アプリケーション バンドルから、これらの OSGi サービスにアクセスする最良の方法は何ですか?

私の考えは

1) osgi-bundlecontext 属性を介して ServletContext から BundleContext を取得し、OSGi ServiceTracker クラスを使用します。

2) 必要なサービスへの参照を含むブループリント コンテキスト ファイルを Web バンドルに作成します。Blueprint コンテキストは、Blueprint エクステンダーによって OSGi サービス レジストリに登録され、そこから取得して ID で Bean を検索できます。

3) Springs ContextLoaderListener などを使用して、web.xml ファイルにブループリント コンテキストを作成します。

オプション 1 は問題ありませんが、サービスを追跡する必要があり、Blueprint のメリットをまったく享受できません。

オプション 2 も問題なく動作しますが、タイミングの問題があります。実際には、アプリケーションをデプロイする 2 つのサービスがあります。web.xml ファイルを使用してデプロイする Pax Web エクステンダーと、Blueprint コンテキスト ファイルをデプロイする (私の場合は Gemini) Blueprint エクステンダーです。起動時にこれらのエクステンダーは同時にデプロイされ、Pax Web エクステンダーがサーブレット コンテキスト リスナーをインスタンス化するときに、アプリケーション コンテキストが OSGi サービス レジストリで使用できるという保証はありません。これは、OSGi サービスをコンテキスト リスナー コードから呼び出すことができないことを意味します。

オプション 3 - これが可能かどうかはよくわかりません。Spring DM がこのアプローチを使用していたように見えますか?

私は何かが欠けているに違いないと感じています - Pax Web でデプロイされた Web バンドル内から Blueprint を使用する簡単な方法はありますか?

0 投票する
1 に答える
1429 参照

osgi - Felix servletbridge war に OSGi フラグメント バンドルを追加する

war ホスティング OSGi バンドルを作成しようとしています。完全な構成で WAB バンドルをホストできるはずなのでpax-web-extender-war、そのために統合を試みます。slf4j-apiandのようないくつかの依存関係が必要slf4j-log4j12です。ここに問題があります:私は常にこの例外を受け取ります:

slf4j-log4j12は実際にはフラグメント バンドルであるためです。私はフェリックスがこれに対処するべきだと思っていましたが、そうではありません。そのため、このjarをに移動しようとしましWEB-INF/libたが、osgiがバンドルとして解決できないため、配線が失敗します。

そう、

  • フラグメントバンドルはどこに置くべきですか?
  • 何らかの形で設定する必要がありますframework.propertiesか?
  • Apache Felix はフラグメント バンドルを扱うことさえできますか?

以下は、戦争の現在のレイアウトです(これは、felix http bridge サンプルに基づいていることに注意してください)

0 投票する
0 に答える
602 参照

java - OSGi Felix で pax-web を使用して静的リソースを提供する

私は本当に単純であるべき何かに困惑しています。pax-web-jetty-bundle 3.0.0 を使用し、以下を登録しています。

ただし/tmp/static/somefile.txt、アクセス時に表示できませんhttp://localhost:8080/somefile.txt(404 not found が表示されます)。

もちろん、これは基本的な例にすぎません。呼び出しは問題なく終了しregisterResources ますが (私はデバッグしました)、リソースは提供されません。

また、私自身のより複雑な例を試してみましたが、うまくいきませHttpContextんでした: getResources メソッドは呼び出されません。

null httpcontextx で登録された他のサーブレットもあります。ここで何が間違っているのでしょうか?ありがとう!

0 投票する
1 に答える
886 参照

java - 「間違った」OSGi HttpServiceに登録されたサーブレット

で実行されている Web アプリケーションに埋め込まれているシステムHttpServiceで、が競合するという問題があります。OSGiApache KarafTomcat

アプリケーションの一部は にOSGi基づいておらず、 内のコードを介して直接リクエストに応答しますWAR。一部の部分は、 を使用してコンテナFelix Servlet Bridge内のサーブレットを呼び出してリクエストに応答します。Felix OSGiまた、Felixのホワイトボード バンドルを使用して、サーブレットの自動登録を実現しています。

ActiveMQの機能も使用しており、コンソールKarafに含まれています。Pax Webその結果、埋め込みアプリケーション サーバと統合するHttpServiceからの1 つと、別のポートで独自のサーバを実行するからの 1 つになります。Felix Servlet BridgeHttpServicePax WebJetty

したがって、問題は、一部のスタートアップのホワイトボード バンドルが に接続し、Pax Web HttpServiceサーブレットが間違った場所に公開されることです。HttpServiceホワイトボード バンドルを構成して目的のfromを何らかの方法で要求する方法が見つかりませんでした。関連するバンドルはすべてサードパーティのものであるため、それらのコードもServlet Bridge変更することは避けたいと考えています...Java

これを解決する最善の方法は何ですか?

ActiveMQ(保守性のためにコードよりも構成を優先し、コンソールを独自のポートに保持したい)