0

したがって、これは主に問題を説明するためのコードになりますが、次のように問題が発生します。

ブラウザでlocalhost:8080 / licsrv / itemsを指定すると、404が返されます。

revelant web.xml

<!-- Java Remoting Servlet -->
    <servlet>
        <servlet-name>licenseGenService</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>licenseGenService</servlet-name>
        <url-pattern>/remoting/licensing</url-pattern>
    </servlet-mapping>

    <!-- Restful API Servlet-->
    <servlet>
        <servlet-name>licensingRestService</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.spring.container.servlet.SpringServlet
        </servlet-class>
        <init-param>
            <param-name>
                    com.sun.jersey.config.property.packages
            </param-name>
            <param-value>
                mypackage.rest
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/orders</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/items</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>licensingRestService</servlet-name>
        <url-pattern>/customers</url-pattern>
    </servlet-mapping>

ItemsResourceImpl.java

@Path("/items")
public class ItemsResourceImpl implements ItemsResource 
{

@GET
    @Produces("text/html")
    public String testItems()
    {
        return "<html><body><h1>Items Resource Tester</h1><p>Items Resource is available.</p></body></html>";
    }

.....
}

そして、applicationContext.xmlにBeanがあります

これで、ItemsResource(インターフェイス)にもアノテーションとメソッドが定義されましたが、これが問題になる可能性がありますか?私の印象では、Jax-RSアノテーションは継承されていません。2つのサーブレットがあり、何かが足りないというのは事実ですか?サーブレットが1つだけで、同じ構成が同じことを行う純粋なRESTサービスがあります。構成を変更する方法によっては、405 MethodNotAllowedも取得されます。何か案は?

4

2 に答える 2

1

アクセスしてみてくださいhttp://localhost:8080/licsrv/items/items。アノテーションは、アプリケーションの@Pathルート(web.xmlのサーブレットマッピングによって定義されます)を基準にしたパスを定義します。

于 2012-09-28T20:10:03.363 に答える
0

サーブレットのマッピングは私には疑わしいです。私は春に精通していませんが、サーブレットマッピングが次のようなものである場合:

<servlet-mapping>
    <servlet-name>licensingRestService</servlet-name>
    <url-pattern>/orders/*</url-pattern>
</servlet-mapping>

URLは次のようになります:localhost:8080/licsrv/orders/items、同じItemsResourceImpl実装。

于 2012-09-27T18:59:04.237 に答える