【发布时间】:2017-10-24 14:00:06
【问题描述】:
当调用 JAXWS Java 消费者存根构造函数时,我收到以下异常。当我尝试通过。 SOAPUI 一切正常并且能够得到正确的响应。它是多个应用程序服务器(Websphere 7.x 集群)设置的 Web 服务器。消费者代码看起来不错。提供程序代码很好,因为它在 SOAPUI 中工作。 Web 服务器存在一些问题,Web 服务器可能会以 HTML 而不是 XML 响应。通过 Java 使用者尝试时,App Server 未收到请求,并且没有日志。我们在没有设置 Web 服务器的本地应用程序服务器中进行了测试,它可以工作。不知道问题出在哪里?有人可以帮忙吗?我正在使用 WebSphere 附带的 Axis2 来托管 Web 服务。 Web Sphere 读取实现类中的注解来部署 Web 服务。自动生成 WSDL。 WSDL 位置我没有在实现文件中指定,如果它指定不起作用。我没有提供配置文件(web.xml 等)。它不是 HTTPS 网络服务。我可以远程登录到 Web 服务服务器并通过远程登录获取 WSDL。
javax.xml.ws.WebServiceException: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'http://ip:port/AppName/ServiceName'.: (http://ip:port/AppName/ServiceName%27.:) org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:175)
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)
at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:128)
at org.apache.axis2.jaxws.util.WSDL4JWrapper.loadDefinition(WSDL4JWrapper.java:754)
at org.apache.axis2.jaxws.util.WSDL4JWrapper.getDefinition(WSDL4JWrapper.java:670)
at org.apache.axis2.jaxws.util.WSDL4JWrapper.commonPartsURLConstructor(WSDL4JWrapper.java:224)
at org.apache.axis2.jaxws.util.WSDL4JWrapper.<init>(WSDL4JWrapper.java:156)
at org.apache.axis2.jaxws.description.impl.ServiceDescriptionImpl.setupWsdlDefinition(ServiceDescriptionImpl.java:1191)
at org.apache.axis2.jaxws.description.impl.ServiceDescriptionImpl.<init>(ServiceDescriptionImpl.java:245)
at org.apache.axis2.jaxws.description.impl.ServiceDescriptionImpl.<init>(ServiceDescriptionImpl.java:168)
at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:142)
at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:79)
at org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:76)
at org.apache.axis2.jaxws.spi.ServiceDelegate.<init>(ServiceDelegate.java:212)
at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:71)
at javax.xml.ws.Service.<init>(Service.java:67)
at somepackage.servicename.<init>(servicename.java:42)...more are here hidden to maintain confidential
Caused by:
javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'http://ip:port/AppName/ServiceName'.: (http://ip:port/AppName/ServiceName%27.:) org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2315)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2390)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2356)
at org.apache.axis2.jaxws.util.WSDL4JWrapper$13.run(WSDL4JWrapper.java:745)
at org.apache.axis2.java.security.AccessController.doPrivileged(AccessController.java:132)
at org.apache.axis2.jaxws.util.WSDL4JWrapper.loadDefinition(WSDL4JWrapper.java:742)
... 70 more
Caused by:
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2305)
... 75 more </pre>
【问题讨论】:
-
SOAP 服务是在 WebSphere 下运行,还是在客户端下运行,还是两者兼而有之?
-
SOAP 服务在 WebSphere Provider 端运行。消费者和提供者在单独的 WebSphere 中运行。消费者 WebSphere 是 8.x,而提供者是 7.x。我后来检查了它是应用服务器到应用服务器的交互。不是应用服务器到 Web 服务器。这是 UAT 环境。我从桌面测试到应用服务器 7.x 的那个工作正常。
-
正如布鲁斯所说,将 WSDL 和 xsd 放在客户端有效,但不确定是否是好的方法。如果我们从服务器动态获取 WSDL 和 xsd 会更好。查看他的 cmets 了解更多详情
-
消费者端没有运行肥皂服务
-
您使用的 WSDL URL 是什么?它会重定向到其他东西吗?您可以粘贴引用它的客户端代理代码吗?很高兴您有解决方法,但是,像您一样,我希望尽量减少此类事情的手动活动,并且我希望了解为什么原来的方法不是'不工作。
标签: web-services websphere jax-ws