tags:

views:

385

answers:

2

I created a Webservice client and I am receiving the following error when the webservice is being created. I wasw ondering if I am missing something on this error:

Error running SQL module: org.apache.cxf.service.factory.ServiceConstructionException: Could not resolve a binding for null javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Could not resolve a binding for null at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:298) at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:291) at javax.xml.ws.Service.getPort(Service.java:44) at net.sf.gateway.client.base.sql.SQLClientBase.setSecurityHeaderTokens(SQLClientBase.java:244) at net.sf.gateway.client.base.sql.SQLClientBase.get(SQLClientBase.java:292) at net.sf.gateway.client.module.sql.SQLModule.getBatch(SQLModule.java:149) at net.sf.gateway.client.module.sql.SQLModule.getAndProcessSQL(SQLModule.java:110) at net.sf.gateway.client.module.sql.SQLModule.run(SQLModule.java:280) at net.sf.gateway.client.GatewayClient.exec(GatewayClient.java:399) at net.sf.gateway.client.GatewayClient.run(GatewayClient.java:174) at net.sf.gateway.client.GatewayClient.main(GatewayClient.java:166) Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Could not resolve a binding for null at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createBindingInfo(AbstractWSDLBasedEndpointFactory.java:404) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:258) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:146) at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:51) at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:102) at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:115) at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:437) at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:296) ... 10 more Caused by: org.apache.cxf.BusException: No binding factory for namespace http://schemas.xmlsoap.org/soap/ registered. at org.apache.cxf.binding.BindingFactoryManagerImpl.getBindingFactory(BindingFactoryManagerImpl.java:91) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createBindingInfo(AbstractWSDLBasedEndpointFactory.java:394) ... 17 more

Here is the code:

ClassLoader cl = Thread.currentThread().getContextClassLoader();
        URL WSDL_LOCATION=null;
        if ( null == cl ) cl = SQLService.class.getClassLoader();
         WSDL_LOCATION = cl.getResource( "SQLServiceSoap.wsdl" );
QName SERVICE_NAME = new QName("https://myurl.org/services/myService?wsdl", "SQLService");
        Service service = Service.create(WSDL_LOCATION,SERVICE_NAME);
        SOAPport sqlService = service.getPort(SOAPport.class);
  Client client = org.apache.cxf.frontend.ClientProxy.getClient(sqlService);
  Endpoint cxfEndpoint = client.getEndpoint();
        Map<String, Object> outProps = new HashMap<String, Object>();
  outProps.put(WSHandlerConstants.ACTION,
    WSHandlerConstants.USERNAME_TOKEN);
  outProps.put(WSHandlerConstants.USER, soapUser);
  outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
  outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
    PasswordCallbackHandler.class.getName());
  outProps.put("password", soapPass);
  WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
  cxfEndpoint.getOutInterceptors().add(wssOut);

  String result = sqlService.ping("test");

This is where it dies: SOAPport sqlService = service.getPort(SOAPport.class);

A: 

It looks like you don't have the soap binding on the classpath. If using maven, do you have the cxf-rt-bindings-soap artifact as a dependency?

Daniel Kulp
cxf.xml was missing, that was the problem.
JohnC
A: 

cxf.xml was missing, that was the problem.

JohnC