= Hello World
:index-group: Unrevised
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published

This page shows the basic steps required to create, build, and
run an EJB and EJB client in its most minimum form. It does not hide
steps or rely on special build tools or IDEs and is about the most
stripped down you can get.

_See the link:examples.html[Examples] page for a full list of examples
that range from [`@Stateles`|Simple Stateless Example] and
[@Stateful|Simple Stateful Example] beans, to [Dependency
Injection|Injection of env-entry Example] , JDBC [DataSources|Injection
of DataSource Example] , JPA [EntityManagers|Injection of EntityManager
Example] and more._

== A basic EJB example

Here are some basic steps you need to perform to get started with
OpenEJB

[arabic]
. Download and install OpenEJB
. Setup your development environment
. Write an EJB
. Write an EJB client
. Start the server
. Deploy the EJB
. Run the client
. Stop the server

== Download and install OpenEJB

This example pertains to OpenEJB 3.0 which can be
http://archive.apache.org/dist/openejb/3.0[downloaded here] . Once you
have downloaded OpenEJB, you can then simply extract the contents of the
downloaded file to whichever directory you want to install OpenEJB in.

After extracting the file contents, you should now see a directory named
openejb-3.0. If you look under this directory, you will find a few more
directories: - _bin_: Contains commands to start/stop the server (You
can also do a lot of other stuff like deploy/undeploy, but we will just
talk about things needed to get you started) - _lib_: Contains several
jar files (you only need of few of these jars in your classpath to do
EJB development) - _apps_: Once you create your EJB's and jar them up,
you can place your jar file in this directory and start the server. The
server will automatically deploy all the EJB's contained in this JAR. -
_conf_: This directory contains all the configuration files. Although
you may not see any file except for a README.txt file right now, but
after you start the server, the required configuration files will be
automatically created. It is highly recommeded to read the README.txt
file under this directory - _logs_: Contains log files.

== Setup your development environment

=== Create a working directory Assuming you are in your home directory,
create a directory named projects

[source,bash]
----
karan@poweredge:~$ mkdir projects
----

Go to the projects directory

[source,bash]
----
karan@poweredge:~$ cd projects
----

We will do all our work in this directory. ### Install Java Download and
install Java (version 5 or higher). Also set it up so that you can run
the java and javac commands from any directory ### Set OPENEJB_HOME We
will setup this variable to refer to the openejb install location.

[source,bash]
----
karan@poweredge:~/projects$ export
----

OPENEJB_HOME=/home/karan/install/openejb-3.0

== Write an EJB Whatever files you create should be placed under the
projects directory ### Create the Remote Interface Using your favorite
editor, create a file named Hello.java (shown below)

[source,java]
----
package org.acme;
import javax.ejb.Remote;
@Remote
public interface Hello{
    public String sayHello();
}
----

=== Create the Bean Class Now create a file named HelloBean.java (shown
below)

[source,java]
----
package org.acme;
import javax.ejb.Stateless;
@Stateless
public class HelloBean implements Hello{
    public String sayHello(){
        return "Hello World!!!!";
    }
}
----

=== Compile the source code Since we have imported the
javax.ejb.Stateless and javax.ejb.Remote annotations, we need these in
our classpath to compile our source code. These annotations can be found
in the $OPENEJB_HOME/lib/javaee-5.0-1.jar. Lets compile our source (make
sure you are in the projects directory)

[source,bash]
----
karan@poweredge:~/projects$ javac -cp $OPENEJB_HOME/lib/javaee-5.0-1.jar -d
----

. *.java

The above will compile all the .java files and also create the required
packages. You should now see a package named org under the projects
directory. All class files should be under org/acme directory. ###
Package the EJB To package the EJB into a JAR, run the following command
while you are in the projects directory

[source,bash]
----
karan@poweredge:~/projects$ jar cvf hello.jar org
----

