Apparently this works on JBoss 4.2.3. I was trying to make it work in
OpenEJB without much effort, but I guess I was wrong.

On Mon, Oct 22, 2012 at 1:47 PM, Romain Manni-Bucau
<[email protected]>wrote:

> yep,
>
> was expecting some magic property too but the code said the opposite (to be
> honest i find it quite logical)
>
> *Romain Manni-Bucau*
> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> *Blog: **http://rmannibucau.wordpress.com/*<
> http://rmannibucau.wordpress.com/>
> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> *Github: https://github.com/rmannibucau*
>
>
>
>
> 2012/10/22 Miguel Figueiredo <[email protected]>
>
> > Hi Romain,
> >
> > I was expecting some magic ;)
> >
> > I fixed it using the following:
> >
> > 1. Added an entry to ejb-jar.xml
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"; xmlns:xsi="
> > http://www.w3.org/2001/XMLSchema-instance";
> >     version="3.0"
> >     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> > http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd";>
> >     <enterprise-beans>
> >         <session>
> >             <ejb-name>B</ejb-name>
> >             <home>openejbtest.BInterfaceHome</home>
> >             <remote>openejbtest.BInterface</remote>
> >             <ejb-class>openejbtest.B</ejb-class>
> >             <session-type>Stateless</session-type>
> >             <transaction-type>Container</transaction-type>
> >         </session>
> >     </enterprise-beans>
> > </ejb-jar>
> >
> > 2. Created a home interface and injected it in the A EBJ:
> >
> > *BInterfaceHome*
> >
> > package openejbtest;
> >
> > import javax.ejb.EJBException;
> >
> >
> > public interface BInterfaceHome extends javax.ejb.EJBHome {
> >     public BInterface create() throws EJBException;
> > }
> >
> > *A*
> >
> > package openejbtest;
> >
> > import javax.ejb.EJB;
> > import javax.ejb.Stateless;
> > import javax.persistence.EntityManager;
> > import javax.persistence.PersistenceContext;
> >
> > @Stateless
> > public class A implements AInterface {
> >
> >     @EJB
> >     protected BInterfaceHome b;
> >
> >     @Override
> >     public void methodA() {
> >         b.create().methodB();
> >     }
> > }
> >
> > Best regards,
> > Miguel
> >
> > On Mon, Oct 22, 2012 at 1:22 PM, Romain Manni-Bucau
> > <[email protected]>wrote:
> >
> > > Hi Miguel,
> > >
> > > these EJB doesn't look valid so the deployment fails.
> > >
> > > You have to change something to make it working, no magic property i
> fear
> > >
> > > *Romain Manni-Bucau*
> > > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> > > *Blog: **http://rmannibucau.wordpress.com/*<
> > > http://rmannibucau.wordpress.com/>
> > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> > > *Github: https://github.com/rmannibucau*
> > >
> > >
> > >
> > >
> > > 2012/10/22 Miguel Figueiredo <[email protected]>
> > >
> > > > Hello,
> > > >
> > > > I have a scenario where I want to inject EJB B that has an interface
> > that
> > > > extends EJBObject, in EJB A. When I run the OpenEJB container I get
> the
> > > > following error:
> > > >
> > > > SEVERE - FAIL ... A:    @EJB mistakenly refers to a beans
> > > > javax.ejb.EJBObject interface openejbtest.BInterface.  Use the
> EJBHome
> > > > interface instead.
> > > > SEVERE - FAIL ... B:    javax.ejb.EJBObject interface declared as
> > > > <business-local>. Use <remote>openejbtest.BInterface</remote>
> > > >
> > > > What should I do to fix this? Changing EJB B and its interface is not
> > an
> > > > option.
> > > >
> > > > Here is the listing of a simplified scenario:
> > > >
> > > > *class A:*
> > > >
> > > > package openejbtest;
> > > >
> > > > import javax.ejb.EJB;
> > > > import javax.ejb.Stateless;
> > > > import javax.persistence.EntityManager;
> > > > import javax.persistence.PersistenceContext;
> > > >
> > > > @Stateless
> > > > public class A implements AInterface {
> > > >
> > > >     @EJB
> > > >     protected BInterface b;
> > > >
> > > >     @Override
> > > >     public void methodA() {
> > > >     }
> > > > }
> > > >
> > > > *interface AInterface:*
> > > >
> > > > package openejbtest;
> > > >
> > > >
> > > > public interface AInterface {
> > > >
> > > >     void methodA();
> > > >
> > > > }
> > > >
> > > > *class B:*
> > > >
> > > > package openejbtest;
> > > >
> > > > import java.rmi.RemoteException;
> > > >
> > > > @Stateless
> > > > public class B implements BInterface {
> > > >
> > > >     @EJB
> > > >     protected CInterface cEjb;
> > > >
> > > >     @Overr aide
> > > >     public void methodB() {
> > > >     }
> > > >
> > > >     @Override
> > > >     public EJBHome getEJBHome() throws RemoteException {
> > > >         // TODO Auto-generated method stub
> > > >         return null;
> > > >     }
> > > >
> > > >     @Override
> > > >     public Handle getHandle() throws RemoteException {
> > > >         // TODO Auto-generated method stub
> > > >         return null;
> > > >     }
> > > >
> > > >     @Override
> > > >     public Object getPrimaryKey() throws RemoteException {
> > > >         // TODO Auto-generated method stub
> > > >         return null;
> > > >     }
> > > >
> > > >     @Override
> > > >     public boolean isIdentical(EJBObject obj) throws RemoteException
> {
> > > >         // TODO Auto-generated method stub
> > > >         return false;
> > > >     }
> > > >
> > > >     @Override
> > > >     public void remove() throws RemoteException, RemoveException {
> > > >         // TODO Auto-generated method stub
> > > >
> > > >     }
> > > >
> > > > }
> > > > *
> > > > interface BInterface:*
> > > >
> > > > package openejbtest;
> > > >
> > > > import javax.ejb.EJBObject;
> > > >
> > > > public interface BInterface extends EJBObject {
> > > >     public void methodB();
> > > > }
> > > >
> > > > Best regards,
> > > > Miguel
> > > >
> > > > --
> > > > Miguel Figueiredo
> > > > Software Developer
> > > > http://jaragua.dyndns.org
> > > >
> > > > "I'm a pretty lazy person and am prepared to work quite hard in order
> > to
> > > > avoid work."
> > > > -- Martin Fowler
> > > >
> > >
> >
> >
> >
> > --
> > Miguel Figueiredo
> > Software Developer
> > http://jaragua.dyndns.org
> >
> > "I'm a pretty lazy person and am prepared to work quite hard in order to
> > avoid work."
> > -- Martin Fowler
> >
>



-- 
Miguel Figueiredo
Software Developer
http://jaragua.dyndns.org

"I'm a pretty lazy person and am prepared to work quite hard in order to
avoid work."
-- Martin Fowler

Reply via email to