2014-11-05 62 views
0

好吧,我有我通過axis2java創建存根使用以下命令web方法WSDL:無法得到標準的SSL客戶端與Axis Web服務工作

wsdl2java -uri https://path/to/service?wsdl -p com.my.java.package 

它生成所有必需的存根,但我實際上很難使用它們。我有兩個網址都是HTTPS,但是其中一個網址使用了壘手信息加密。我已經能夠得到更加困難的消息加密的URL工作正常。

我初始化我的加密存根象如下:

ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("repository", null); 

NetWS_0Stub stub = new NetWS_0Stub(ctx, aEndPoint); 
ServiceClient client = stub._getServiceClient(); 

Options options = new Options(); 
options.setTo(new EndpointReference(aEndPoint)); 
options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, this.loadPolicy("repository/policy/HTTPS_Policy.xml")); 
client.setOptions(options); 
client.engageModule("rampart"); 

return stub; 

對於我的未加密(HTTPS ONLY)我已經嘗試的存根初始化以及以下的上述方法:

ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("repository", null); 

NetWS_0Stub stub = new NetWS_0Stub(ctx, aEndPoint); 
ServiceClient client = stub._getServiceClient(); 

Options options = new Options(); 
options.setTo(new EndpointReference(aEndPoint)); 
client.setOptions(options); 

普通的HTTPS存根無效。充其量我得到一個肥皂頭丟失異常。但是,我可以通過SOAPui使用這些Web方法。所以我知道URL/WSDL/web方法運行良好。我更熟悉wsimport而不是axis2 .... axis2似乎更難做到這麼簡單的事情。

我該如何設置調用非消息加密Web服務的存根?爲什麼axis2這麼痛苦呢?這只是一個問題,我沒有理解的東西。如果SOAPui可以立即生成Web請求/響應,那麼我覺得axis2工具應該能夠做到這一點,特別是因爲web方法是通過glassfish中的axis2創建和訪問的。我沒有設置任何密鑰庫/信任庫的SOAPui,它只是在我給它使用wsdl時才起作用。

如果有人需要特定的代碼示例,讓我知道我不確定什麼信息甚至可以幫助別人幫我。

回答

0

我找到了一個解決方案,並將分享任何其他不幸的人正在與axis2工作。

ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("repository", null); 

NetWS_0Stub stub = new NetWS_0Stub(ctx, aEndPoint); 
ServiceClient client = stub._getServiceClient(); 

Options options = new Options(); 
options.setTo(new EndpointReference(aEndPoint)); 
//Added chunking property: 
options.setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Boolean.FALSE); 
client.setOptions(options); 
//Engaged rampart module: 
client.engageModule("rampart"); 

return stub; 

以上是爲我工作的神奇組合。在其中添加壘模塊給了我一個分塊異常,並且在添加了關於分塊的屬性之後它就工作了。我不確定這個特定的Web服務是否連接到了需要上述配置的特殊設置,但是獲得完美組合非常令人沮喪。