1

既存の Struts アプリケーションを JAX-RS に置き換えるには、サーブレット拡張マッピング (*.do) をサポートする必要があります。そこで、次のように Apache JAX-RS サーブレットを登録しました。

    <display-name>jaxrs_wink</display-name>
    <servlet>
            <description>
            JAX-RS Tools Generated - Do not modify</description>
            <servlet-name>JAX-RS Servlet</servlet-name>
            <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
            <init-param>
                    <param-name>javax.ws.rs.Application</param-name>
                    <param-value>tests.SampleApplication</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <enabled>true</enabled>
            <async-supported>false</async-supported>
    </servlet>
    <servlet-mapping>
            <servlet-name>JAX-RS Servlet</servlet-name>
            <url-pattern>*.do</url-pattern>
    </servlet-mapping>

要素は拡張マッピングを指定することに注意してください。問題は、拡張子のマッピングが Apache Wink 1.4 で機能しないことです。ただし、Jersey では動作します。

この問題を再現するには、次の JAX-RS リソース クラスとアプリケーションを作成します。アクセスしてみてください: http:////hi.do

Wink から WebApplicationException (405) が発生しています。しかし、Jersey では問題なく動作しました。拡張マッピングが JAX-RS v1.1 に従って機能するかどうかを知りたいです。仕様を検索しましたが、サーブレット マッピングに関する具体的なコメントは見つかりませんでした。

package tests;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/")
public class SampleResource {

    @GET
    @Path("hi.do")
    public String sayHi() {
            return "Hello World!";
    }

}

package tests;

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.core.Application;

public class SampleApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(SampleResource.class);
            return classes;
    }

}
4

0 に答える 0