1

カープールエンジン用のJSONWebサービスを書き始めたところです。登録APIを書き込もうとすると、HTTP404エラーが発生します。

これが私の問題です

"http://localhost:8081/mCruiseOnCarPool4All/carpool4all/Registration"
HTTP/1.1 405 Method Not Allowed
"http://localhost:8081/mCruiseOnCarPool4All/carpool4all/Registration/Request"
HTTP/1.1 500 Internal Server Error
"http://localhost:8081/mCruiseOnCarPool4All/Registration/Request"
HTTP/1.1 404 Not Found
"http://localhost:8081/mCruiseOnCarPool4All/Registration"
HTTP/1.1 404 Not Found

私はここで本当にばかげた何かが欠けていることを知っています。

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.mcruiseon.carpool4all</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/carpool4all/*</url-pattern>

RegistrationService.javaは、Postメソッドのみをコーディングしました。私はすべての例外でエラーを返しsessionkey、成功した場合は問題ありません。postメソッドのコードは無視してかまいません。エラー処理を理解できるように、共有したかっただけです。

package com.mcruiseon.carpool4all;

@Path("/Registration")
public class RegistrationService {
    private ClientSession clientSession ;
    private String sessionKey ;
    private SessionManager sessionManager ;

    @Context
    UriInfo uriInfo;
    @Context
    Request request;

    @POST
    @Path ("Request")
    @Consumes({ MediaType.APPLICATION_JSON })
    public Response post(JAXBElement<AMessageStrategy> element) {
            try {
            clientSession = new ClientSession(God.mCruiseOnServer) ;
        } catch (InvalidServerDNSorIPException e) {
            e.printStackTrace();
            return Response.serverError().build() ;
        }
        sessionKey = sessionManager.setClientSession(clientSession) ;
        clientSession.setSessionKey(sessionKey) ;

        clientSession.getSendQueue().sendRequest(element.getValue()) ;
        try {
            clientSession.waitAndGetResponse(element.getValue()) ;
        } catch (WaitedLongEnoughException e) {
            return Response.serverError().build() ;
        } catch (UnableToResolveResponseException e) {
            return Response.serverError().build() ;
        }
    return Response.ok(sessionKey).build();
    }
}

Junitテストケース(すべてのHttpConnectionコードを削除)

ClientIdentityConcrete clientIdentity = new ClientIdentityConcrete("username", "password", "secretkey") ;
RegistrationRequest register = new RegistrationRequest(clientIdentity);
String jsonStr = mapper.writeValueAsString(clientIdentity);
HttpPost request = new HttpPost("http://localhost:8081/mCruiseOnCarPool4All/Registration/Request");
4

1 に答える 1

3

関連する接続は/mCruiseOnCarPool4All/carpool4all/Registration/Request 500 エラーを返すため、サーバー コンソールにエラー スタック トレースが必要です。

表示している他の URL が 404 に達している原因は、URL がマップされているように見えるジャージー サーブレットを指していないためです。/carpool4all

URL パターンは次のとおりです。

 <host>/<app>/<jerseyservlet>/<xml resource>/<method path>

 - host = localhost:8081/ (obviously)
 - app = mCruiseOnCarPool4All
 - jerseyservlet = carpool4all
 - xml resource = Registration
 - method path = Request
于 2012-10-22T09:22:23.417 に答える