2012-10-09 63 views
4

我想消費一個使用CXF進行安全保護的web服務。 (HTTP://主機:端口/測試/ WS WSDL)。以下是我的代碼。但它給出了下面給出的例外。在SoapUI中,我測試了webservice。在「aut」標籤下,我已經在SoapUI中提供了證書。它正在工作。 你能告訴我如何使用CXF來使用安全的webservice嗎?使用CXF預先驗證的Web服務消耗使用CXF

ProcessService proxy = new ProcessService(wsdlURL, SERVICE_NAME);  
try {  
    IProcessService port = proxy.getBinding1IProcessService(); 
    Client client = ClientProxy.getClient(port); 
    HTTPConduit http = (HTTPConduit) client.getConduit(); 
    http.getAuthorization().setUserName("username"); 
    http.getAuthorization().setPassword("password"); 


    System.out.println("Result=" + port.startReturnDDCStatusForAC("")); 
} catch (Exception e) { 
e.printStackTrace(); 
} 

例外:

Okt 09, 2012 7:23:50 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL 
    INFO: Creating Service {http://tempuri.org/}ProcessService from WSDL: http://sn000333.tauri.ch:61527/WS/Process?wsdl 
    Okt 09, 2012 7:24:02 PM org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl handleNoRegisteredBuilder 
    WARNING: No assertion builder for type {http://schemas.microsoft.com/ws/06/2004/policy/http}BasicAuthentication registered. 
    org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives can be satisfied. 
     at org.apache.cxf.ws.policy.EndpointPolicyImpl.chooseAlternative(EndpointPolicyImpl.java:165) 
     at org.apache.cxf.ws.policy.EndpointPolicyImpl.finalizeConfig(EndpointPolicyImpl.java:145) 
     at org.apache.cxf.ws.policy.EndpointPolicyImpl.initialize(EndpointPolicyImpl.java:141) 
     at org.apache.cxf.ws.policy.PolicyEngineImpl.createEndpointPolicyInfo(PolicyEngineImpl.java:549) 
     at org.apache.cxf.ws.policy.PolicyEngineImpl.getEndpointPolicy(PolicyEngineImpl.java:295) 
     at org.apache.cxf.ws.policy.PolicyEngineImpl.getClientEndpointPolicy(PolicyEngineImpl.java:278) 
     at org.apache.cxf.ws.policy.PolicyDataEngineImpl.getClientEndpointPolicy(PolicyDataEngineImpl.java:61) 
     at org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(HTTPConduit.java:318) 
     at org.apache.cxf.transport.http.HTTPConduit.<init>(HTTPConduit.java:303) 
     at org.apache.cxf.transport.http.HTTPTransportFactory.getConduit(HTTPTransportFactory.java:250) 
     at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:228) 
     at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:235) 
     at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:103) 
     at org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(UpfrontConduitSelector.java:77) 
     at org.apache.cxf.endpoint.ClientImpl.getConduit(ClientImpl.java:842) 
     at com.test.TestWS.main(TestWS.java:66) 

SOAPUI測試:

在AUT標籤中,我已經給下面deatils和其工作正常。 授權類型:搶先 用戶名:用戶名密碼 :密碼

回答