I have to confess I think it is not specified at all (JAX-WS not being updated for this case) but feel free to propose a fix on github. No blocker to enrich it.
Romain Manni-Bucau @rmannibucau | Blog | Old Blog | Github | LinkedIn 2017-11-27 11:56 GMT+01:00 COURTAULT Francois <francois.courta...@gemalto.com>: > Hello Romain, > > OK but this didn't happen with the other App Servers. The only I haven't > tried is Liberty but I can if you want. > So for me it's a bug, right ? > > Best Regards. > > -----Original Message----- > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com] > Sent: lundi 27 novembre 2017 11:47 > To: users@tomee.apache.org > Subject: [++SPAM++]: Re: [++SPAM++]: Re: : Re: : Re: : Re: Injecting > WebserviceContext returns null > > 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 > <francois.courta...@gemalto.com>: >> 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:rmannibu...@gmail.com] >> Sent: lundi 27 novembre 2017 11:08 >> To: users@tomee.apache.org >> 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 >> <francois.courta...@gemalto.com>: >>> 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: users@tomee.apache.org >>> 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:rmannibu...@gmail.com] >>> Sent: vendredi 24 novembre 2017 15:34 >>> To: users@tomee.apache.org >>> Subject: [++SPAM++]: Re: : Re: : Re: Injecting WebserviceContext >>> returns null >>> >>> 2017-11-24 15:26 GMT+01:00 COURTAULT Francois >>> <francois.courta...@gemalto.com>: >>>> 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 me...@javaee.groups.io 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:rmannibu...@gmail.com] >>>> Sent: vendredi 24 novembre 2017 10:46 >>>> To: users@tomee.apache.org >>>> Subject: [++SPAM++]: Re: : Re: Injecting WebserviceContext returns >>>> null >>>> >>>> 2017-11-24 10:36 GMT+01:00 COURTAULT Francois >>>> <francois.courta...@gemalto.com>: >>>>> 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:rmannibu...@gmail.com] >>>>> Sent: jeudi 23 novembre 2017 16:30 >>>>> To: users@tomee.apache.org >>>>> Subject: [++SPAM++]: Re: Injecting WebserviceContext returns null >>>>> >>>>> 2017-11-23 16:25 GMT+01:00 COURTAULT Francois >>>>> <francois.courta...@gemalto.com>: >>>>>> 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:rmannibu...@gmail.com] >>>>>> Sent: jeudi 23 novembre 2017 15:57 >>>>>> To: users@tomee.apache.org >>>>>> 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 >>>>>> <francois.courta...@gemalto.com>: >>>>>>> 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:rmannibu...@gmail.com] >>>>>>> Sent: jeudi 23 novembre 2017 14:25 >>>>>>> To: users@tomee.apache.org >>>>>>> Subject: Re: Injecting WebserviceContext returns null >>>>>>> >>>>>>> Looks close to >>>>>>> https://github.com/apache/tomee/blob/master/server/openejb-cxf/sr >>>>>>> c >>>>>>> / >>>>>>> t >>>>>>> e s >>>>>>> t/java/org/apache/openejb/server/cxf/PojoWebServiceContextTest.ja >>>>>>> v >>>>>>> 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 >>>>>>> <francois.courta...@gemalto.com>: >>>>>>>> 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:rmannibu...@gmail.com] >>>>>>>> Sent: jeudi 23 novembre 2017 13:34 >>>>>>>> To: users@tomee.apache.org >>>>>>>> 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 >>>>>>>> <francois.courta...@gemalto.com>: >>>>>>>>> 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. > ________________________________ > 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.