2010-06-09 21 views
8

Ho creato un client di servizio Web e sto ricevendo il seguente errore durante la creazione del servizio web. Mi chiedevo se mi manca qualcosa su questo errore:ServiceConstructionException durante la creazione di un client di servizio Web CXF

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 

Ecco il codice:

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"); 

Questo è dove si muore: SOAPport sqlService = service.getPort(SOAPport.class);

risposta

7

Sembra che non si dispone di il sapone che si lega al classpath. Se si utilizza Maven, si ha l'artefatto del sapone cxf-rt-binding-come dipendenza?

+2

cxf.xml mancava, quello era il problema. – JohnC

1

cxf.xml mancava, quello era il problema.

Problemi correlati