Frage

Der Versuch, erholsamen Web-Service mit POST-Methode auszuführen. Hier ist der relevante Teil meiner Schnittstelle:

@Path("/customers")
public interface CustomerResource {
 @POST
 @Consumes(MediaType.APPLICATION_XML)
 public Response createCustomer(InputStream is);
        .....
}

Die Umsetzung:

 // Create customer
 public Response createCustomer(InputStream is) {
  logger.debug("In createCustomer");
  Customer customer = readCustomer(is);
  customer.setId(idCounter.incrementAndGet());
  customerDB.put(customer.getId(), customer);
  logger.debug("Created customer " + customer.getId());
  logger.debug("Out createCustomer");
  return Response.created(URI.create("/customers/"
    + customer.getId())).build();
 }

Der Kunde macht einen Aufruf (relevanter Teil)

  URL postUrl = new URL("http://localhost:8080/ShoppingApplication/rest/customers");
  HttpURLConnection connection =
  (HttpURLConnection) postUrl.openConnection();
  connection.setDoOutput(true);
  connection.setInstanceFollowRedirects(false);
  connection.setRequestMethod("POST");
  connection.setRequestProperty("Content-Type", "application/xml");
  OutputStream os = connection.getOutputStream();
  os.write(newCustomer.getBytes());
  os.flush();

Hier ist meine web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>My Shop</display-name>
    <servlet>
        <servlet-name>MyShopping</servlet-name>
        <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.restfully.shop.services.ShoppingApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyShopping</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

Wenn ich einen Anruf machen alles, was ich zurück haben ist riesig Ausnahme Hexe sagt eigentlich: INFO: WebApplicationException (404 - Not Found) aufgetreten während der Handler Kette Aufruf javax.ws.rs.WebApplicationException bei org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest (FindRootResourceHandler.java:60) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest (HeadMethodHandler.java:47) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest (OptionsMethodHandler.java:42) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest (SearchResultHandler.java:33) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:26) bei org.apache.wink.server.handlers.RequestHandlersChain.handle (RequestHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.handlers.AbstractHandlersChain.run (AbstractHandlersChain.java:43) bei org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier (RequestProcessor.java:136) bei org.apache.wink.server.internal.RequestProcessor.handleRequest (RequestProcessor.java:117) bei org.apache.wink.server.internal.servlet.RestServlet.service (RestServlet.java:102) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:722) bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:304) bei org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) bei org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:240) bei org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:203) bei org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:164) bei org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:108) bei org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:558) bei org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) bei org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:379) bei org.apache.coyote.http11.Http11AprProcessor.process (Http11AprProcessor.java:281) bei org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process (Http11AprProtocol.java:357) bei org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run (AprEndpoint.java:1671) bei java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (Unknown Source) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (Unknown Source) bei java.lang.Thread.run (Unknown Source) 12. Januar 2011 947: 35 Uhr org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate vonString SCHWERES: Falsches Mediatype-Format für Media: "; q = 0,2" 12. Januar 2011 09.47.35 org.apache.wink.server.internal.RequestProcessor handle SCHWERE: Unbehandelte Ausnahme java.lang.IllegalArgumentException: Falsches Mediatype-Format für Media: "; q = 0,2" bei org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:67) bei org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:32) bei javax.ws.rs.core.MediaType.valueOf (MediaType.java:119) bei org.apache.wink.common.internal.providers.header.AcceptHeaderDelegate.fromString (AcceptHeaderDelegate.java:47) bei org.apache.wink.common.internal.providers.header.AcceptHeaderDelegate.fromString (AcceptHeaderDelegate.java:32) bei org.apache.wink.common.internal.http.Accept.valueOf (Accept.java:139) bei org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptHeader (HttpHeadersImpl.java:115) bei org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptableMediaTypes (HttpHeadersImpl.java:84) bei org.apache.wink.server.internal.handlers.PopulateResponseMediaTypeHandler.handleResponse (PopulateResponseMediaTypeHandler.java:82) bei org.apache.wink.server.handlers.AbstractHandler.handleResponse (AbstractHandler.java:38) bei org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:26) bei org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.handlers.AbstractHandler.handleResponse (AbstractHandler.java:39) bei org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:26) bei org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.handlers.AbstractHandler.handleResponse (AbstractHandler.java:39) bei org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:26) bei org.apache.wink.server.handlers.ResponseHandlersChain.handle (ResponseHandlersChain.java:22) bei org.apache.wink.server.handlers.AbstractHandlersChain.doChain (AbstractHandlersChain.java:55) bei org.apache.wink.server.handlers.AbstractHandlersChain.run (AbstractHandlersChain.java:43) bei org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier (RequestProcessor.java:145) bei org.apache.wink.server.internal.RequestProcessor.handleRequest (RequestProcessor.java:117) bei org.apache.wink.server.internal.servlet.RestServlet.service (RestServlet.java:102) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:722) bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:304) bei org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) bei org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:240) bei org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:203) bei org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:164) bei org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:108) bei org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:558) bei org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) bei org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:379) bei org.apache.coyote.http11.Http11AprProcessor.process (Http11AprProcessor.java:281) bei org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process (Http11AprProtocol.java:357) bei org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run (AprEndpoint.java:1671) bei java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (Unknown Source) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (Unknown Source) bei java.lang.Thread.run (Unknown Source) Verursacht durch: java.lang.ArrayIndexOutOfBoundsException: 1 bei org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:54) ... 40 mehr

War es hilfreich?

Lösung

Als ich in Ihrem Client-Code zu sehen, kommentiert Sie den Inhaltstyp aus.
Warum? Was Inhaltstyp tun Sie senden?
Auf jeden Fall sollte richtiger Medientyp */*;q=0.2

sein

Btw, welche Version von Wink benutzen Sie? Ich denke, die neueste Version mehr verzeihlich über Medientypen Fehler ist.

Andere Tipps

Dieser Fehler wird durch die JAR-Datei verursacht conflict.I gelöscht jetty.jar, Steg-util.jar und auch gelöscht jsr305.jar, das REST-API nur gut funktionieren. Hoffe, das Ihnen helfen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top