14 Replies Latest reply on Oct 17, 2011 9:07 AM by stevecoh4

    WebServiceContext proxy

    heiko.braun

      Recent discussions showed that beans should have a WebServiceContext proxy injected before they become method ready, which in turn delegates to a ThreadLocal or throws an IllegalArgumentException if the context is not set.

        • 1. Re: WebServiceContext proxy
          heiko.braun
          • 2. Re: WebServiceContext proxy
            heiko.braun

            I've added the proxy to ejb3/core:

            
            package org.jboss.injection;
            
            /**
             * WebServiceContext proxy that delegates to a ThreadLocal.
             *
             */
            public class WebServiceContextProxy implements WebServiceContext
            {
            [...]
            }
            


            Can someone make sure the injection happens?

            • 3. Re: WebServiceContext proxy
              wolfc

              WebServiceContextProxy doesn't compile with JDK 6:

              /home/carlo/work/ejb3/core/src/main/java/org/jboss/injection/WebServiceContextProxy.java:[67,23] cannot find symbol
              symbol : method getEndpointReference(org.w3c.dom.Element[])
              location: interface javax.xml.ws.WebServiceContext

              /home/carlo/work/ejb3/core/src/main/java/org/jboss/injection/WebServiceContextProxy.java:[72,23] cannot find symbol
              symbol : method getEndpointReference(java.lang.Class,org.w3c.dom.Element[])
              location: interface javax.xml.ws.WebServiceContext

              Not a showstopper, just a bummer. For the moment I'm going to switch to 5, but I want to have a resolution in the works.

              • 4. Re: WebServiceContext proxy
                wolfc

                Note that it's mandatory to throw an IllegalStateException if the method is called while no request is being serviced:
                http://java.sun.com/javase/6/docs/api/javax/xml/ws/WebServiceContext.html#getMessageContext()

                • 5. Re: WebServiceContext proxy
                  heiko.braun

                  I've changed it to an IllegalStateException

                  • 6. Getting EJBTHREE-1337 in JBoss 5.0.0.GA with each web servic
                    cwolters

                    I get the warning

                    [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected


                    with each call to a deployed web service. I'm running JBoss 5.0.0.GA with JDK6.

                    The Web Service is defined with these annotations:
                    @Stateless
                    @Remote(QuoteEndpoint.class)
                    @TransactionAttribute(TransactionAttributeType.REQUIRED)
                    @WebService(serviceName = "QuoteService", endpointInterface = "services.endpoints.QuoteEndpoint")
                    @Interceptors( { LoginEndpointInterceptor.class })
                    public class QuoteEndpointImpl extends AbstractSessionBeanImpl implements QuoteEndpoint {
                    
                     @Resource
                     public SessionContext sessionContext;
                    ...}


                    and the webservice interface:
                    @WebService
                    public interface QuoteEndpoint {
                     @WebMethod
                     EquityDTO[] getSubscriptions();
                    
                     @WebMethod
                     CustomSymbolDTO[] getCustomSymbols();
                    
                     @WebMethod
                     void receiveQuotes(QuoteDTO[] quotes);
                    
                     @WebMethod
                     void receiveEquityMappings(equityMappingDTO[] equityMappingDTOs);
                    }


                    Is something wrong with this code? Can I ignore the warning?

                    Please remove the warning from the log if unnecessary.

                    • 7. Re: Getting EJBTHREE-1337 in JBoss 5.0.0.GA with each web se

                       

                      "cwolters" wrote:
                      I get the warning

                      [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected


                      with each call to a deployed web service. I'm running JBoss 5.0.0.GA with JDK6.

                      The Web Service is defined with these annotations:
                      @Stateless
                      @Remote(QuoteEndpoint.class)
                      @TransactionAttribute(TransactionAttributeType.REQUIRED)
                      @WebService(serviceName = "QuoteService", endpointInterface = "services.endpoints.QuoteEndpoint")
                      @Interceptors( { LoginEndpointInterceptor.class })
                      public class QuoteEndpointImpl extends AbstractSessionBeanImpl implements QuoteEndpoint {
                      
                       @Resource
                       public SessionContext sessionContext;
                      ...}


                      and the webservice interface:
                      @WebService
                      public interface QuoteEndpoint {
                       @WebMethod
                       EquityDTO[] getSubscriptions();
                      
                       @WebMethod
                       CustomSymbolDTO[] getCustomSymbols();
                      
                       @WebMethod
                       void receiveQuotes(QuoteDTO[] quotes);
                      
                       @WebMethod
                       void receiveEquityMappings(equityMappingDTO[] equityMappingDTOs);
                      }


                      Is something wrong with this code? Can I ignore the warning?

                      Please remove the warning from the log if unnecessary.


                      Hi guys, I just came up with the same problem, is there any solution for this warning ? Why is it happening ? Although the code works I don't want to leave it that way. Please help me.
                      Thanks

                      • 8. Re: WebServiceContext proxy

                        Me, too...

                        This:

                        @Stateless
                        @Remote(HelloWorld.class)
                        @WebService(targetNamespace = "http://ejb.me.org", name = "HelloWorld", serviceName = "HelloWorldService")
                        @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = Use.LITERAL, parameterStyle = ParameterStyle.WRAPPED)
                        public class HelloWorldBean implements HelloWorld {
                        [...]


                        ...yields...

                        12:53:39,374 WARN [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
                        12:53:39,382 WARN [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
                        12:53:39,383 WARN [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
                        12:53:39,418 INFO [HelloWorldBean] in sayHello
                        12:53:39,419 WARN [StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected


                        The web service doesn't seem to be affected, but I am unable to figure out why it is carping... Do we have to comb through the jboss source? Is jboss saying I shouldn't use @WebService?

                        pat
                        :)

                        • 9. Re: WebServiceContext proxy
                          jaikiran

                           

                          "BogusException" wrote:

                          The web service doesn't seem to be affected, but I am unable to figure out why it is carping... Do we have to comb through the jboss source? Is jboss saying I shouldn't use @WebService?

                          pat
                          :)


                          Pat, for now ignore this message. That message isn't applicable to the end users (i.e. bean/webservice application developers). We'll fix it appropriately.


                          • 10. Re: WebServiceContext proxy

                             

                            That message isn't applicable to the end users (i.e. bean/webservice application developers). We'll fix it appropriately.


                            Since I am seeing the exact same "Warning" in 5.1.0.GA, when are you guys either suppress this warning or fix it once and forever.

                            Also, is there an ETA for this "fix"?

                            Thanks!

                            • 11. Re: WebServiceContext proxy
                              jaikiran

                               

                              when are you guys either suppress this warning or fix it once and forever.

                              Thanks for reminding me about this. Here's the issue for tracking this https://jira.jboss.org/jira/browse/EJBTHREE-1847

                              Also, is there an ETA for this "fix"?


                              Since we have a frequent release cycle http://www.jboss.org/ejb3.html you should be able to get this fix soon.

                              • 12. Re: WebServiceContext proxy
                                stevecoh4

                                Guess not, I am still seeing it in 5.1.0-GA.  Workarounds?

                                • 13. Re: WebServiceContext proxy
                                  ropalka

                                  How about AS 6.1.0.GA ?

                                  • 14. Re: WebServiceContext proxy
                                    stevecoh4

                                    As I stated in the other thread, corporate policies prohibit me from using 6.x.x though 7.x.x. may possibly become possible before I have to deploy this thing.  There is a workaround involving logrj configuration which is not ideal but better than seeing these stupid warnings every time the Web Service is invoked:

                                     

                                      <!-- Suppress EJBTHREE-1337 warning -->

                                      <category name="org.jboss.ejb3.stateless.StatelessBeanContext">

                                        <priority value="ERROR"/>

                                      </category>