私は、Jersey を使用して安らかな Web サービスを実装することを学んでいます。私はいつも「POST
http://localhost:8080/rest/welcome/post
404 Not Found の応答ステータスが返されました" - 以下のコードの何が問題なのですか? サーバー側のコンテキスト ルートは残りであり、クラス レベルで @Path を歓迎し、メソッド レベルで @pPath を投稿します。
クライアント
public class WelcomeRestJsonClient {
@Produces("application/json")
@Consumes("text/plain")
public void send() {
MyObject myObject = new MyObject();
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getClasses().add(com.restclient.MyJsonProvider.class);
Client client = Client.create(clientConfig);
WebResource webResource = client.resource("http://localhost:8080/rest/welcome/post");
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, myObject);
System.out.println("success");
}
}
サーバ
@Path("/welcome")
public class WelcomeRestJson {
@POST
@Path("/post")
@Produces("text/plain")
@Consumes("application/json")
public String processPostData(MyObject myObject) {
System.out.println("Inside processPostData");
return "success";
}
}
JsonProvider の構成が正しくないために、この問題に直面していますか? クライアント側では、JacksonJaxbJsonProvider を拡張して MyObject を Json に変換する MyJsonProvider を使用しています。サーバー側の私のコードは、単に MyObject を受け入れます。サーバー側でも Json プロバイダーを接続するためのコードが必要ですか?
これが私のweb.xmlです
<servlet>
<servlet-name>Jersey REST Service</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>com.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
残りの index.html にアクセスできます。ログファイルに次のように表示されます。情報: ルート リソース クラスが見つかりました: クラス com.rest.WelcomeRestJson パスから "/" を削除しました。それでも同じ 404 エラーです。助けてください。