我有一個應用程序,它使用CXF的Servlet傳輸和Jetty 6.1提供服務。此應用程序還需要使用外部服務。所有的服務都支持WS-Addressing規範(WS-RM在上面)。爲了使用外部服務,我從應用程序運行生成的服務客戶端。CXF:通過現有的Servlet傳輸提供解耦端點
問題是,當我爲客戶端提供解耦的端點(WS-RM需要此端點通過單獨的http連接接收傳入消息)時,CXF運行另一個Jetty服務器實例(儘管Servlet運輸(提供服務)和客戶(消耗一些外部服務)共享相同的總線)。我不需要兩個Jetty實例(並不是說它們不能在同一個HTTP端口上運行)。
有沒有一種方法可以使用現有的Jetty服務器和Servlet傳輸提供分離的端點?
到目前爲止,我能去耦端點這樣的:
Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
httpConduit.getClient().setDecoupledEndpoint(
"http://domain.com:port/services/dec_endpoints/TestDecEndpoint");
如果我提供了一個相對路徑(「/ dec_endpoints/TestDecEndpoint」,就像相對路徑是通過servlet來傳輸與提供服務的使用) ,HTTP管道沒有在SOAP消息頭中指定完整路徑,所以這也不起作用(服務器不能發送消息到/ dec_endpoints/TestDecEndpoint)。