所以,我用WSDL創建了一個Apache CXF的客戶端存根應用程序。這個過程相對簡單。我在SoapUI界面中完成了它。我提供了WSDL位置,告訴CXF生成客戶端存根並打好。然後,我將項目導入到Eclipse中,添加了Apache CXF庫,配置了一些安全選項,證書和其他東西。
我寫了一個主要的幾個測試調用我的web服務,並... 它的工作。Apache CXF如何生成類?
現在我的問題是,我不知道它爲什麼工作。更具體地說,當我在Eclipse中運行時,調試輸出清楚地表明有CXF類被調用。
INFO: Loaded configuration file cxf.xml.
和
org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
在我main()
我調用
MyServices ss = new MyServices(wsdlURL, SERVICE_NAME);
port = ss.getWSHttpBindingMyService();
但MyServices
類擴展javax.xml.ws.Service
而且也沒有什麼提示,以CXF。
wsdl2java還生成了一個MyService
接口和一個MyServiceImpl
類,該類位於相同的包中。它看起來是一個很好的候選人。在我的main()
我可以寫像port.someMethod(someRequest)
的東西。如果我按住Ctrl鍵並點擊someMethod
並按照實施方式進行操作,它實際上會將我帶到MyServiceImpl
類,但那裏只有虛擬代碼!
public Boolean someMethod(SomeRequest request) {
LOG.info("Executing operation");
System.out.println(request);
try {
Boolean _return = null;
return _return;
} catch (java.lang.Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
所以必須有一些配置,告訴運行時使用哪個實現。但我無法弄清楚它在哪裏或哪一個。
感謝
嗨,什麼我問的是,它是如何掛鉤生成的Java代碼與客戶端的CXF實現。 – TXV
您是否在代碼中創建任何客戶端實例?即org.apache.cxf.endpoint.Client client = org.apache.cxf.frontend.ClientProxy .getClient(port); –
是的,我是'客戶端客戶端= ClientProxy.getClient(服務);' – TXV