3

jersey フレームワークを使用して jax-rs Web サービスを実装しようとしています。Web サービスを作成しましたが、web.xml タグの意味を完全には理解していないため、正しく構成されているかどうかわかりませんが、サービスにアクセスしようとするとエラーが発生します。ここにウェブサービスがあります:

package org.LMS.Controller;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path ("/test")
public class Test {
    private String name = "Worked";

    @GET
    @Produces (MediaType.APPLICATION_XHTML_XML)
    public String getTest ()
    {
        return name;
    }
}

私のweb.xmlは次のとおりです。

 <!-- Test web service mapping -->
  <servlet> 
    <display-name>Test</display-name>
    <servlet-name>Test</servlet-name>
    <servlet-class>org.LMS.Controller</servlet-class>
    <init-param>
        <param-name>org.LMS.Controller.Test</param-name>
        <param-value>eduscope</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>
<!--end Test web service mapping -->

アプリケーションにアクセスしようとすると、次のエラーが表示されます: HTTP Status 500 - type Exception report message

サーバーで内部エラー () が発生したため、この要求を実行できませんでした。

例外

javax.servlet.ServletException: Wrapper cannot find servlet class org.LMS.Controller or a class it depends on
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:679)
root cause

java.lang.ClassNotFoundException: org.LMS.Controller
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:679)

私が間違っていることと、web.xml ファイル内の各タグが Web サービスに関連していることを意味することを教えてください。

4

3 に答える 3

5

間違ったサーブレットを設定しました。ジャージーを使用していると仮定すると、サーブレットを次のように指定する必要があります。

<servlet>
    <servlet-name>Rest</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>org.LMS.Controller.Test</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Rest</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

そして、それにアクセスしたいときは、次のURLを使用します

http://(host)[:port]/(context path)/rest/test
e.g. 
http://localhost:8080/MyRestProject/rest/test
于 2012-09-17T01:19:39.350 に答える
0

その時点でREST Webサービスを残りで構成するときはいつでも、

スキャン用の以下のジャージー クラスのような Web サービス クラスの実装をスキャンするには、init-param と init-value を設定する必要があります。

<init-param>
   <param-name>com.sun.jersey.config.property.packages</param-name>
   <param-value>yourpackegeName</param-value>
</init-param> 
于 2013-07-18T10:46:04.567 に答える