Hmm maybe i got it wrong but in an ear you can share ejb for webapps so
putting all ejb in  ejbmodules of the ear instead of war will make it
consistent
Le 3 sept. 2012 18:29, "Luca Merolla" <[email protected]> a écrit :

> They are inside an EAR folder. Would it make any difference if I do a
> packaged EAR?
>
> On Mon, Sep 3, 2012 at 3:33 PM, Romain Manni-Bucau <[email protected]
> >wrote:
>
> > Hmm, either managing this case or packaging an ear should solve it IMO
> > Le 3 sept. 2012 14:18, "Luca Merolla" <[email protected]> a écrit :
> >
> > > I changed a bit the code and I gave a try with @EJB and I get the same
> > > exception.
> > >
> > > The reason why there was JNDI lookups is because we are calling
> actually
> > 2
> > > ejbs in 2 different wars that implements the same interface
> > >
> > > private BroadcasterBeanLocal warBroadcaster;
> > > private BroadcasterBeanLocal war2Broadcaster;
> > >
> > > probably that can be solved with @EJB(name="") or something similar.
> > >
> > > However, I think the problem is related to the order of deployment.
> > > Basically when the EJB application (jar) is deployed, it starts with
> > Quartz
> > > for the timers, but at that time the WAR application hasn't been
> deployed
> > > yet so the warBroadcaster beans are not available and the deployment
> > fails
> > > with:
> > >
> > > SEVERE: Application could not be deployed:
> > >  /home/luca/bin/apache-tomee-snapshot/apps/Test.ear
> > > org.apache.openejb.OpenEJBException: Creating application failed:
> > > /home/luca/bin/apache-tomee-snapshot/apps/Test.ear: Error building bean
> > > 'WarBroadcasterBean'.  Exception: class org.apache.openejb.OpenE
> > > JBException: Error while loading bean class
> > > org.test.galaxy.WarBroadcasterBean for bean WarBroadcasterBean.
> Received
> > > message: Cannot locate the class org.test.galaxy.WarBroadcasterBean
> from
> > >  the codebase
> > > [/home/luca/bin/apache-tomee-snapshot/apps/Test.ear/pn-galaxy]: Error
> > while
> > > loading bean class org.test.galaxy.WarBroadcasterBean for bean
> > > WarBroadcasterBean. Received message: C
> > > annot locate the class org.test.galaxy.WarBroadcasterBean from the
> > codebase
> > > [/home/luca/bin/apache-tomee-snapshot/apps/Test.ear/pn-galaxy]
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:929)
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:521)
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:422)
> > >         at
> > >
> org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:330)
> > >         at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:144)
> > >         at org.apache.openejb.OpenEJB.init(OpenEJB.java:290)
> > >         at
> > >
> org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:231)
> > >         at
> > > org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:131)
> > >         at
> > >
> > >
> >
> org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:113)
> > >         at
> > >
> > >
> >
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
> > >         at
> > >
> > >
> >
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
> > >         at
> > >
> > >
> >
> org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401)
> > >         at
> > > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
> > >         at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
> > >         at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
> > >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >         at
> > >
> > >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >         at
> > >
> > >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >         at java.lang.reflect.Method.invoke(Method.java:597)
> > >         at
> org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
> > >         at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
> > > Caused by: org.apache.openejb.OpenEJBException: Error building bean
> > > 'WarBroadcasterBean'.  Exception: class
> > > org.apache.openejb.OpenEJBException: Error while loading bean class
> > > org.test.galaxy.WarBroadcasterBean for bean WarBroadcasterBean.
> Received
> > > message: Cannot locate the class org.test.galaxy.WarBroadcasterBean
> from
> > > the codebase
> > > [/home/luca/bin/apache-tomee-snapshot/apps/Test.ear/pn-galaxy]: Error
> > while
> > > loading bean class org.test.galaxy.WarBroadcasterBean for bean
> > > WarBroadcasterBean. Received message: Cannot locate the class
> > > org.test.galaxy.WarBroadcasterBean from the codebase
> > > [/home/luca/bin/apache-tomee-snapshot/apps/Test.ear/pn-galaxy]
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:81)
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:689)
> > >         ... 20 more
> > > Caused by: org.apache.openejb.OpenEJBException: Error while loading
> bean
> > > class org.test.galaxy.WarBroadcasterBean for bean WarBroadcasterBean.
> > > Received message: Cannot locate the class
> > > org.test.galaxy.WarBroadcasterBean from the codebase
> > > [/home/luca/bin/apache-tomee-snapshot/apps/Test.ear/pn-galaxy]
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.load(EnterpriseBeanBuilder.java:428)
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.loadClass(EnterpriseBeanBuilder.java:405)
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.build(EnterpriseBeanBuilder.java:81)
> > >         at
> > >
> > >
> >
> org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:66)
> > >         ... 21 more
> > >
> > >
> > >
> > >
> > > On Mon, Sep 3, 2012 at 1:47 PM, Thiago Veronezi <[email protected]>
> > > wrote:
> > >
> > > > You could remove the init method altogether and simple inject the
> bean
> > in
> > > > your object...
> > > >
> > > > @EJB
> > > > private WarBroadcaster warBroadcaster;
> > > >
> > > > This way you avoid JNDI lookups.
> > > >
> > > > []s,
> > > > Thiago.
> > > >
> > > >
> > > > On Mon, Sep 3, 2012 at 7:10 AM, Luca Merolla <[email protected]
> >
> > > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > I have a piece of code that I would like to port from JBoss to
> TomEE.
> > > > > The old code, which was working on JBoss, is like that. Inside the
> > same
> > > > EAR
> > > > > folder I have:
> > > > >
> > > > > - EJB jar (with EJBs and timers)
> > > > > - WAR (web application, with 1 EJB)
> > > > >
> > > > > I have a requirement that the ejb timers (a method annotated with
> > > > > @Schedule)
> > > > > will perform a task every X seconds.
> > > > > This method calls an EJB (inside the jar) that will call another
> EJB,
> > > but
> > > > > this time in a WAR application.
> > > > >
> > > > > Basically the EJB in the jar has something like that:
> > > > >
> > > > > @PostConstruct
> > > > > public void init() {
> > > > > log.info("INIT-BROADCASTERS");
> > > > > try {
> > > > >  warBroadcaster = (BroadcasterBeanLocal) initialContext
> > > > > .lookup("java:app/pn-test/WarBroadcasterBean");
> > > > > } catch (NamingException e) {
> > > > > log.error("Problem looking up for broadcasters", e);
> > > > > }
> > > > > }
> > > > >
> > > > > This approach seems to not work on TomEE. I have tried to add:
> > > > >
> > > > > Properties p = new Properties();
> > > > > p.put(Context.INITIAL_CONTEXT_FACTORY,
> > > > > "org.apache.openejb.client.LocalInitialContextFactory");
> > > > > final InitialContext initialContext = new InitialContext(p);
> > > > >
> > > > > But still it can't find the bean. I don't know if it's possible to
> do
> > > > > something like that but anyway if you have any suggestions or
> > different
> > > > > approach I would be very keen to refactor this code to make it work
> > > > > properly on TomEE.
> > > > >
> > > > > Thanks in advance,
> > > > > Luca
> > > > >
> > > >
> > >
> >
>

Reply via email to