#### JNDI Bindings

By default, session beans will bind to JNDI in the form `ejbName/remote` for remote interfaces and `ejbName/local` in the case of local interfaces. When the EJBs are deployed in an .ear file, the default jndi binding will be prepended by the name of the .ear file. So if the ear file name is `foo.ear` the default jndi names would be `foo/EJB-NAME/remote` and `foo/EJB-NAME/local`. You can override this behavior by defining your own `@org.jboss.ejb3.LocalBinding` or `@org.jboss.ejb3.remoting.RemoteBinding`.

#### Local Interface JNDI Binding.

To change the JNDI name for your local interface use the `org.jboss.ejb3.LocalBinding` annotation.

    @Stateless
    @LocalBinding(jndiBinding="custom/MySession")
    public class MySessionBean implements MySession
    {
    }

#### Remote Interface JNDI Binding

To change the JNDI name for your remote interface use the `org.jboss.ejb3.RemoteBindings` annotation.

    @Stateless
    @RemoteBinding(jndiName="custom/remote/MySession")
    public class MySessionBean implements MySession
    {
    }

#### Persistence unit JNDI Bindings

Persistence units are not bound into JNDI by default. You can bind them by defining some jboss specific properties in persistence.xml.

              <persistence>
                 <persistence-unit name="manager1">
                    <jta-data-source>java:/DefaultDS</jta-data-source>
                    <jar-file>MyApp.jar</jar-file>
                    <class>org.acme.Employee</class>
                    <class>org.acme.Person</class>
                    <class>org.acme.Address</class>
                    <properties>
                       <property name="jboss.entity.manager.jndi.name" value="java:/Manager1"/>
                       <property name="jboss.entity.manager.factory.jndi.name" value="java:/Manager1Factory"/>
                    </properties>
                 </persistence-unit>
              </persistence>

#### Client

Open up Client.java. You'll see that it looks up the stateless bean under "Calculator". Also notice that there is no Home interface and you can begin executing on the stateless bean right away.

#### Building and Running

To build and run the example, make sure you have `ejb3.deployer` installed in JBoss 4.0.x and have JBoss running. See the reference manual on how to install EJB 3.0.

    Unix:    $ export JBOSS_HOME=<where your jboss 4.0 distribution is>
    Windows: $ set JBOSS_HOME=<where your jboss 4.0 distribution is>
    $ ant
    $ ant run

    run:
         [java] 1 + 1 = 2
         [java] 1 - 1 = 0

#### Jar structure

EJB 3.0 beans must be packaged in a JAR file with the suffix `.jar`. Running the ant script above creates a JAR file within the deploy/ directory of JBoss. All that needs to be in that jar is your server-side class files. So basically just the CalculatorBean and the interfaces it implements. JBoss will automatically browse the JAR file to determine if any EJBs are annotated by any classes within it. THere is no precompilation step.