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
