ジャージを使用してRESTサービスを構築していますが、奇妙な例外が発生します。次のようなRESTURIをヒットしたい:
http://localhost:9889/rest/Users/{userid}
リクエストとともに送信されるコンテンツは、JSONで次のようになります。
{
"attr1":"name",
"attr2":"age"
}
エンドポイントのURLコードは次のとおりです。
@Path("/rest/Users")
class Users
{
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{userId}")
@Consumes(MediaType.APPLICATION_JSON)
public String getUserInfoQuery(
QueryDoc reqJSON,
@PathParam("userId") String userId,
@HeaderParam("Session-Token") String sessionId,
@HeaderParam("Authorization") String authToken)
)
{
.
.
.
.
}
}
そして、QueryDocリソースは次のようになります。
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class QueryDoc
{
@XmlElement(name = "attr1")
private String attr1;
@XmlElement(name = "attr2")
private String attr2;
//getters and setters
.
.
.
.
}
サーバーを起動すると、例外がスローされます
com.sun.jersey.api.container.ContainerException: Fatal issues found at
class com.test.Users. See logs for more details.
at com.sun.jersey.server.impl.application.WebApplicationImpl.newResourceClass(WebApplicationIm....
私はここhttp://www.skybert.net/java/jersey/でこの例外を見つけることができ ました、そしてこのリンクで言及されているように..理由は
public String getUserInfoQuery(
QueryDoc reqJSON,
reqJSONには注釈が付けられていません。何らかの注釈を付けて注釈を付けると、サーバーの起動時に例外はスローされませんが、この場合、URL応答は無意味です。このパラメーターを削除すると、URLは機能しますが、リクエストJSONを消費しません。リクエストのJSONコンテンツとHeaderParamsおよびPathParamsを使用したい場所でそれを機能させるにはどうすればよいですか?