我想运行一个调用web服务的java应用程序。netbeans端的一切都很好,但当我运行生成的.jar时失败了。可能是什么问题?如何检查错误指向的内容类型?
错误显示:"严重:SAAJ0537:无效的内容类型。可能是错误消息,而不是SOAP消息。com.sun.xml.messaging.saaj.MessageImpl identityContentType">
编辑我意识到这个问题可能是由我使用的web服务使用自定义数据类型这一事实引起的,但我不知道该从哪里查找。请帮助
您的问题缺少有助于识别问题的详细信息(例如,您使用的web容器、一些源代码等(,但我遇到并解决了同样的问题。我将Tomcat与Eclipse一起使用,很明显,出现问题的原因是,Tomcat找不到一些JAR,即使我在构建路径中指定了它们。解决方案是将JAR放在Tomcat的实际lib目录中,而不是放在某个特定于项目的位置。(参见log4j的相同情况。(
实际情况是,这个缺失的JAR会导致servlet在调用时产生内部服务器错误。Tomcat生成一个类型为"text/html"的错误页面,并将其发送回客户端。所以,客户端读取的是"text/html",而不是预期的"text/xml"。
对于测试,本SOAP教程由于jaxm-api.jar
而产生指定的错误,但可以使用我上面描述的解决方案进行修复。我已经用Tomcat7验证了这一点。
如何检查错误指向的内容类型?
如果没有一些代码,回答起来有点困难。但是,如果您使用的是javax.xml.soap.SOAPPart
,它有一些方法可以检查SOAP事务的头。检查javadocs。遗憾的是,它没有覆盖toString()
。但就我个人而言,我并没有通过Java调试方法得出这个答案,而是通过查看TCP转储得出的。