2010-06-09 23 views
8

Tôi đã tạo ứng dụng khách dịch vụ web và tôi nhận được lỗi sau khi dịch vụ web đang được tạo. Tôi đã tự hỏi nếu tôi thiếu cái gì về lỗi này:ServiceConstructionXảy ra khi tạo ứng dụng khách dịch vụ 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 

Đây là mã:

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

Đây là nơi nó chết: SOAPport sqlService = service.getPort(SOAPport.class);

Trả lời

7

Dường như bạn không có xà phòng ràng buộc trên classpath. Nếu sử dụng maven, bạn có ciff-rt-bindings-soap artifact như một phụ thuộc không?

+2

cxf.xml bị thiếu, đó là vấn đề. – JohnC

1

cxf.xml bị thiếu, đó là vấn đề.

Các vấn đề liên quan