0

私は REST サービスを始めたばかりで、ここ 2 週間で問題に直面しています。ジャージーを使用しています。JSON オブジェクトをパラメーターとして受け取り、それをデータベースに格納する POST メソッドを呼び出すために、単純な REST クライアントを使用しようとしています。私のアプローチはうまくいきませんでしたが、一歩遅れることにしたので、POST および GET メソッドをテストするためだけに、より単純なプロバイダーを備えたさらに単純なクライアントを使用しています。奇妙なことに、POST メソッドを呼び出すことはできますが、次のようになります。

@POST
@Path("/store")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public String storeData(String str) throws SQLException {
  String query = "insert into myDB.test (id, name) values ('1', '" + str + "')";
  MyDB db = new MyDB();
  db.runQuery(query);
  return responseCode.toString();
}

これはうまくいきます!

しかし、同じクラスで @GET メソッドが機能せず、404 エラーが返されます。私のコードは次のとおりです。

@GET
@Path("/retrieve")
@Produces(MediaType.TEXT_PLAIN)
public String getResponse() {
 return "Hello!";
}

私の質問は多くの人にとって非常に単純かもしれないことを知っています...しかし、実際の実装に進むために何が間違っているのかを見つけようとしています...

よろしくお願いします。

マリーナ


ここに私のクライアント側のコードがあります

public class TestClient {

   public static void main(String[] args) {
        ClientConfig clientConfig = new DefaultClientConfig();
        Client client = Client.create(clientConfig);
        WebResource webResource = client.resource("http://localhost:8080/server_classes/rest/server/retrieve");
            System.out.println(webResource.accept(MediaType.TEXT_PLAIN).post(ClientResponse.class, "hello"));
        }
    }

そして、ここに私のweb.xmlがあります:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>server_classes</display-name>
    <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>server_classes</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>
</web-app>

私のパッケージは server_classes という名前で、リソースのパスは @Path("/server") です

注釈パスとメソッドを変更するだけで、vogellaチュートリアルを最初からもう一度試しました(「Hello Jersey」応答を返すだけではありません)。しかし、今、私は何も実行できません。404エラーしかありません!

OはTomcatのインスタンスも削除し、Tomcatのインストール全体を削除して再インストールしましたが、問題は同じです。これが役立つ場合、Ubuntu 12.04に取り組んでいます..

ありがとう!

4

1 に答える 1

0

try to change your request from post to get, as your servlet-mapping expects:

webResource.accept(MediaType.TEXT_PLAIN).get(ClientResponse.class);
于 2012-08-08T11:41:26.447 に答える