如何在CDI托管bean中注入jaxwrs @WebServiceClient?

时间:2016-04-08 12:04:29

标签: java soap dependency-injection jax-ws cdi

我正在使用JBoss EAP 6.3.2来部署SOAP Web服务。创建内联新对象时,Web服务已成功部署,但我无法将Web服务作为托管bean中的资源注入。

我有以下网络服务类:

服务端点接口

@WebService
public interface MyWebServiceSEI {

    @WebMethod
    public string createToken();

}

服务实施Bean

@WebService(endpointInterface="com.test.MyWebService")
public class MyWebServiceSIB implements MyWebServiceSEI {

    @WebMethod
    public string createToken() {
    ..
    ..
    }

}

生成的客户端存根

@WebServiceClient(name="MyWebServiceSIBService", targetNameSpace="http://test.com/", wsdlLocation="http://localhost:8080/MyWebServiceSIB?wsdl")
public class MyWebServiceSIBService {
    .
    .
}

我尝试通过CDI托管的@ApplicationScoped bean中的生产者注入SOAP Web服务客户端,如下所示:

制作人类

public class WebServiceProducer {
    @WebServiceRef
    @Produces
    @MyQualifier
    private MyWebServiceSIBService myWebServiceSIBService; 
}

Managed Bean中的INJECTION:这是失败的

@ApplicationScoped
class AppServiceImplBean {

    @Inject @MyQualifier
    MyWebServiceSIBService myWebServiceSIBService;

    public String retrieveToken() {
        myWebServiceSIBService.getMyWebServiceSIBPort(); // Null Pointer Exception
    }

}

在Managed Bean中创建new()服务:这是有效的

@ApplicationScoped
class AppServiceImplBean {                    

    public String retrieveToken() {
        MyWebServiceSIBService myWebServiceSIBService = new MyWebServiceSIBService();
        myWebServiceSIBService.getMyWebServiceSIBPort();  //This works perfectly!
        }

}

我需要知道是否还要做其他事情才能使注射成为可能。我正在跟踪错误跟踪。

