使用JibXWS 1.2.3时,SOAP消息“无法解析mediaType'*;q=.2'”中的Http头出错

使用JibXWS 1.2.3时,SOAP消息“无法解析mediaType'*;q=.2'”中的Http头出错,soap,jibx,Soap,Jibx,我有一个web服务,它使用Tomcat 7.0.25和JibxWS接受与opentravel.org OTA指定的XML消息相关的SOAP消息 我已经使用SOAPUI进行了测试,一切正常,但是现在一个真正的客户希望开始使用该服务,当他们连接时,我发现这个错误: May 17, 2012 2:05:55 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [sit

我有一个web服务,它使用Tomcat 7.0.25和JibxWS接受与opentravel.org OTA指定的XML消息相关的SOAP消息

我已经使用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)
当我把它添加到我的SOAPUI中时,我可以重现错误,它可以很好地工作,没有,*;q=.2,/;q=.2位

所以我一直在寻找一种能够接受的方式,*;q=.2,/;q=接受头的0.2位

什么是,*;q=.2,/;q=.2与什么有关?这与我知道JibX WS不支持的SOAP 1.2有关吗?尽管客户机说他们正在使用SOAP1.1和SpringSAAJ13实现

我想可能有一些配置文件,我只是添加了这些位,说它们可以处理,或者忽略它们

我在jibxWS jar中查看了属性文件和Tomcat服务器web.xml mime类型,现在我将尝试查看JibX WSServlet的源代码,并进一步研究spring saaj13,看看是否能找到答案


欢迎提出任何建议。谢谢您的时间。

我刚刚发现这表明客户端发送了一个无效的头,*;q=.2,应该有一个/在其中,但是有没有一种方法可以让我忽略它,因为我不确定我是否会让客户端更改它们的头。我想我可以添加一个过滤器来去掉头,或者在它到达WS-servlet之前更正它。
text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2