2011-09-16 61 views
5

我們有一個描述Web服務的中心WSDL文件。我們使用CXF來生成客戶端代碼,但是這個代碼似乎被綁定到1個端點。我如何創建使用WSDL的CXF客戶端,但我可以在哪裏指定端點?是否有辦法將端點更改爲實現相同WSD的URL:?如何使用動態端點創建CXF web服務客戶端?

回答

9

如果other服務實現相同的WSDL,當您創建MyClientService對象,你可以通過URL來新服務的WSDL來構造權,其美國將它。大多數服務將使用可能「正常工作」的wsdl來公開它的wsdl。

或者,您可以通過覆蓋端點URL:

((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_URL, "http://my.service.url.com/...") 

其中proxyMyClientService對象。

+0

「其他」服務實現確實實現了相同的wsdl。我檢查了生成的代碼,我有一個工廠對象,它給了我一個對象。我看不到如何指定網址sofar ..任何提示呢? – Marco

1

可以使用JaxWsProxyFactoryBean用於動態調用服務

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 

factory.setServiceClass(ChangeStudentDetails.class); 
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent"); 
+1

你忘了叫'factory.create()'嗎? – Zarathustra

4

在CXF 2.6.1

Client client = ClientProxy.getClient(port); 
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ; 
0

javax.xml.ws.WebServiceException工作:找不到WSDL:綁定web方法XXXX的操作信息。
在org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:125)
在com.sun.proxy。$ Proxy82.getUser(來源不明)

如果發生錯誤,然後添加註釋Webservice到已經在服務端開發的客戶端接口。

我遇到了這個問題,我用CXF配置了Spring。我已經開發了服務並從客戶端調用它。

希望這會有所幫助。