tESBConsumer org.apache.cxf.ws.policy.PolicyException

Four Stars

tESBConsumer org.apache.cxf.ws.policy.PolicyException

I have a simple job that is set up to query a SOAP service and read in the results using the tESBConsumer component. (Screenshot below.) However, upon running the job, I get the following Java exception:

 

Exception in component tESBConsumer_1 (test_material_query)

org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives can be satisfied.

at org.apache.cxf.ws.policy.EndpointPolicyImpl.chooseAlternative(EndpointPolicyImpl.java:172)

at org.apache.cxf.ws.policy.EndpointPolicyImpl.finalizeConfig(EndpointPolicyImpl.java:146)

at org.apache.cxf.ws.policy.EndpointPolicyImpl.initialize(EndpointPolicyImpl.java:142)

at org.apache.cxf.ws.policy.PolicyEngineImpl.createEndpointPolicyInfo(PolicyEngineImpl.java:604)

at org.apache.cxf.ws.policy.PolicyEngineImpl.getEndpointPolicy(PolicyEngineImpl.java:316)

at org.apache.cxf.ws.policy.PolicyEngineImpl.getClientEndpointPolicy(PolicyEngineImpl.java:303)

at org.apache.cxf.ws.policy.PolicyDataEngineImpl.getClientEndpointPolicy(PolicyDataEngineImpl.java:61)

at org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(HTTPConduit.java:326)

at org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(HTTPConduit.java:346)

at org.apache.cxf.transport.http.HTTPConduit.getClient(HTTPConduit.java:894)

at org.apache.cxf.transport.http.HTTPConduit.configureConduitFromEndpointInfo(HTTPConduit.java:368)

at org.apache.cxf.transport.http.HTTPConduit.finalizeConfig(HTTPConduit.java:448)

at org.apache.cxf.transport.http.HTTPTransportFactory.getConduit(HTTPTransportFactory.java:249)

at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:226)

at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:233)

at org.apache.cxf.endpoint.AbstractConduitSelector.createConduit(AbstractConduitSelector.java:146)

at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:108)

at org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(UpfrontConduitSelector.java:77)

at org.apache.cxf.endpoint.ClientImpl.getConduit(ClientImpl.java:879)

at infohub.test_material_query_0_1.test_material_query$GenericConsumer.invoke(test_material_query.java:639)

at infohub.test_material_query_0_1.test_material_query.tFixedFlowInput_1Process(test_material_query.java:2035)

at infohub.test_material_query_0_1.test_material_query.runJobInTOS(test_material_query.java:2860)

at infohub.test_material_query_0_1.test_material_query.main(test_material_query.java:2709)

 

tos_esb_apache_error_20180707v1.jpg

I'm able to use tESBConsumer with SOAP services that do not use authentication, so I'm wondering if the SOAP service I am trying to call does not handle org.apache.cxf.ws.policy authentication correctly. Unfortunately, I do not have access to the log files of the service endpoint.

 

I'm using a local WSDL file in the tESBConsumer "WSDL: " settings in the pop-up menu (Screenshot below). I am using a local WSDL file because I cannot find an active WSDL URL to work with on the server side. System documentation is extremely opaque.

 

Talend_Open_Studio_for_ESB_-_tESBConsumer_-_tESBConsumer_1_and_Talend_Open_Studio_for_ESB__7_0_1_20180411_1414____InfoHub__Connection__Local_.jpg

 

Details of my environment:

OS X: 10.11.6 (15G21013)

Talend Open Studio for ESB: 7.0.1

Java: jdk1.8.0_101

 

Has anyone seen a similar error with tESBConsumer? Any insights are welcome.

 

Moderator

Re: tESBConsumer org.apache.cxf.ws.policy.PolicyException

Hello,

Have you tried to use twebservice component to see if it works? Are you using tESBConsumer with 'Use Authentication' and 'Username Token' as the option?

Best regards

Sabrina

 

--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
Four Stars

Re: tESBConsumer org.apache.cxf.ws.policy.PolicyException

Hello,

 

 

For the 'Use Authentication' I tried 'Username Token' as the option and still get the "

org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives can be satisfied" exception.

 

I tried the tWebService component (thank you for the suggestion) and I get the following error:

 

 

Exception in component tWebService_1 (test_material_query)
java.lang.IllegalStateException: Response message did not contain proper response data. Expected: {http://sap.com/xi/SAPGlobal20/Global}MaterialByElementsResponse_sync
	at org.apache.cxf.endpoint.ClientImpl.processResult(ClientImpl.java:664)
	at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:542)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:442)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:343)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:316)
	at org.talend.webservice.helper.ServiceInvokerHelper.invoke(ServiceInvokerHelper.java:199)
	at org.talend.webservice.helper.ServiceInvokerHelper.invoke(ServiceInvokerHelper.java:238)
	at infohub.test_material_query_0_1.test_material_query.tWebService_1Process(test_material_query.java:430)
	at infohub.test_material_query_0_1.test_material_query.runJobInTOS(test_material_query.java:705)
	at infohub.test_material_query_0_1.test_material_query.main(test_material_query.java:554)

The WSDL namespace I am referencing has a pointer to 

http://sap.com/xi/SAPGlobal20/Global which appears to not be online. I'm wondering if that is the root cause.