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.

Reply via email to