1

Jersey 実装を使用して JAX-RS Web サービスを実行する Web アプリケーションがあります。ターゲット アプリケーション サーバーは、デフォルトの JAXRS 実装が Jersey v1.9 である WebLogic 12c です。

1) jersey-server-1.9 に依存する Jetty (6.1.26) で実行すると、すべて問題ありません。

2) jersey-core.jar + jersey-server.jar (v1.9) jar を両方とも私の戦争の WEB-INF/lib に埋め込んで WebLogic 12c で実行すると、それも機能します。

2) これら 2 つの jar から切断された同じ war を使用して WebLogic 12c で実行すると (weblogic Java EE スタックによって既に提供されている必要がない場合)、動作しなくなります。次のエラーが発生しました。

"weblogic.application.ModuleException: [HTTP:101216]サーブレット: "jersey-servlet" が Web アプリケーションの起動時にプリロードできませんでした: "cachede-newgen.war".com.sun.jersey.api.container.ContainerException: ResourceConfigインスタンスにはルート リソース クラスが含まれていません。com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:99)"

言うまでもなく、Jersey バージョンは3 つのケースすべてでまったく同じです。

「2013 年 4 月 24 日 4:10:24 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: ジャージー アプリケーションの開始、バージョン 'ジャージー: 1.9 09/02/2011 11:17 AM'」

クラスパスまたはクラスローダーの問題のように聞こえます:-(

この問題を解決するためのアイデアや回避策はありますか(展開されたすべての戦争でジャージージャーを繰り返したくないことを考慮して)?

4

3 に答える 3

3

わかりました理由がわかりました:-)-そして「better_use_mkstemp」は私を正しい方向に導きました(多くのthx!)。

解決策は、デプロイされた Jersey バージョンへの参照を weblogic 記述子ファイルに追加することです。

<library-ref>  
    <library-name>jersey-bundle</library-name>  
    <specification-version>1.1.1</specification-version>  
    <implementation-version>1.1.5.1</implementation-version>  
</library-ref>

奇妙なことに、そのような参照がないと、エラー メッセージ (つまり、「ResourceConfig インスタンスにルート リソース クラスが含まれていません」) が表示され、Jersey が注釈付きクラスを起動してスキャンできるように感じます...

注意: 実際には、ここで説明されているように、JSR-311 API への参照も必要です: http://theblasfrompas.blogspot.be/2011/03/time-to-deploy-restful-web-service-from.html

于 2013-04-25T13:13:33.807 に答える