2011-01-12 8 views
1

POSTメソッドを使用して快適なWeb​​サービスを実行しようとしています。ここに私のインターフェイスの関連する部分である:restful call MediaTypeの間違ったMediaTypeフォーマット: "*; q = .2"

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

実装:クライアントが行う

// 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(); 
} 

ここコール(関連部分)

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(); 

は私の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> 

私がすべて私が戻ってきたすべての巨大な例外魔女は実際には言う: 情報:WebApplicationException(404 - 見つかりません)ハンドラチェーンの呼び出し中に発生しました javax.ws.rs.WebApplicationException at org.apache.wink.server.internal.handlers org.apache.wink.server.handlers.RequestHandlersChain.handleでorg.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) で.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:60) (RequestHandlersChain .java:22) at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:55) at org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest(HeadMethodHandler.java:47) ) at org.apache.wink.server.handlers.RequestHandl ersChain.handle(RequestHandlersChain.java:26) at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain。 java:55) at org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest(OptionsMethodHandler.java:42) at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) (org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) )。 wink.server.internal.handlers.SearchResultHandler.handleRequest(SearchResultHandler.java:33) at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) at org.apache.wink。 org.apache.wink.server.internal.RequestProcessorの のserver.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:55) (org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:43))。 org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:117)で をハンドルしています。(RestServlet。 java:102) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apac org.apache.catalina.core.StandardWrapperValve.invokeでorg.apache.catalina.core.ApplicationFilterChain.doFilterでhe.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) (ApplicationFilterChain.java:208) ( (StandardControllerValue.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org。 apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve。java:558) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) at org.apache。 coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:281) (org.apache.coyote.http11.Http11AprProtocol)$ Http11ConnectionHandler.process(Http11AprProtocol.java:357) at org.apache.tomcat.util.net.AprEndpoint $ (不明なソース) at SocketProcessor.run Thread.run(Unknown Source) 2011年1月12日9:47:35 AM org.apache.wink.common.internal.providers.heade r.MediaTypeHeaderDelegate fromString 重大度:MediaTypeの間違ったMediaType形式: "; q = .2 " Jan 12、2011 9:47:35 AM org.apache.wink.server.internal.RequestProcessor handleRequest 重大度:未処理の例外 java.lang.IllegalArgumentException:MediaTypeのWrong MediaTypeフォーマット:"; q = .2 " at org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString(MediaTypeHeaderDelegate.java:67) at org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromString (MediaTypeHeaderDelegate.java:32) at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119) at org.apache.wink.common.internal.providers.header.AcceptHeaderDelegate.fromString(AcceptHeaderDelegate.java :47) at org.apache.wink.common.internal.providers.header.AcceptHeaderDelegate.fromString(AcceptHeaderDelegate.java:32) at org.apache.wink.common.internal.http.Accept.valueOf(Accept.java :139) at org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptHeader(HttpHeadersImpl.java:115) at org.apache.wink.server.inte org.apache.wink.server.handlersでorg.apache.wink.server.internal.handlers.PopulateResponseMediaTypeHandler.handleResponse(PopulateResponseMediaTypeHandler.java:82) でrnal.contexts.HttpHeadersImpl.getAcceptableMediaTypes(HttpHeadersImpl.java:84) 。 AbstractHandler.handleResponse(AbstractHandler.java:38) at org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:26) at org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.handle。 java:22) at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:55) at org.apache.wink.server.handlers.AbstractHandler.handleResponse(AbstractHandler.java:39) at org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.ja va:26) at org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:22) at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:55) at org.apache.wink.server.handlers.AbstractHandler.handleResponse(AbstractHandler.java:39) at org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:26) at org.apache.wink。 server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:22) at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:55) at org.apache.wink.server.handlers.AbstractHandlersChain。実行(AbstractHandlersChain.java:43) at org.apache.wink.server.internal.RequestProcessor.handleRequestWith org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:117)のでのOutFaultBarrier(RequestProcessor.java:145) のorg.apache.wink.server.internal.servlet.RestServlet.service(RestServlet。 java:102) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain。org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache。 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) (org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve。))でのorg.apache.catalina.core.StandardHostValve.invokeでスタンダードコンテキストの。 java:108) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache。 catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) at org.apache.coyote.ht tp11.Http11AprProcessor.process(Http11AprProcessor.java:281) (org.apache.coyote.http11.Http11AprProtocol)$ Http11ConnectionHandler.process(Http11AprProtocol.java:357) at org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor。 (AprEndpoint.java:1671) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(不明なソース) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(不明なソース) at java.lang.Thread。実行(不明なソース)によって引き起こさ :java.lang.ArrayIndexOutOfBoundsException:1 org.apache.wink.common.internal.providers.header.MediaTypeHeaderDelegate.fromStringで (MediaTypeHeaderDelegate.java:54) ... 40もっと

+0

例外はどこですか? – Anders

+0

申し訳ありませんが、投稿されなかった理由はわかりません。私はもう一度それを追加しました。 – BigWonder

+0

apache-winkタグを追加してください – Tarlog

答えて

1

クライアントコードに表示されるように、コンテンツタイプをコメントアウトしました。
なぜですか?どのようなコンテンツタイプを送信しますか?
とにかく正しいメディアタイプは*/*;q=0.2

です。Btw、どのバージョンのWinkを使用しますか?私は、最新のバージョンがメディアタイプのミスについてもっと容赦していると思う。

+0

コメントを解除しますが、同じエラーがあります。 Winkのバージョンは0.1 – BigWonder

+0

です。まず、AFAIK Wink 1.1.2が既にリリースされています。だからアップグレードする方がいいです。これは私には非常に奇妙に聞こえる。 httpプロキシを置いて結果を投稿できますか? – Tarlog

+0

皆さん、ご協力いただきありがとうございます。それは今働いている。問題は、古いWinkのバージョンにありました。私が1.1.2にそれをアップレートするとすぐに、それは動作します。もう一度感謝しています。 – BigWonder

0

このエラーはjarファイルconflict.Iによってjetty.jar、jetty-util.jarが削除され、jsr305.jarも削除されたため、REST APIはうまく動作します。 これがあなたを助けてくれることを願っています。

関連する問題