: java.lang.IllegalStateException: JBAS011048: Failed to construct component instance
        at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:164) [jboss-as-ee-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:135) [jboss-as-ee-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:90) [jboss-as-ee-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.component.WebComponentInstantiator$1.<init>(WebComponentInstantiator.java:57) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.component.WebComponentInstantiator.getReference(WebComponentInstantiator.java:55) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebInjectionContainer.instantiate(WebInjectionContainer.java:101) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebInjectionContainer.newInstance(WebInjectionContainer.java:80) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebInjectionContainer.newInstance(WebInjectionContainer.java:74) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:410) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3225) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:3791) [jbossweb-7.4.9.Final-redhat-1.jar:7.4.9.Final-redhat-1]
        at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:161) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:59) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:94) [jboss-as-web-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_45]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
        at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
        at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: java.lang.RuntimeException: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
        at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:186) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:341) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:237) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.builtin.ee.EEResourceProducerField.create(EEResourceProducerField.java:146) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:68) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:626) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:692) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:136) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.util.Beans.injectBoundFields(Beans.java:796) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:805) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1$1.proceed(ManagedBean.java:165) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget$1.work(ManagedBean.java:161) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.ManagedBean$FixInjectionPoint.run(ManagedBean.java:135) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.inject(ManagedBean.java:157) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:297) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:68) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:626) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:692) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.as.weld.injection.InjectableField.inject(InjectableField.java:56) [jboss-as-weld-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.weld.injection.WeldEEInjection.inject(WeldEEInjection.java:81) [jboss-as-weld-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.as.weld.injection.WeldInjectionInterceptor.processInvocation(WeldInjectionInterceptor.java:54) [jboss-as-weld-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.as.ee.component.ComponentInstantiatorInterceptor.processInvocation(ComponentInstantiatorInterceptor.java:76) [jboss-as-ee-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:70) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1]
        at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:162) [jboss-as-ee-7.4.2.Final-redhat-2.jar:7.4.2.Final-redhat-2]
        ... 19 more
Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
        at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:151)
        at org.jboss.wsf.stack.cxf.client.ProviderImpl$JBossWSServiceImpl.<init>(ProviderImpl.java:552)
        at org.jboss.wsf.stack.cxf.client.ProviderImpl.createServiceDelegate(ProviderImpl.java:247)
        at javax.xml.ws.Service.<init>(Service.java:57) [jboss-jaxws-api_2.2_spec-2.0.2.Final-redhat-1.jar:2.0.2.Final-redhat-1]
        at com.jackson.myapp.ws.v1.client.MyWebServiceSIBService.<init>(MyWebServiceSIBService.java:45) [myapp-ws-client-1.1.2-SNAPSHOT.jar:]
        at com.jackson.myapp.ws.v1.client.MyWebServiceSIBService$Proxy$_$$_Weld$Proxy$.<init>(MyWebServiceSIBService$Proxy$_$$_Weld$Proxy$.java) [myapp-ws-client-1.1.2-SNAPSHOT.jar:]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_45]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_45]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_45]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [rt.jar:1.7.0_45]
        at java.lang.Class.newInstance(Class.java:374) [rt.jar:1.7.0_45]
        at org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:344) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:173) [weld-core-1.1.25.Final-redhat-2.jar:1.1.25.Final-redhat-2]
        ... 49 more
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
        at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
        at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
        at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
        ... 62 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'http://localhost:8080/MyWebServiceSIB?wsdl'.: java.io.FileNotFoundException: http://localhost:8080/MyWebServiceSIB?wsdl

        at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2198) [wsdl4j-1.6.2.jar:1.6]
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2390) [wsdl4j-1.6.2.jar:1.6]
        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2422) [wsdl4j-1.6.2.jar:1.6]
        at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:263)
        at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:206)
        at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
        ... 64 more
Caused by: java.io.FileNotFoundException: http://localhost:8080/MyWebServiceSIB?wsdl
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624) [rt.jar:1.7.0_45]
        at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:986)
        at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:143)
        at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:802)
        at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
        at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:230)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:285)
        at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2188) [wsdl4j-1.6.2.jar:1.6]
        ... 69 more

16:51:47,677 ERROR [org.apache.catalina.core] (ServerService Thread Pool -- 198) JBWEB001103: Error detected during context  start, will stop it
16:51:47,692 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 198) MSC000001: Failed to start service jboss.web.deployment.default-host./: org.jboss.msc.service.StartException in servi
ce jboss.web.deployment.default-host./: org.jboss.msc.service.StartException in anonymous service: JBAS018040: Failed to start context
        at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:97)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_45]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
        at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
        at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: org.jboss.msc.service.StartException in anonymous service: JBAS018040: Failed to start context
        at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:166)
        at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:59)
        at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:94)
        ... 6 more

16:51:48,082 INFO  [org.jboss.as.webservices] (MSC service thread 1-2) JBAS015540: Stopping service jboss.ws.endpoint."myapp-web-2.1.1-SNAPSHOT.war".MyWebServiceSIB
16:51:48,098 INFO  [org.jboss.weld.deployer] (MSC service thread 1-7) JBAS016009: Stopping weld service for deployment myapp-web-2.1.1-SNAPSHOT.war
16:51:48,160 INFO  [org.jboss.as.webservices] (MSC service thread 1-8) JBAS015540: Stopping service jboss.ws.port-component-link
16:51:48,940 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment my-web-2.1.1-SNAPSHOT.war (runtime-name: my-web-2.1.1-SNAPSHOT.war) in 863ms
16:51:48,972 INFO  [org.jboss.as.controller] (HttpManagementService-threads - 19) JBAS014774: Service status report

0 个答案:

没有答案