title: Hello World! with Remote Stateless Session Bean
body: <p>Good day! I'm newcomer in the JavaEE 6. I tried to create a started project with use of the following tutorial: <a href="http://netbeans.org/kb/docs/javaee/entappclient.html" rel="noreferrer">Creating and Running an Application Client on the GlassFish Server</a>. I created four projects step by step: JavaSE lib to store an EJB Remote Interface, an EJB Module and otherwise as ther're described in the tutorial.</p>
  
  <p>My platform:</p>
  
  <ul>
  <li>Distributor ID:  Ubuntu Description: Ubuntu 10.10 Release:   10.10
  Codename:    maverick</li>
  <li>jdk1.6.0_26 </li>
  <li>Netbean7.2(Build 201207171143) </li>
  <li>GlassFish Server 3+</li>
  </ul>
  
  <p>My remote interface </p>
  
  <pre><code>    package ejb.started;
      //    
      import javax.ejb.Remote;
      //
      @Remote
      public interface StartedSessionBeanRemote {
  
          String getHelloWorld();
  
      }
  </code></pre>
  
  <p>Its implementation:</p>
  
  <pre><code>package ejb.started;
  //
  import javax.ejb.Stateless;
  //
  @Stateless(name="StartedSessionBeanRemote")
  public class StartedSessionBean implements StartedSessionBeanRemote {
  
      @Override
      public String getHelloWorld() {
         return ("Hello world, EJB!");
      }
  
  }
  </code></pre>
  
  <p>And the client code:</p>
  
  <pre><code>package startedentappclient;
  //
  import ejb.started.StartedSessionBeanRemote;
  import javax.ejb.EJB;
  //
  public class AppClientMain {
      @EJB
      private static StartedSessionBeanRemote startedSessionBean;
      public static void main(String[] args) {
          System.err.println("EJB: "+startedSessionBean.getHelloWorld());
      }
  }
  </code></pre>
  
  <p>When I try to run the Remote Client proj, I receive the following output:</p>
  
  <pre><code>ant -f /home/ilya/Workspace/git/workspace/StartedEntAppClient -DforceRedeploy=false run
  init:
  EJBRemoteInterface.init:
  Deleting: /home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
  EJBRemoteInterface.deps-jar:
  Updating property file: /home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
  EJBRemoteInterface.compile:
  EJBRemoteInterface.jar:
  deps-jar:
  compile:
  library-inclusion-in-archive:
  dist:
  pre-run-deploy:
  Redeploying /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/StartedEntAppClient.jar
  Initializing...
  post-run-deploy:
  run-deploy:
  Copying 1 file to /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist
  Copying 2 files to /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/StartedEntAppClientClient
  Warning: /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/gfdeploy/StartedEntAppClient does not exist.
  com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session into class startedentappclient.AppClientMain: Lookup failed for 'java:comp/env/startedentappclient.AppClientMain/startedSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
      at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
      at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
      at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:213)
      at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:205)
      at org.glassfish.appclient.client.acc.AppClientContainer$ClientMainClassSetting.getClientMainClass(AppClientContainer.java:625)
      at org.glassfish.appclient.client.acc.AppClientContainer.getMainMethod(AppClientContainer.java:517)
      at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:411)
      at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:319)
      at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:278)
      at org.glassfish.appclient.client.acc.agent.AppClientContainerAgent.premain(AppClientContainerAgent.java:82)
      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 sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
      at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
  Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/startedentappclient.AppClientMain/startedSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]]
      at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
      at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
      at javax.naming.InitialContext.lookup(InitialContext.java:392)
      at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
      ... 15 more
  Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]
      at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
      at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
      at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
      at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
      at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169)
      at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
      ... 18 more
  Caused by: javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]
      at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
      at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
      at javax.naming.InitialContext.lookup(InitialContext.java:392)
      at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
      ... 23 more
  Caused by: javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found
      at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
      at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
      at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
      at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:109)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144)
      at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174)
      at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528)
      at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199)
      at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624)
      at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486)
      at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990)
      at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)
      at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742)
      at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539)
      at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324)
      at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
      at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
  Java Result: 1
  run:
  BUILD SUCCESSFUL (total time: 11 seconds)
  </code></pre>
  
  <p>I can't assume what's that problem. I built same projects on my second PC and all work successfully. That one has the same software platform.  </p>