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


== Accessing EJBs Remotely

When using OpenEJB as a stand-alone server you can connect across a
network and access EJBs from a remote client. The client code for
accessing an EJB's Remote Interface is the same, however to actually
connect across a network to the server, you need to specify different
JNDI parameters.

= Short version

Using OpenEJB's default remote server implementation is pretty straight
forward. You simply need to:

[arabic]
. Deploy your bean.
. Start the server on the IP and Port you want, 25.14.3.92 and 4201 for
example.
. Use that information in your client to create an initial context
. Add the right jars to your client's classpath

So, here it is in short.

Deploy your bean with the Deploy Tool:

[source,java]
----
c:\openejb> openejb.bat deploy beans\myBean.jar
----

See the link:deploy-tool.html[Deploy Tool]
documentation for more details on deploying beans.

Start the server:

[source,java]
----
c:\openejb> openejb.bat start -h 25.14.3.92 -p 4201
----

See the Remote Server command-line guide for more details on starting
the Remote Server.

Create an initial context in your client as such:

[source,java]
----
Properties p = new Properties();
p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
p.put("java.naming.provider.url", "ejbd://25.14.3.92:4201");
p.put("java.naming.security.principal", "myuser");
p.put("java.naming.security.credentials", "mypass");
    
InitialContext ctx = new InitialContext(p);
----

If you don't have any EJBs or clients to run, try the ubiquitous
link:hello-world.html[Hello World] example. Add the following
library to your clients classpath:

* openejb-client-x.x.x.jar
* jakartaee-api-x.x.jar

Both can be found in the lib directory where you installed OpenEJB or in
Maven repositories.
