2013-09-25 29 views
2

的屬性我有一個WSDL文件,很多的XSD文件,JXB約束力的文件。我使用Apache CXF cxf-codegen-plugin創建了一個Web服務客戶端。創建Java類時沒有任何錯誤。但是,當我嘗試調用任何的生成的方法,我得到一個異常:問題調用Web服務 - javax.xml.ws.WebServiceException和類沒有名字

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

謝謝你的任何建議。

回答

8

看起來像是在Oracle的JAX-WS實現中遇到了一個錯誤。如果添加:

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

要依賴CXF的JAX-WS實現,它似乎工作正常。我也嘗試使用wsimport命令生成代碼,並得到相同的錯誤,以便生成的代碼看起來不錯。

+0

謝謝Daniel,在添加了依賴關係之後,我可以成功地調用webservice方法。然而,在嘗試將簡單的JAXRS應用程序部署到glassfish之後出現了另一個異常,我創建了新的問題,如果您感興趣,可以在此處觀看它http://stackoverflow.com/questions/19045664/how-to-deploy-apache-cxf -webservice-to-glassfish –

+0

@Daniel Kulp有誰知道錯誤究竟是什麼?爲什麼它沒有被修復:( –

0

我面臨這個問題,並發現它的發生是由於在生成的Java類編碼問題,有趣的是,它拋出相同的異常。 Encoding Error Screenshot 您可以使用wsimport生成java類,併爲此問題檢查java類。