Back to the first post I think: you get a proxy and the proxy gets the injections properly but this is not your business instance.
Romain Manni-Bucau @rmannibucau | Blog | Old Blog | Github | LinkedIn 2017-11-27 11:32 GMT+01:00 COURTAULT Francois <[email protected]>: > Hello Romain, > > I have defined an annotation like below: > @Inherited > @InterceptorBinding > @Target({ElementType.METHOD, ElementType.TYPE}) > @Retention(RetentionPolicy.RUNTIME) > public @interface Logged { > > @Nonbinding > String logLevel() default "INFO"; > } > > Then, I have written a class like this: > @Logged > @Interceptor > public class LoggingInterceptor { > private Class<?> intercepted; > > @AroundInvoke > public Object logMethod(final InvocationContext ctx) throws Exception { > ..... > } > } > > In my POJO, webservice endpoint, I have: > @WebService(name = "MyManager", targetNamespace ="http://com.test/wsdl", > serviceName = "MyManagerService") > @Logged > public class MyManager implements IMyManager { > @Resource > private WebServiceContext wsc; //=>=> ALWAYS null on TomEE 7.0.4!!! > .... > } > > That's the test case I built which doesn't work on TomEE 7.0.4 but works, as > I have already mentioned, on Glassfish 4.1.2/5.0, Weblogic Server 12.2.1.3 > and Wildfly 10.0.1/11.0.0. > > Best Regards. > > -----Original Message----- > From: Romain Manni-Bucau [mailto:[email protected]] > Sent: lundi 27 novembre 2017 11:08 > To: [email protected] > Subject: [++SPAM++]: Re: : Re: : Re: : Re: Injecting WebserviceContext > returns null > > If there is no proxy for the instance this should work, did you ensure it is > not a cdi bean somehow or a @Dependent cdi bean? > > Romain Manni-Bucau > @rmannibucau | Blog | Old Blog | Github | LinkedIn > > > 2017-11-27 11:00 GMT+01:00 COURTAULT Francois > <[email protected]>: >> Hello Romain, >> >> Sorry to come back to you about this topic. >> But I think there is a real issue with CDI interceptor in TomEE 7.0.4. >> >> Let me explain, I have removed in the LoggingInterceptor annotated with >> @Logged @Interceptor, the code below >> @Inject >> @Intercepted >> private Bean<?> intercepted; >> >> And replace it by >> private Class<?> intercepted; >> >> Then, I revert back the update I have done (eg make the WS endpoint also an >> EJB), that is to say that my WS endpoint is now a pure POJO. >> And, in this one, I get the WebServiceContext with this code: >> @Resource >> private WebServiceContext wsc; >> >> I tested this on Wildfly 10.0.1/11.0.0, Glassfish 4.1.2/5.0 and >> Weblogic 12.2.1.3 (eg 3 different app servers with also different versions >> for some of them), and every time, wsc is not null This is not the case with >> TomEE 7.0.4. >> >> Best Regards. >> >> -----Original Message----- >> From: COURTAULT Francois >> Sent: vendredi 24 novembre 2017 15:43 >> To: [email protected] >> Subject: RE: : Re: : Re: : Re: Injecting WebserviceContext returns >> null >> >> Hello Romain, >> >> Answering to your question: no just un-deploy the previous version (only >> pojo) update the code in order, for the WS endpoint, to become a stateless >> EJB (just add @Stateless) and redeploy this new version and test it against >> TomEE, Glassfish 4.1.2 and Wildfly 10.1.0. >> >> That's it. >> >> Best Regards. >> >> -----Original Message----- >> From: Romain Manni-Bucau [mailto:[email protected]] >> Sent: vendredi 24 novembre 2017 15:34 >> To: [email protected] >> Subject: [++SPAM++]: Re: : Re: : Re: Injecting WebserviceContext >> returns null >> >> 2017-11-24 15:26 GMT+01:00 COURTAULT Francois >> <[email protected]>: >>> Hello Romain, >>> >>> I have found another workaround which seems to be more portable as it works >>> for TomEE and Wildfly as expected. >>> I updated the Webservice POJO to become also a stateless EJB. >> >> also? so you deploy it twice potentially with different settings? EJB >> integration should be more reliable yes since more mainstream and spec are >> more up to date with CDI. >> >>> >>> Having performed this update and deploy it in Glassfish 4.1.2, I had a >>> runtime issue: >>> org.jboss.weld.exceptions.IllegalArgumentException: WELD-001405: >>> Cannot inject [BackedAnnotatedField] @Inject @Intercepted private >>> com.gemalto.jaxws.LoggingInterceptor.intercepted in a class which isnt a >>> bean Strange because Wildfly is using WELD as well and it works. >>> >> >> yes but versions are likely different and the integration is not the same >> for sure. >> >>> BTW, I have subscribed to [email protected] but when I tried to send >>> an email I got: >>> A communication failure occurred during the delivery of this message. >>> Please try to resend the message later. If the problem continues, contact >>> your helpdesk. >>> The following organization rejected your message: lb01.groups.io. >>> >>> Anything I can do to make the sending to this mailing-list work ? Have you >>> any advice or tricks ? >> >> Not sure to be honest, JAX-WS is not the highest priority specs so not >> really sure what is the current state :s >> >>> >>> Best Regards. >>> >>> -----Original Message----- >>> From: Romain Manni-Bucau [mailto:[email protected]] >>> Sent: vendredi 24 novembre 2017 10:46 >>> To: [email protected] >>> Subject: [++SPAM++]: Re: : Re: Injecting WebserviceContext returns >>> null >>> >>> 2017-11-24 10:36 GMT+01:00 COURTAULT Francois >>> <[email protected]>: >>>> Hello Romain, >>>> >>>> I have tested my sample application on Glassfish 4.1.2 and on Wildfly >>>> 10.1.0 and I get the same behavior. >>>> >>>> But, I have found a workaround on TomEE 7.0.4. >>>> >>>> Using the @Logged annotation, instead of having: >>>> @Resource >>>> private WebServiceContext wsc; >>>> >>>> I updated with this: >>>> private WebServiceContext wsc; >>>> >>>> @Resource >>>> public void setServiceContext(WebServiceContext wsc) { >>>> this.wsc = wsc; >>>> } >>>> >>>> This workaround works for TomEE 7.0.4 but if I tried this solution on >>>> Glassfish 4.1.2, I can't deploy my application. The error message I get is: >>>> Caused by: 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 is funny it takes it as a jaxb class but setting the jaxb access >>> to NONE on the class should be a workaround >>> >>>> >>>> Using Wildfly 10.1.0, I was able to deploy my application but at runtime I >>>> got the following exception: >>>> Caused by: java.lang.IllegalStateException: WFLYEE0042: Failed to >>>> construct component instance ... >>>> Caused by: java.lang.reflect.InvocationTargetException >>>> ... >>>> Caused by: java.lang.NullPointerException >>>> at >>>> com.mycompany.jaxws.LoggingInterceptor.logMethod(LoggingInterceptor. >>>> j >>>> a >>>> va:32) >>>> >>>> The LoggingInterceptor looks like this: >>>> @Inject >>>> @Intercepted >>>> private Bean<?> intercepted; >>>> .... >>>> line 32 Logged loggedAnnotation = >>>> intercepted.getBeanClass().getAnnotation(Logged.class); >>>> >>>> So definitively, there is an issue with resource injection and CDI >>>> interceptor because I can't find a portable solution except if I use >>>> standard interceptor instead of CDI interceptor but, with this solution, >>>> we lose the facility to use annotation for interceptor. >>> >>> Did you try the lookup? I don't fully recall the jndi name but the resource >>> should be accessible through a jndi lookup in the invocation context. >>> >>>> >>>> How can I provide some feedback to Java EE spec members about this issue ? >>> >>> >>> fear we are in a migration state but entry point would be >>> https://javaee.github.io/metro-jax-ws/ >>> >>>> >>>> Best Regards. >>>> >>>> -----Original Message----- >>>> From: Romain Manni-Bucau [mailto:[email protected]] >>>> Sent: jeudi 23 novembre 2017 16:30 >>>> To: [email protected] >>>> Subject: [++SPAM++]: Re: Injecting WebserviceContext returns null >>>> >>>> 2017-11-23 16:25 GMT+01:00 COURTAULT Francois >>>> <[email protected]>: >>>>> Romain, >>>>> >>>>> My interceptor is linked to an annotation and is declared in the >>>>> beans.xml in order to work so I guess it is a cdi interceptor and, >>>>> according to what you have said, a new proxy is created and so the >>>>> injection is not done on the right proxy, right ? >>>>> But, in this case, is it a bug ? >>>> >>>> Hmm, point is the jaxws runtime has no real other good way to do the >>>> interception. A workaround can be to have a jaws @vetoed pojo webservice >>>> and inject your cdi bean to delegate the processing to it. >>>> >>>>> >>>>> The other solution is to use @Interceptor or @Interceptors annotations >>>>> but we lose the beauty of using an annotation for interceptor, right ? >>>> >>>> Would do the same I think. >>>> >>>>> >>>>> Best Regards. >>>>> >>>>> -----Original Message----- >>>>> From: Romain Manni-Bucau [mailto:[email protected]] >>>>> Sent: jeudi 23 novembre 2017 15:57 >>>>> To: [email protected] >>>>> Subject: Re: Injecting WebserviceContext returns null >>>>> >>>>> annotation = cdi interceptor? if so it leads to a proxy and the >>>>> injection happens on the wrong instance I think >>>>> >>>>> Romain Manni-Bucau >>>>> @rmannibucau | Blog | Old Blog | Github | LinkedIn >>>>> >>>>> >>>>> 2017-11-23 15:50 GMT+01:00 COURTAULT Francois >>>>> <[email protected]>: >>>>>> Hello Romain, >>>>>> >>>>>> I think I have found the issue. >>>>>> In fact, we used a custom annotation for a logging interceptor which >>>>>> targets METHOD and TYPE. >>>>>> >>>>>> If we remove this annotation on our WS endpoint (eg TYPE target) , then >>>>>> the injection is resolved. >>>>>> >>>>>> Do you know why we have this side effect ? Is it a bug ? >>>>>> I have a test case if you want. >>>>>> >>>>>> Best Regards. >>>>>> >>>>>> -----Original Message----- >>>>>> From: Romain Manni-Bucau [mailto:[email protected]] >>>>>> Sent: jeudi 23 novembre 2017 14:25 >>>>>> To: [email protected] >>>>>> Subject: Re: Injecting WebserviceContext returns null >>>>>> >>>>>> Looks close to >>>>>> https://github.com/apache/tomee/blob/master/server/openejb-cxf/src >>>>>> / >>>>>> t >>>>>> e s >>>>>> t/java/org/apache/openejb/server/cxf/PojoWebServiceContextTest.jav >>>>>> a >>>>>> , what can be the difference? >>>>>> >>>>>> Romain Manni-Bucau >>>>>> @rmannibucau | Blog | Old Blog | Github | LinkedIn >>>>>> >>>>>> >>>>>> 2017-11-23 13:49 GMT+01:00 COURTAULT Francois >>>>>> <[email protected]>: >>>>>>> Hello, >>>>>>> >>>>>>> No it's not an EJB webservice, just a POJO webservice annotated with >>>>>>> @WebService(name = "MyManager", targetNamespace = >>>>>>> "http://xxx.yyy.test..com/", serviceName = "MyManager", wsdlLocation = >>>>>>> "wsdl/MyManager.wsdl") like in the sample of my first email. >>>>>>> It looks quite similar to the sample provided in the JAX-WS 2.3 >>>>>>> specification (maintenance release 5), page 82, §5.3 >>>>>>> (javax.xml.ws.WebServiceContext) except that the annotation, in our >>>>>>> development, uses attributes like name, ... >>>>>>> >>>>>>> Best Regards. >>>>>>> >>>>>>> -----Original Message----- >>>>>>> From: Romain Manni-Bucau [mailto:[email protected]] >>>>>>> Sent: jeudi 23 novembre 2017 13:34 >>>>>>> To: [email protected] >>>>>>> Subject: Re: Injecting WebserviceContext returns null >>>>>>> >>>>>>> Hi François, >>>>>>> >>>>>>> did you test with an EJB webservice? >>>>>>> >>>>>>> Romain Manni-Bucau >>>>>>> @rmannibucau | Blog | Old Blog | Github | LinkedIn >>>>>>> >>>>>>> >>>>>>> 2017-11-23 12:11 GMT+01:00 COURTAULT Francois >>>>>>> <[email protected]>: >>>>>>>> Hello, >>>>>>>> >>>>>>>> I have the following : >>>>>>>> >>>>>>>> @WebService(name = "MyManager", targetNamespace = >>>>>>>> "http://xxx.yyy.test..com/", serviceName = "MyManager", >>>>>>>> wsdlLocation = >>>>>>>> "wsdl/MyManager.wsdl") public class MyManagerService implements >>>>>>>> MyManager { >>>>>>>> >>>>>>>> @Resource >>>>>>>> WebServiceContext webServiceContext; .... >>>>>>>> } >>>>>>>> >>>>>>>> And the webServiceContet is always null ! Any clue ? >>>>>>>> >>>>>>>> Best Regards. >>>>>>>> ________________________________ This message and any >>>>>>>> attachments are intended solely for the addressees and may contain >>>>>>>> confidential information. Any unauthorized use or disclosure, either >>>>>>>> whole or partial, is prohibited. >>>>>>>> E-mails are susceptible to alteration. Our company shall not be liable >>>>>>>> for the message if altered, changed or falsified. If you are not the >>>>>>>> intended recipient of this message, please delete it and notify the >>>>>>>> sender. >>>>>>>> Although all reasonable efforts have been made to keep this >>>>>>>> transmission free from viruses, the sender will not be liable for >>>>>>>> damages caused by a transmitted virus. >>>>>>> ________________________________ >>>>>>> This message and any attachments are intended solely for the >>>>>>> addressees and may contain confidential information. Any unauthorized >>>>>>> use or disclosure, either whole or partial, is prohibited. >>>>>>> E-mails are susceptible to alteration. Our company shall not be liable >>>>>>> for the message if altered, changed or falsified. If you are not the >>>>>>> intended recipient of this message, please delete it and notify the >>>>>>> sender. >>>>>>> Although all reasonable efforts have been made to keep this >>>>>>> transmission free from viruses, the sender will not be liable for >>>>>>> damages caused by a transmitted virus. >>>>>> ________________________________ >>>>>> This message and any attachments are intended solely for the addressees >>>>>> and may contain confidential information. Any unauthorized use or >>>>>> disclosure, either whole or partial, is prohibited. >>>>>> E-mails are susceptible to alteration. Our company shall not be liable >>>>>> for the message if altered, changed or falsified. If you are not the >>>>>> intended recipient of this message, please delete it and notify the >>>>>> sender. >>>>>> Although all reasonable efforts have been made to keep this transmission >>>>>> free from viruses, the sender will not be liable for damages caused by a >>>>>> transmitted virus. >>>>> ________________________________ >>>>> This message and any attachments are intended solely for the addressees >>>>> and may contain confidential information. Any unauthorized use or >>>>> disclosure, either whole or partial, is prohibited. >>>>> E-mails are susceptible to alteration. Our company shall not be liable >>>>> for the message if altered, changed or falsified. If you are not the >>>>> intended recipient of this message, please delete it and notify the >>>>> sender. >>>>> Although all reasonable efforts have been made to keep this transmission >>>>> free from viruses, the sender will not be liable for damages caused by a >>>>> transmitted virus. >>>> ________________________________ >>>> This message and any attachments are intended solely for the addressees >>>> and may contain confidential information. Any unauthorized use or >>>> disclosure, either whole or partial, is prohibited. >>>> E-mails are susceptible to alteration. Our company shall not be liable for >>>> the message if altered, changed or falsified. If you are not the intended >>>> recipient of this message, please delete it and notify the sender. >>>> Although all reasonable efforts have been made to keep this transmission >>>> free from viruses, the sender will not be liable for damages caused by a >>>> transmitted virus. >>> ________________________________ >>> This message and any attachments are intended solely for the addressees >>> and may contain confidential information. Any unauthorized use or >>> disclosure, either whole or partial, is prohibited. >>> E-mails are susceptible to alteration. Our company shall not be liable for >>> the message if altered, changed or falsified. If you are not the intended >>> recipient of this message, please delete it and notify the sender. >>> Although all reasonable efforts have been made to keep this transmission >>> free from viruses, the sender will not be liable for damages caused by a >>> transmitted virus. >> ________________________________ >> This message and any attachments are intended solely for the addressees and >> may contain confidential information. Any unauthorized use or disclosure, >> either whole or partial, is prohibited. >> E-mails are susceptible to alteration. Our company shall not be liable for >> the message if altered, changed or falsified. If you are not the intended >> recipient of this message, please delete it and notify the sender. >> Although all reasonable efforts have been made to keep this transmission >> free from viruses, the sender will not be liable for damages caused by a >> transmitted virus. > ________________________________ > This message and any attachments are intended solely for the addressees and > may contain confidential information. Any unauthorized use or disclosure, > either whole or partial, is prohibited. > E-mails are susceptible to alteration. Our company shall not be liable for > the message if altered, changed or falsified. If you are not the intended > recipient of this message, please delete it and notify the sender. > Although all reasonable efforts have been made to keep this transmission free > from viruses, the sender will not be liable for damages caused by a > transmitted virus.
