【问题标题】:Problems calling webservice - javax.xml.ws.WebServiceException and class do not have a property of the name调用 web 服务的问题 - javax.xml.ws.WebServiceException 和类没有名称的属性
【发布时间】:2013-09-25 09:10:04
【问题描述】:

我有一个 wsdl 文件,很多 xsd 文件,jxb 绑定文件。我使用 Apache CXF cxf-codegen-plugin 创建了一个 Web 服务客户端。 Java 类的创建没有任何错误。但是当我尝试调用任何生成的方法时,我得到一个异常:

Exception in thread "main" javax.xml.ws.WebServiceException: class com.amadeus.xml.pnracc_11_1_1a.PNRReply do not have a property of the name {http://xml.amadeus.com/PNRACC_11_1_1A}PNR_Reply

我这样调用webservice方法(不用担心空值):

AmadeusWebServices aws = new AmadeusWebServices();
aws.getAmadeusWebServicesPort().fareMasterPricerCalendar(null, null);

堆栈跟踪:

Exception in thread "main" javax.xml.ws.WebServiceException: class com.amadeus.xml.pnracc_11_1_1a.PNRReply do not have a property of the name {http://xml.amadeus.com/PNRACC_11_1_1A}PNR_Reply
at com.sun.xml.internal.ws.client.sei.ValueSetter$AsyncBeanValueSetter.<init>(ValueSetter.java:165)
at com.sun.xml.internal.ws.client.sei.ValueSetterFactory$AsyncBeanValueSetterFactory.get(ValueSetterFactory.java:67)
at com.sun.xml.internal.ws.client.sei.SEIMethodHandler.buildResponseBuilder(SEIMethodHandler.java:163)
at com.sun.xml.internal.ws.client.sei.AsyncMethodHandler.<init>(AsyncMethodHandler.java:121)
at com.sun.xml.internal.ws.client.sei.PollingMethodHandler.<init>(PollingMethodHandler.java:39)
at com.sun.xml.internal.ws.client.sei.SEIStub.initMethodHandlers(SEIStub.java:99)
at com.sun.xml.internal.ws.client.sei.SEIStub.<init>(SEIStub.java:73)
at com.sun.xml.internal.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:590)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:330)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:294)
at javax.xml.ws.Service.getPort(Service.java:119)
at com.amadeus.xml.AmadeusWebServices.getAmadeusWebServicesPort(AmadeusWebServices.java:78)
at com.mycompany.test1.App.main(App.java:16)
Caused by: javax.xml.bind.JAXBException: {http://xml.amadeus.com/PNRACC_11_1_1A}PNR_Reply is not a valid property on class com.amadeus.xml.pnracc_11_1_1a.PNRReply
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:966)
at com.sun.xml.internal.ws.client.sei.ValueSetter$AsyncBeanValueSetter.<init>(ValueSetter.java:162)
... 13 more

我的环境:

java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-5)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
NetBeans IDE 7.3.1

我错过了什么吗?我只是想创建非常简单的 Web 服务客户端。 我已将示例项目与我正在使用的所有 wsdl 和 xsd 文件放在 GitHub

感谢您的任何建议。

【问题讨论】:

    标签: java web-services xsd wsdl cxf


    【解决方案1】:

    看起来您在 Oracle 的 JAX-WS 实现中遇到了一个错误。如果添加:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    

    到依赖使用CXF的JAX-WS实现,似乎工作正常。我还尝试使用 wsimport 命令生成代码并得到相同的错误,因此生成的代码看起来没问题。

    【讨论】:

    • 谢谢丹尼尔,添加依赖后我可以成功调用webservice方法。然而,在尝试将简单的 JAXRS 应用程序部署到 glassfish 后出现了另一个异常,我创建了新问题,如果您有兴趣,可以在这里观看stackoverflow.com/questions/19045664/…
    • @Daniel Kulp 有谁知道这个错误到底是什么?为什么它没有被修复:(
    • 对我来说,它是 JBoss Wildfly 实际上不支持的 HashMap 的返回类型。添加这个依赖解决了这个问题。谢谢!
    【解决方案2】:

    我遇到过这个问题,发现它是由于生成的 java 类中的编码问题而发生的,有趣的是它会抛出相同的异常。 您可以使用 wsimport -keep 生成 java 类并检查 java 类是否存在此问题。

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多