= Getting Started
:index-group: OpenEJB Standalone Server
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published

== The following instructions are written using Eclipse 3.2.
We will refer to the installation location of OpenEJB as OPENEJB_HOME

Here are some basic steps you need to perform to get started with
OpenEJB 1. Download and install OpenEJB 1. Setup your development
environment 1. Write an EJB 1. Write an EJB client 1. Start the server
1. Deploy the EJB 1. Run the client 1. Stop the server

== 1. Download and Install OpenEJB

Follow
these https://cwiki.apache.org/confluence/display/OPENEJB/Quickstart[instructions]

== 2. Setup your development environment

=== Eclipse

* Open eclipse and create a new java project. Name it EJBProject
* Add the following jars to the build path of your project --
OPENEJB_HOME/lib/geronimo-ejb_3.0_spec-1.0.jar
* Now create another project named EJBClient. This is where we will
write a test client
* Add the following jars to the build path of this project --
OPENEJB_HOME/lib/openejb-client-3.0.0-SNAPSHOT.jar
* Add the EJBProject to the classpath of the EJBClient project

== 3. Start the Server

Open the command prompt and run the following command:

[source,java]
----
d:\openejb-3.0.0-SNAPSHOT\bin\openejb start
----

You will get the following message on the console:

[source,java]
----
D:\openejb-3.0.0-SNAPSHOT>bin\openejb start
Apache OpenEJB 3.0.0-SNAPSHOT    build: 20070830-07:53
http://tomee.apache.org/
OpenEJB ready.
 OpenEJB Remote Server
      ** Starting Services **
      NAME             IP          PORT
      httpejbd         0.0.0.0         4204
      admin thread         0.0.0.0         4200
      ejbd             0.0.0.0         4201
      hsql             0.0.0.0         9001
      telnet           0.0.0.0         4202
    -------
    Ready!
----

== 4. Write an EJB

In the EJB project create a new interface named Greeting

[source,java]
----
package com.myejbs;

import jakarta.ejb.Remote;

@Remote
public interface Greeting {
  public String greet();
}
----

Now create a new class named GreetingBean which implements the above
interface (shown below)

[source,java]
----
package com.myejbs;

import jakarta.ejb.Stateless;

@Stateless
public class GreetingBean implements Greeting {

    public String greet() {
        return "My First Remote Stateless Session Bean";
    }

}
----

== 5. Deploy the EJB

[arabic]
. Export the EJBProject as a jar file. Name it greeting.jar and put it
in the OPENEJB_HOME/apps directory.
. Open the command prompt and type in the following command:
+
d:-3.0.0-SNAPSHOT > bindeploy apps.jar

This should give you the following output:

[source,java]
----
D:\openejb-3.0.0-SNAPSHOT>bin\openejb deploy apps\greeting.jar

Application deployed successfully at \{0\}

App(id=D:\openejb-3.0.0-SNAPSHOT\apps\greeting.jar)

    EjbJar(id=greeting.jar, path=D:\openejb-3.0.0-SNAPSHOT\apps\greeting.jar)

    Ejb(ejb-name=GreetingBean, id=GreetingBean)

        Jndi(name=GreetingBeanRemote)
----

_Notice the Jndi(name=GreetingBeanRemote)
information. Keep this handy as this is the JNDI name of the bean which
the client will use for lookup_

== 6. Write the Client

In the EJBClient project, create a class named Client (shown below)

[source,java]
----
package com.myclient;

import com.myejbs.Greeting;

import javax.naming.InitialContext;
import java.util.Properties;

public class Client {
    public static void main(String[] args) {

        try {
            Properties p = new Properties();
            p.put("java.naming.factory.initial", "org.openejb.client.RemoteInitialContextFactory");
            p.put("java.naming.provider.url", "ejbd://127.0.0.1:4201");
            InitialContext ctx = new InitialContext(p);
            Greeting greeter = (Greeting) ctx.lookup("GreetingBeanRemote");
            String message = greeter.greet();
            System.out.println(message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
----

== 7. Run the Client

Open Client.java in eclipse and run it as a java application. You should
see the following message in the console view:

[source,properties]
----
My First Remote Stateless Session Bean
----

== 8. Stop the server

There are two ways to stop the server: 1. You can press Ctrl+c on the
command prompt to stop the server 1. On the command prompt type in the
following command:

[source,java]
----
D:\openejb-3.0.0-SNAPSHOT>bin\openejb stop
----
