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

= NAME

openejb start - OpenEJB Remote Server

= SYNOPSIS

openejb start link:#options.html[#options]

= NOTE

The OpenEJB Remote Server can be started by running the openejb.bat
script for windows and the openejb script for Linux and other Unix based
OSes. Before running these scripts you need to set the environment
variable _OPENEJB_HOME_ to the path of the directory where you unpacked
the OpenEJB installation.

From now on we will refer to this directory as and assume that you
unpacked OpenEJB into the directory _C:-3.0_ The startup scripts are
present in the /bin directory. You can set this directory in the system
_PATH_ for starting openejb from the command shell.

In Windows, the remote server can be executed as follows:

_C:-3.0> binstart_

In UNIX, Linux, or Mac OS X, the deploy tool can be executed as follows:

`\[user@host openejb-3.0](user@host-openejb-3.0.html) # ./bin/openejb start`

Depending on your OpenEJB version, you may need to change execution bits
to make the scripts executable. You can do this with the following
command.

`\[user@host openejb-3.0](user@host-openejb-3.0.html) # chmod 755 bin/openejb`

From here on out, it will be assumed that you know how to execute the
right openejb script for your operating system and commands will appear
in shorthand as show below.

_openejb start -help_

= DESCRIPTION

Starts OpenEJB as an EJB Server that can be accessed by remote clients
via the OpenEJB Remote Server.

ALWAYS check your openejb.log file for warnings immediately after
starting the Remote Server.

OpenEJB issues warnings when it works around a potential problem,
encounters something it didn't expect, or when OpenEJB wants to let you
know something may not work as you expected it.

OpenEJB itself is configured with the OpenEJB configuration file, which
is extremely simple and self-documenting. This file is located at
c:-3.0.xml.

= OPTIONS

| _-D=_ | Specifies a system property passed into OpenEJB at startup. |
| _--admin-bind _ | Sets the host to which the admin service should be
bound.| | _--admin-port _ | Sets the port to which the admin service
should be bound.| | _--conf _ | Sets the OpenEJB configuration to the
specified file. | | _--ejbd-bind _ | Sets the host to which the ejbd
service should be bound. | | _--ejbd-port _ | Sets the port to which the
ejbd service should be bound. | +
| _--examples_ | Show examples of how to use the options. | | -h,
--_help_ | Print this help message. | | _--hsql-bind _ | Sets the host
to which the hsql service should be bound.| | _--hsql-port _ | Sets the
port to which the hsql service should be bound.| | _--httpejbd-bind _ |
Sets the host to which the httpejbd service should be bound.| |
_--httpejbd-port _ | Sets the port to which the httpejbd service should
be bound.| | _--local-copy _ | Instructs the container system to marshal
(ie, copy) all calls between beans. | | _--telnet-bind _ | Sets the host
to which the telnet service should be bound.| | _--telnet-port _ | Sets
the port to which the telnet service should be bound.| | -v, --_version_
| Print the version. |

= EXAMPLES

== Example: Simplest scenario

_openejb start_

That's it. The ejbd will start up and bind to IP 127.0.0.1 and port
4201.

The following properties would then be used to get an InitialContext
from the Remote Server.

[source,properties]
----
java.naming.factory.initial  =
----

org.apache.openejb.client.RemoteInitialContextFactory
java.naming.provider.url = ejbd://127.0.0.1:4201
java.naming.security.principal = myuser java.naming.security.credentials
= mypass

== Example: --conf=file

_openejb start --conf=C:-3.0.conf_

Sets the openejb.configuration system variable to the file _C:.conf_.
When the server starts up and initializes OpenEJB, this configuration
will be used to assemble the container system and load beans.

== Example: --local-copy

The local-copy option controls whether Remote interface arguments and
results are always copied.

_openejb start --local-copy=true_ (default)

Remote interface business method arguments and results are always copied
(via serialization), which is compliant with the EJB standard.

_openejb start --local-copy=false_

Remote interface business method arguments and results are copied only
when the client is in a different JVM. Otherwise, they are passed by
reference - as if it were a Local interface. This is faster, of course,
but non-compliant with the EJB standard.

Local interfaces are not affected; their arguments and results are
passed by reference and never copied.

== CONFIG OVERRIDE EXAMPLES

== Example: -D.bind=

_openejb start -Dejbd.bind=10.45.67.8_

This is the most common way to use the EJBd Server Service. The service
will start up and bind to IP 10.45.67.8 and port 4201. The following
properties would then be used to get an InitialContext from the EJBd
Server Service.

[source,properties]
----
   java.naming.factory.initial      =
----

org.apache.openejb.client.RemoteInitialContextFactory
java.naming.provider.url = ejbd://10.45.67.8:4201
java.naming.security.principal = myuser java.naming.security.credentials
= mypass

DNS names can also be used.

_openejb start -Dejbd.bind=myhost.foo.com_

The following properties would then be used to get an InitialContext
from the Remote Server.

[source,properties]
----
   java.naming.factory.initial      =
----

org.apache.openejb.client.RemoteInitialContextFactory
java.naming.provider.url = ejbd://myhost.foo.com:4201
java.naming.security.principal = myuser java.naming.security.credentials
= mypass

_openejb start -Dtelnet.bind=myhost.foo.com_

The following properties would then be used to log into the server via a
telnet client as such:

_telnet myhost.foo.com 4202_

== Example: -D.port=

_openejb start -Dejbd.port=8765_

The server will start up and bind to IP 127.0.0.1 and port 8765.

The following properties would then be used to get an InitialContext
from the Remote Server.

[source,properties]
----
   java.naming.factory.initial      =
----

org.apache.openejb.client.RemoteInitialContextFactory
java.naming.provider.url = ejbd://127.0.0.1:8765
java.naming.security.principal = myuser java.naming.security.credentials
= mypass

_openejb start -Dhttpejbd.port=8888_

The server will start up and the EJB over HTTP service will bind to IP
127.0.0.1 and port 8888.

The following properties would then be used to get an InitialContext
from the HTTP/Remote Server.

[source,properties]
----
   java.naming.factory.initial      =
----

org.apache.openejb.client.RemoteInitialContextFactory
java.naming.provider.url = http://127.0.0.1:8888/openejb
java.naming.security.principal = myuser java.naming.security.credentials
= mypass

== Example: -D.only_from=

_openejb start -Dadmin.only_from=192.168.1.12_

Adds 192.168.1.12 to the list of IP addresses that are authorized to
shutdown the server or access the server via a telnet client. The host
that this server was started on is always allowed to administer the
server.

Multiple hosts can be given administrative access to this server by
listing all the host names separated by commas as such:

_openejb start -Dadmin.only_from=192.168.1.12,joe.foo.com,robert_

The first host in the string names the host explicitly using an IP
address (192.168.1.12).

The second host uses a DNS name (joe.foo.com) to refer to the hosts IP
address. The DNS name will be resolved and the IP will be added to the
admin list.

The third address refers to a the host by a name (robert)that the
opperating system is able to resolve into a valid IP address. This is
usually done via a hosts file, interal DNS server, or Windows Domain
Server.

== Example: -D.threads=

_openejb start -Dejbd.threads=200_

Sets the max number of concurrent threads that can enter the EJBd Server
Service to 200.

== Example: -D.disabled=

_openejb start -Dtelnet.disabled=true_

Prevents the Telnet Server Service from starting when the OpenEJB Server
starts.

= CONSOLE OUTPUT

Once you start OpenEJB using the _openejb start_ command the following
output will be seen on the console

[source,properties]
----
Apache OpenEJB 3.0    build: 20070825-01:10
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!
