Tomcat 7.0.25 と JibxWS を使用して、opentravel.org OTA 指定の XML メッセージに関連する SOAP メッセージを受け入れる Web サービスがあります。
SOAPUI を使用してテストしたところ、すべて正常に動作しましたが、実際のクライアントがサービスの使用を開始しようとすると、接続時に次のエラーが発生します。
May 17, 2012 2:05:55 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [siteminder] in context with path [/webservice] threw exception [Error parsing media type in accept-type from request: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2] with root cause
java.text.ParseException: Unable to parse mediaType ' *; q=.2'
at org.jibx.ws.codec.MediaType.<init>(MediaType.java:130)
at org.jibx.ws.codec.CodecDirectory.parseAcceptString(CodecDirectory.java:244)
at org.jibx.ws.codec.CodecDirectory.getAcceptableMediaType(CodecDirectory.java:217)
at org.jibx.ws.http.servlet.WsServletDelegate.getAcceptableMediaType(WsServletDelegate.java:217)
at org.jibx.ws.http.servlet.WsServletDelegate.doPost(WsServletDelegate.java:121)
at org.jibx.ws.http.servlet.WsServlet.doPost(WsServlet.java:76)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1805)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
したがって、リクエストの http ヘッダーには、次の値を持つ Accept が含まれています。
text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
これを SOAPUI に追加すると、エラーを再現できます。「, *; q=.2, / ; q=.2」ビットがなくても問題なく動作します。
そのため、accepts ヘッダーの ", *; q=.2, / ; q=.2" ビットを受け入れる方法を探していました。
", *; q=.2, / ; q=.2" は何に関係していますか? JibX WS がサポートしていないことがわかっている SOAP 1.2 と関係がありますか? クライアントは、Spring saaj13 実装で SOAP 1.1 を使用していると言っていますが。
これらのビットを追加して、処理できると言ったり、無視したりする構成ファイルがあるかもしれないと考えています。
プロパティ ファイルの jibxWS jar と、Tomcat サーバーの web.xml MIME タイプを調べました。次に、JibX WSServlet のソース コードを調べて、Spring saaj13 について詳しく調べて、見つけられるかどうかを確認します。答え。
どんな提案でも大歓迎です。御時間ありがとうございます。