我有一个使用 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" 位的情况下正常工作。
所以我一直在寻找一种能够接受接受标头的“,*;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 的信息,看看我是否能找到答案。
任何建议都将受到欢迎。谢谢你的时间。