- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在创建 Java 客户端并将其连接到正在运行的 Web 服务时遇到问题。
我使用以下代码:
Service myService = null;
URL wsdlLocation = new URL("http://myservice?wsdl");
QName serviceName = new QName(wsdlLocation, "MyService");
Service myService = new Service(wsdlLocation, serviceName);
使用以下命令创建服务类的位置:
wsimport -d gen -keep http://myservice?wsdl
我也尝试过使用 Apache cxf 2.4 的 wsdl2java 生成的客户端,但得到了相同的结果。
(我只为这篇文章更改了 WSDL 位置和服务类名称,在我使用原始代码的代码中。)
但是当我调用部署在应用程序服务器上的 Web 服务时,在使用 new Service() 命令创建服务时出现异常。但是:我已经用 SOAP UI 测试了 wsdl 位置,它工作得很好。此外,我已经使用 Soap UI 创建了一个模拟服务,我的 Java 客户端可以连接到它,调用它并取回结果。当我想调用在应用程序服务器上运行的网络服务时出现问题。
堆栈跟踪:
javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
at javax.xml.ws.Service.<init>(Service.java:76)
at MyService.<init>(MyService.java:42)
at mypackage.createService(AClass.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
... 12 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col,system-id]: [1,0,"http://myservice?wsdl"]
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:256)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
... 14 more
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col,system-id]: [1,0,"http://myservice?wsdl"]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:677)
at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2139)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2045)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1248)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1142)
at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1069)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:247)
... 16 more
有人可以帮帮我吗?
最佳答案
我遇到了这个错误,发现它似乎是由于使用返回 HTTP 302 重定向而不是直接返回 WSDL 的 URL。
我使用的 URL 格式为 /Service?wsdl
,它重定向到格式为 /Service/wsdl/Service.wsdl
的 URL。直接使用重定向目标 URL 后,一切正常。
关于Java Web 服务错误 : com. ctc.wstx.exc.WstxEOFException:prolog 中出现意外的 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18761597/
在 Wildfly 10 上运行的 Java 企业应用程序中,我不断检索相同的错误 'Could not restore timer from /opt/wildfly/standalone/data
我在创建 Java 客户端并将其连接到正在运行的 Web 服务时遇到问题。 我使用以下代码: Service myService = null; URL wsdlLocation = new URL
我是一名优秀的程序员,十分优秀!