Hi Jarek, thanks for your help with this issue. I opened GERONIMO-4416 for the bug. Should I open a separate bug with the Axis2 project or do you expect the bug to be in the Geronimo-specific wiring?
Janko Jarek Gawor wrote: > Janko, > > I was able to replicate the problem with Axis2. It is creating an > extra instance of the bean but that instance won't be used for > anything. The properly injected bean will be used for all the calls. > > Can you open a bug with this issue? > > Thanks, > Jarek > > On Fri, Nov 14, 2008 at 2:13 AM, Janko Heilgeist > <[EMAIL PROTECTED]> wrote: >> Hi Jarek, >> >> your advice didn't work, unfortunately. The server logs still show the >> additional "DEFAULT"-bean. I've attached the files you requested plus my >> openejb-jar.xml just for completeness. >> >> Janko >> >> Jarek Gawor wrote: >>> I think you end up with deploying two ejbs because the name of bean >>> specified in the DD does not match the bean name of the annotated >>> class. And so, the container thinks you are deploying two separate >>> beans. To fix it, you could try adding "name=MyWebService" attribute >>> to the @Stateless annotation. >>> >>> If that still does not work right, send me your ejb-xml.jar file and >>> the bean class. >>> >>> Jarek >>> >>> On Thu, Nov 13, 2008 at 2:33 AM, Janko Heilgeist >>> <[EMAIL PROTECTED]> wrote: >>>> Hi, >>>> >>>> I've got a problem when deploying web services under Geronimo >>>> Tomcat/Axis. Not every instance of the stateless bean seems to receive >>>> the @Resource that I would like to have injected into the bean. I create >>>> a simple web service with an injected string that is accessed inside a >>>> @PostConstruct method and inside an exposed web method. >>>> >>>> // relevant excerpts ........ >>>> @Resource >>>> private String someString = "DEFAULT"; >>>> >>>> @PostConstruct >>>> public void init() { >>>> logger.info(String.format("init: EJB = '%08x', someString = '%s'", >>>> hashCode(), this.someString)); >>>> } >>>> >>>> public void doSomething(int counter) { >>>> logger.info(String.format("doSomething: EJB = '%08x', someString = >>>> '%s'", hashCode(), this.someString)); >>>> } >>>> >>>> Excerpts from ejb-jar.xml: >>>> >>>> <session> >>>> <ejb-name>MyWebService</ejb-name> >>>> <ejb-class> >>>> com.heilgeist.tests.tst_ws_with_resource.ws_ejb.MyServiceEJBImpl >>>> </ejb-class> >>>> >>>> <env-entry> >>>> <env-entry-name> >>>> com.heilgeist.tests.tst_ws_with_resource.ws_ejb.MyServiceEJBImpl/someString >>>> </env-entry-name> >>>> <env-entry-type>java.lang.String</env-entry-type> >>>> <env-entry-value>Hello, world!</env-entry-value> >>>> </env-entry> >>>> </session> >>>> >>>> When I access this web service I get the following lines in the server log: >>>> >>>> 08:12:41,381 INFO [MyServiceEJBImpl] init: EJB = '00b6d31c', someString >>>> = 'Hello, world!' >>>> 08:12:41,477 INFO [MyServiceEJBImpl] init: EJB = '01c50523', someString >>>> = 'DEFAULT' >>>> 08:12:41,745 INFO [MyServiceEJBImpl] doSomething: EJB = '00b6d31c', >>>> someString = 'Hello, world!' >>>> >>>> The second line indicates, that there is an additional instance of the >>>> stateless bean, that doesn't receive the injected string. It is only >>>> created once directly following the deployment of the web service. Even >>>> if further MYServiceEJBImpl instances are created later on to handle >>>> concurrent requests there is only a single instance of the bean with the >>>> default string. It's web service method is never called. Using the >>>> Jetty/CXF package this additional stateless bean is not created: >>>> >>>> 08:09:54,557 INFO [MyServiceEJBImpl] init: EJB = '015db507', someString >>>> = 'Hello, world!' >>>> 08:09:54,558 INFO [MyServiceEJBImpl] doSomething: EJB = '015db507', >>>> someString = 'Hello, world!' >>>> >>>> Can someone please shed some light on this funny behavior of Axis? >>>> >>>> Regards, Janko >>>> >>