3

私の理解では、glassfish 3 は JEE6 に準拠し、jax-rs に対応しているため、jersey サーブレット コンテナーとマッピングを web.xml ファイルに含める必要はありません。これが私のweb.xmlが次のようになることを望んでいたものです

<webapp>
</webapp>

ただし、jax-rs パス注釈付きリソースにアクセスしようとすると 404 が発生するため、これは機能しません。次のように、サーブレット アダプターを含めるとうまく機能します。

<webapp>
  <servlet>
    <servlet-name>ServletAdaptor</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servle
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletAdaptor</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</webapp>

グラスフィッシュ 3.0.1 で jersey を使用して空の webapp 要素を持つことは可能ですか?

4

2 に答える 2

4

Java EE 6 準拠の JAX-RS 実装の場合、次のことを行う必要があると思います。

  1. javax.ws.rs.core.ApplicationWeb プロジェクトにサブクラスを追加する
  2. 次に、@javax.ws.rs.ApplicationPath("/*")注釈を Application サブクラスに追加します。

Application サブクラスは何もする必要はありません。仕様によると、これ@Path/@Providerは、アプリで見つかったものはすべてアプリケーションに含まれ、@ApplicationPathサーブレット マッピングのようなものであることを意味します。これにより、空の web.xml が作成されます。

web.xml がない場合の問題は、JAX-RS 実装が使用するサーブレット マッピング (URL パターン) を認識できないことです。@Pathまた、これにより、特定の URL パターンで特定のリソース/プロバイダーのみを使用できるようになり@ProviderApplication.getClasses().

于 2010-07-17T13:06:24.007 に答える
0

web-fragment.xml ファイルの処理は、web.xml で正しいバージョンを宣言した場合にのみサポートされる可能性があります。このようにして、新しいバージョンのアプリケーション サーバーにデプロイされたときに、既存のアプリケーションの動作が突然変更されることはありません。

Netbeans で新しく作成された ee6 Web プロジェクトからコピーされた、このような web.xml で試してください。

<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>
于 2010-06-19T19:23:52.503 に答える