1

我有一个使用 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 的信息,看看我是否能找到答案。

任何建议都将受到欢迎。谢谢你的时间。

4

0 回答 0