The above command will package everything under the org directory
(including the org directory itself) into a jar file named hello.jar.
Below is the output from running the above command:

[source,bash]
----
karan@poweredge:~/projects$ jar cvf hello.jar org
added manifest
adding: org/(in = 0) (out= 0)(stored 0%)
adding: org/acme/(in = 0) (out= 0)(stored 0%)
adding: org/acme/Hello.class(in = 203) (out= 168)(deflated 17%)
adding: org/acme/HelloBean.class(in = 383) (out= 275)(deflated 28%)
----

== Write an EJB Client Now we will write a Client class which will
lookup the EJB , invoke the sayHello() business method and print the
value returned from the method. While you are in the projects directory,
create a new file named HelloClient.java . Add the following to this
file:

[source,java]
----
package org.acme;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.rmi.PortableRemoteObject;
public class HelloClient{
        public static void main(String[]
----

args) throws Exception\{ Properties props = new Properties();

props.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.RemoteInitialContextFactory");
props.put(Context.PROVIDER_URL,"ejbd://127.0.0.1:4201"); Context ctx =
new InitialContext(props); Object ref = ctx.lookup("HelloBeanRemote");
Hello h = (Hello)PortableRemoteObject.narrow(ref,Hello.class); String
result = h.sayHello(); System.out.println(result); } }

=== Compile HelloClient.java Run the following command:

[source,bash]
----
karan@poweredge:~/projects$ javac  -d . HelloClient.java
----

== Start the Server Go to the OpenEJB install directory (i.e.
OPENEJB_HOME) and run the following command:

[source,bash]
----
karan@poweredge:~/install/openejb-3.0$ bin/openejb start
----

Once the Server starts, you will see an output similar to the below in
your console:

[source,bash]
----
karan@poweredge:~/install/openejb-3.0$ bin/openejb start
Apache OpenEJB 3.0    build: 20070926-12:34
http://tomee.apache.org/
OpenEJB ready.
[OPENEJB:init]
----

OpenEJB Remote Server ** Starting Services ** NAME IP PORT +
httpejbd 0.0.0.0 4204 +
telnet 0.0.0.0 4202 +
ejbd 0.0.0.0 4201 +
hsql 0.0.0.0 9001 +
admin thread 0.0.0.0 4200 +
------- Ready!

Take out a minute to browse through the conf and logs directories. You
should now see some configuration and log files under the respective
directories. ## Deploy the EJB We will now use the deploy command to
deploy the EJB in hello.jar. While you are in the projects directory,
run the following command:

[source,bash]
----
karan@poweredge:~/projects$ $OPENEJB_HOME/bin/openejb deploy hello.jar
----

The above command should give you the following output:

[source,bash]
----
karan@poweredge:~/projects$ $OPENEJB_HOME/bin/openejb deploy hello.jar
Application deployed successfully at "hello.jar"
App(id=/home/karan/projects/hello.jar)
    EjbJar(id=hello.jar, path=/home/karan/projects/hello.jar)
    Ejb(ejb-name=HelloBean, id=HelloBean)
        Jndi(name=HelloBeanRemote)
----

Notice how the output neatly lays out various deployment details. One
thing you might want to note from the output is the JNDI name. This is
the JNDI name we used in the client to lookup the EJB ## Run the Client
While you are in the projects directory, run the following command to
run the client:

[source,bash]
----
karan@poweredge:~/projects$ java -cp
----

latexmath:[$OPENEJB_HOME/lib/openejb-client-3.0.jar:$]OPENEJB_HOME/lib/javaee-5.0-1.jar:.
org.acme.HelloClient

The above should give you the following output:

[source,properties]
----
Hello World!!!!
----

== Help! , it didn't work for me!!. No problem, we are here to help.
Just send us an email at users@tomee.apache.org. If possible, send us
the contents of logs/openejb.log file in the email.

= Looking for more?

More EJB 3.0 examples, sample applications, tutorials and howtos
available link:examples.html[here] .
