2011-09-16 37 views
5

Chúng tôi có tệp WSDL trung tâm mô tả dịch vụ web. Chúng tôi sử dụng CXF để tạo mã máy khách, nhưng mã này dường như bị ràng buộc với 1 điểm cuối. Làm thế nào tôi có thể tạo một máy khách CXF sử dụng WSDL, nhưng tôi có thể chỉ định điểm cuối? Có cách nào để thay đổi điểm cuối thành URL thực hiện cùng một WSD không?Làm thế nào để tạo một máy khách web dịch vụ CXF với điểm cuối động?

Trả lời

9

Nếu dịch vụ other triển khai cùng một WSDL, khi bạn tạo đối tượng MyClientService, bạn có thể chuyển URL đó đến quyền WSDL của dịch vụ mới tới hàm tạo và nó sẽ sử dụng nó. Hầu hết các dịch vụ sẽ hiển thị wsdl của nó trên? Wsdl để sử dụng có thể "chỉ hoạt động".

Ngoài ra, bạn có thể ghi đè URL endpoint qua:

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

nơi proxy là đối tượng MyClientService.

+0

Triển khai dịch vụ "khác" thực sự thực hiện cùng một wsdl. Tôi đã kiểm tra mã được tạo ra và tôi có một đối tượng nhà máy mang lại cho tôi một đối tượng. tôi thấy không có cách nào về cách xác định ghế sofa url .. bất kỳ gợi ý về điều đó? – Marco

1

bạn có thể sử dụng JaxWsProxyFactoryBean cho động gọi một dịch vụ

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 

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

bạn không quên gọi 'factory.create()'? – Zarathustra

4

Làm việc trong CXF 2.6.1

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

javax.xml.ws.WebServiceException: Không thể tìm wsdl: thông tin hoạt động ràng buộc cho phương pháp web XXXX.
tại org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:125)
tại com.sun.proxy. $ Proxy82.getUser (Unknown Source)

Nếu lỗi này xảy ra sau đó thêm Chú thích Webservice cho giao diện phía máy khách của bạn đã được phát triển ở phía dịch vụ.

Tôi gặp sự cố này, tôi đã định cấu hình Spring with CXF. Tôi đã phát triển dịch vụ và gọi nó từ khách hàng.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan