2012-09-13 5 views
5

के माध्यम से समस्या को इंजेक्शन देने में मुझे @Resource एनोटेशन के माध्यम से WebServiceContext इंजेक्शन देने में समस्याएं आ रही हैं। मैं JAXWS + वसंत संयोजन का उपयोग कर रहा हूं। यह मेरे द्वारा उपयोग किए जाने वाले कोड का एक टुकड़ा है।WebServiceContext @Resource एनोटेशन

@WebService 
public class AdminWSImpl { 

    @Resource 
    private WebServiceContext context; 

... 
} 

मेरे web.xml का हिस्सा:

... 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 


<listener> 
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> 
</listener> 


<servlet> 
    <description>JAX-WS endpoint of Admin Service</description> 
    <display-name>JAX-WS Admin servlet</display-name> 
    <servlet-name>AdminService</servlet-name> 
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 


<servlet> 
    <servlet-name>context</servlet-name> 
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>  
    <load-on-startup>2</load-on-startup> 
</servlet> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 

समस्या संदर्भ हमेशा शून्य है है! How to use @Resource WebServiceContext injection with Spring's @Transactional स्प्रिंग्स-लेनदेन के अनुसार मैंने संदर्भ के लिए सेटटर को परिभाषित किया है और सेटर पर @Resource एनोटेशन डाला है।

SEVERE: WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: Unable to create JAXBContext 
javax.xml.ws.WebServiceException: Unable to create JAXBContext 
    at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:171) 
    at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:99) 
    at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:250) 
    at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:343) 
    at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:205) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:513) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:257) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:151) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:563) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1399) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) 
    at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500) 
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:252) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:30) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:662) 
    Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
    javax.xml.ws.WebServiceContext is an interface, and JAXB can't handle interfaces. 
    this problem is related to the following location: 

किसी को भी किसी भी मदद प्रदान कर सकते हैं:

सेटर पर @Resource एनोटेशन डालने का नतीजा यह स्टैक ट्रेस है?

अग्रिम धन्यवाद!

+0

रिटर्न प्रकारों के लिए एक 'JAXBContext' और आपकी वेब सेवा के पैरामीटर के लिए बनाया जाना चाहिए। चूंकि 'WebServiceContext' प्रतीत होता है कि 'AdminWSImpl' पर' JAXBContext' बनाया जा रहा है। –

उत्तर

4

मुझे वह समाधान मिला जो अब काम करता है! मैंने वेबपॉइंट एनोटेशन को एंडपॉइंट इंटरफेस एट्रिब्यूट के साथ रखा है, और क्लास को एडमिन इंटरफेस लागू करता है जो wsimport द्वारा उत्पन्न होता है। मेरा web.xml प्रश्न में वर्णित जैसा ही रहता है!

@WebService(endpointInterface = "my.app.admin.Admin") 
    public class AdminWSImpl implements Admin{ 

    @Resource 
    private WebServiceContext wsContext; 

    public void setWsContext(WebServiceContext wsContext) { 
    this.wsContext = wsContext; 
} 
} 
+0

क्या आपको 'setWsContext' को एनोटेशन' @WebMethod (बहिष्कृत = सत्य) के साथ चिह्नित नहीं करना चाहिए? मेरे पास भी था .. –

+0

क्या आपके पास एसईआई (सर्विस एंडपॉइंट इंटरफे) परिभाषित है? मेरा मानना ​​है कि मेरे मामले में वेब सेवा के लिए अनुबंध एसईआई है, इसलिए एडमिन इंटरफ़ेस में परिभाषित केवल विधियों को डब्ल्यूएस विधियों के रूप में उजागर किया जाता है। तो मुझे लगता है कि @WebMethod (बहिष्कार = सत्य) की आवश्यकता नहीं है। –

संबंधित मुद्दे