Hi, As per the spec that is perfectly the desired behavior IMHO. When using a local view bean (concrete ejb without any interface), the container basically generate the necessary stuff to make it serializable. When you define by your self a view (@Local, @Remote, etc), you receive the view you defined.
So to be clear, the EJB2 must be cast to SomeInterface after the lookup. Hope that helps JLouis 2013/11/28 Leonardo K. Shikida <[email protected]> > Sure > > >>>>>>>>>>> > > import javax.ejb.embeddable.EJBContainer; > import javax.naming.Context; > import javax.naming.NamingException; > > > public class Test { > > /** > * @param args > * @throws NamingException > */ > public static void main(String[] args) throws NamingException { > EJBContainer ejbContainer = EJBContainer.createEJBContainer(); > Context context = ejbContainer.getContext(); > > EJBOne one = (EJBOne) > context.lookup("java:global/Interfaces/"+EJBOne.class.getSimpleName()); > EJBTwo two = (EJBTwo) > context.lookup("java:global/Interfaces/"+EJBTwo.class.getSimpleName()); > ejbContainer.close(); > > } > > } > > >>>>>>>>>>> > > import javax.ejb.Stateless; > > > @Stateless > public class EJBOne { > > } > > >>>>>>>>>>>>> > > import javax.ejb.Stateless; > > > @Stateless > public class EJBTwo implements SomeInterface{ > > } > > >>>>>>>>>>>> > > public interface SomeInterface { > > } > > >>>>>>>>>>>> > > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: > > ******************************************************************************** > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: OpenEJB http://openejb.apache.org/ > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: Startup: Thu Nov 28 19:21:25 BRST 2013 > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved. > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: Version: 4.6.0-SNAPSHOT > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: Build date: 20131119 > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: Build time: 04:08 > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: > > ******************************************************************************** > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: openejb.home = /home/leoks/EclipseIndigo/workspace2/Interfaces > Nov 28, 2013 7:21:25 PM org.apache.openejb.OpenEJB$Instance <init> > INFO: openejb.base = /home/leoks/EclipseIndigo/workspace2/Interfaces > Nov 28, 2013 7:21:25 PM org.apache.openejb.cdi.CdiBuilder initializeOWB > INFO: Created new singletonService > org.apache.openejb.cdi.ThreadSingletonServiceImpl@119126ab > Nov 28, 2013 7:21:25 PM org.apache.openejb.cdi.CdiBuilder initializeOWB > INFO: Succeeded in installing singleton service > Nov 28, 2013 7:21:25 PM org.apache.openejb.util.OptionsLog info > INFO: Using 'javax.ejb.embeddable.EJBContainer=true' > Nov 28, 2013 7:21:25 PM org.apache.openejb.config.ConfigUtils > searchForConfiguration > INFO: Cannot find the configuration file [conf/openejb.xml]. Will attempt > to create one for the beans deployed. > Nov 28, 2013 7:21:25 PM org.apache.openejb.config.ConfigurationFactory > configureService > INFO: Configuring Service(id=Default Security Service, > type=SecurityService, provider-id=Default Security Service) > Nov 28, 2013 7:21:25 PM org.apache.openejb.config.ConfigurationFactory > configureService > INFO: Configuring Service(id=Default Transaction Manager, > type=TransactionManager, provider-id=Default Transaction Manager) > Nov 28, 2013 7:21:25 PM org.apache.openejb.assembler.classic.Assembler > createRecipe > INFO: Creating TransactionManager(id=Default Transaction Manager) > Nov 28, 2013 7:21:25 PM org.apache.openejb.assembler.classic.Assembler > createRecipe > INFO: Creating SecurityService(id=Default Security Service) > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.DeploymentsResolver > processUrls > INFO: Found EjbModule in classpath: > /home/leoks/EclipseIndigo/workspace2/Interfaces/build/classes > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.ConfigurationFactory > loadApplication > INFO: Beginning load: > /home/leoks/EclipseIndigo/workspace2/Interfaces/build/classes > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.ConfigurationFactory > configureApplication > INFO: Configuring enterprise application: > /home/leoks/EclipseIndigo/workspace2/Interfaces > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.InitEjbDeployments deploy > INFO: Auto-deploying ejb EJBTwo: EjbDeployment(deployment-id=EJBTwo) > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.InitEjbDeployments deploy > INFO: Auto-deploying ejb EJBOne: EjbDeployment(deployment-id=EJBOne) > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.ConfigurationFactory > configureService > INFO: Configuring Service(id=Default Stateless Container, type=Container, > provider-id=Default Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.AutoConfig > createContainer > INFO: Auto-creating a container for bean EJBTwo: Container(type=STATELESS, > id=Default Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > createRecipe > INFO: Creating Container(id=Default Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.ConfigurationFactory > configureService > INFO: Configuring Service(id=Default Managed Container, type=Container, > provider-id=Default Managed Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.AutoConfig > createContainer > INFO: Auto-creating a container for bean Test: Container(type=MANAGED, > id=Default Managed Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > createRecipe > INFO: Creating Container(id=Default Managed Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.core.managed.SimplePassivater > init > INFO: Using directory /tmp for stateful session passivation > Nov 28, 2013 7:21:26 PM org.apache.openejb.config.AppInfoBuilder build > INFO: Enterprise application > "/home/leoks/EclipseIndigo/workspace2/Interfaces" loaded. > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > createApplication > INFO: Assembling app: /home/leoks/EclipseIndigo/workspace2/Interfaces > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.JndiBuilder > bindJava > INFO: Jndi(name="java:global/Interfaces/EJBTwo!SomeInterface") > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.JndiBuilder > bindJava > INFO: Jndi(name="java:global/Interfaces/EJBTwo") > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.JndiBuilder > bindJava > INFO: Jndi(name="java:global/Interfaces/EJBOne!EJBOne") > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.JndiBuilder > bindJava > INFO: Jndi(name="java:global/Interfaces/EJBOne") > Nov 28, 2013 7:21:26 PM org.apache.openejb.cdi.CdiBuilder initSingleton > INFO: Existing thread singleton service in SystemInstance(): > org.apache.openejb.cdi.ThreadSingletonServiceImpl@119126ab > Nov 28, 2013 7:21:26 PM org.apache.openejb.cdi.OpenEJBLifecycle > startApplication > INFO: OpenWebBeans Container is starting... > Nov 28, 2013 7:21:26 PM org.apache.webbeans.plugins.PluginLoader startUp > INFO: Adding OpenWebBeansPlugin : [CdiPlugin] > Nov 28, 2013 7:21:26 PM org.apache.webbeans.plugins.PluginLoader startUp > INFO: Adding OpenWebBeansPlugin : [OpenWebBeansJsfPlugin] > Nov 28, 2013 7:21:26 PM org.apache.webbeans.config.BeansDeployer > validateInjectionPoints > INFO: All injection points were validated successfully. > Nov 28, 2013 7:21:26 PM org.apache.openejb.cdi.OpenEJBLifecycle > startApplication > INFO: OpenWebBeans Container has started, it took 55 ms. > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > startEjbs > INFO: Created Ejb(deployment-id=EJBTwo, ejb-name=EJBTwo, container=Default > Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > startEjbs > INFO: Created Ejb(deployment-id=EJBOne, ejb-name=EJBOne, container=Default > Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > startEjbs > INFO: Started Ejb(deployment-id=EJBTwo, ejb-name=EJBTwo, container=Default > Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > startEjbs > INFO: Started Ejb(deployment-id=EJBOne, ejb-name=EJBOne, container=Default > Stateless Container) > Nov 28, 2013 7:21:26 PM org.apache.openejb.assembler.classic.Assembler > createApplication > INFO: Deployed > Application(path=/home/leoks/EclipseIndigo/workspace2/Interfaces) > Exception in thread "main" java.lang.ClassCastException: > com.sun.proxy.$Proxy31 cannot be cast to EJBTwo > at Test.main(Test.java:17) > > > > [] > > Leo > > > On Thu, Nov 28, 2013 at 6:34 PM, Jean-Louis MONTEIRO <[email protected] > >wrote: > > > Can you share a simple exemple to reproduce, not sure I understand. > > > > JLouis > > > > > > 2013/11/28 Leonardo K. Shikida <[email protected]> > > > > > 160 > > > Em 28/11/2013 16:29, "Thiago Veronezi" <[email protected]> escreveu: > > > > > > > Whats the version of the server? > > > > 1.6.0 or trunk? > > > > > > > > []s, > > > > Thiago. > > > > > > > > > > > > > > > > On Thu, Nov 28, 2013 at 2:15 PM, Leonardo K. Shikida < > > [email protected] > > > > >wrote: > > > > > > > > > Hi > > > > > > > > > > Just noticed that when I code something like > > > > > > > > > > ejbContainer = EJBContainer.createEJBContainer(p); > > > > > context = ejbContainer.getContext(); > > > > > > > > > > networkDriversConfigurationFacadeEJB = > > > > > (NetworkDriversConfigurationFacadeEJB2) > > > > > > > > > > > > > > > > > > > > context.lookup("java:global/NEAS/"+NetworkDriversConfigurationFacadeEJB2.class.getSimpleName()); > > > > > > > > > > and NetworkDriversConfigurationFacadeEJB2 is a class that does not > > > > > implement any interface, it works. > > > > > > > > > > but if I implement any interface in > > > > NetworkDriversConfigurationFacadeEJB2, > > > > > I get an exception like > > > > > > > > > > java.lang.ClassCastException: com.sun.proxy.$Proxy105 cannot be > cast > > > > to... > > > > > > > > > > is that expected? > > > > > > > > > > [] > > > > > > > > > > Leo > > > > > > > > > > > > > > > > > > > > -- > > Jean-Louis > > > -- Jean-Louis
