Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 947660 Details for
Bug 1146427
Issues in readme for app-client quickstart
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
EAP 6.4 DR5 build of the app-client README.html file
README.html (text/html), 25.27 KB, created by
sgilda
on 2014-10-16 15:05:18 UTC
(
hide
)
Description:
EAP 6.4 DR5 build of the app-client README.html file
Filename:
MIME Type:
Creator:
sgilda
Created:
2014-10-16 15:05:18 UTC
Size:
25.27 KB
patch
obsolete
><!DOCTYPE html><html><head><title>README</title><link href="http://www.jboss.org/jdf/stylesheets/documentation.css" rel="stylesheet"></link><link href="http://www.jboss.org/jdf/stylesheets/pygments.css" rel="stylesheet"></link></head><body> ><h1><a id="appclient-application-client-to-run-with-the-jboss-eap-appclient-container" class="anchor" href="#appclient-application-client-to-run-with-the-jboss-eap-appclient-container"><span class="anchor-icon"></span></a>app-client: Application Client to run with the JBoss EAP appclient container</h1> > ><p>Author: Wolf-Dieter Fink<br/> >Level: Intermediate<br/> >Technologies: EJB, EAR, AppClient<br/> >Summary: Shows how to use the JBoss EAP application client container to support injection<br/> >Target Product: EAP<br/> >Product Versions: EAP 6.1, EAP 6.2, EAP 6.3, EAP 6.4<br/> >Source: <a href="https://github.com/jboss-developer/jboss-eap-quickstarts/">https://github.com/jboss-developer/jboss-eap-quickstarts/</a> </p> > ><h2><a id="what-is-it" class="anchor" href="#what-is-it"><span class="anchor-icon"></span></a>What is it?</h2> > ><p>This quickstart demonstrates how to use the JBoss EAP client container to start the client ‘Main’ program and provide Dependency Injections (DI) for client applications. It also shows you how to use Maven to package the application according to the JavaEE specification.</p> > ><p>This example consists of the following Maven projects, each with a shared parent:</p> > ><table><thead> ><tr> ><th align="left"><strong>Sub-project</strong></th> ><th align="left"><strong>Description</strong></th> ></tr> ></thead><tbody> ><tr> ><td align="left"><code>ejb</code></td> ><td align="left">An application that can be called by the <code>client</code>.</td> ></tr> ><tr> ><td align="left"><code>ear</code></td> ><td align="left">The EAR packaging contains the server and client side.</td> ></tr> ><tr> ><td align="left"><code>client-simple</code></td> ><td align="left">A simple client application for running in the application-client container to show the injection</td> ></tr> ></tbody></table> > ><p>The root <code>pom.xml</code> file builds each of the subprojects in the appropriate order.</p> > ><h2><a id="system-requirements" class="anchor" href="#system-requirements"><span class="anchor-icon"></span></a>System requirements</h2> > ><p>The application this project produces is designed to be run on Red Hat JBoss Enterprise Application Platform 6.1 or later.</p> > ><p>All you need to build this project is Java 6.0 (Java SDK 1.6) or later, Maven 3.0 or later.</p> > ><h2><a id="configure-maven" class="anchor" href="#configure-maven"><span class="anchor-icon"></span></a>Configure Maven</h2> > ><p>If you have not yet done so, you must <a href="https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CONFIGURE_MAVEN.md#configure-maven-to-build-and-deploy-the-quickstarts">Configure Maven</a> before testing the quickstarts.</p> > ><h2><a id="add-the-application-users" class="anchor" href="#add-the-application-users"><span class="anchor-icon"></span></a>Add the Application Users</h2> > ><p>If the client and server are run on different hosts, you must add the following users to the JBoss EAP server side application. Be sure to use the names and passwords specified in the table as they are required to run this example.</p> > ><table><thead> ><tr> ><th align="left"><strong>UserName</strong></th> ><th align="left"><strong>Realm</strong></th> ><th align="left"><strong>Password</strong></th> ><th align="left"><strong>Roles</strong></th> ></tr> ></thead><tbody> ><tr> ><td align="left">admin</td> ><td align="left">ManagementRealm</td> ><td align="left">admin-123</td> ><td align="left"><em>leave blank for none</em></td> ></tr> ><tr> ><td align="left">quickuser</td> ><td align="left">ApplicationRealm</td> ><td align="left">quick-123</td> ><td align="left"><em>leave blank for none</em></td> ></tr> ></tbody></table> > ><p>To add the users, open a command prompt and type the following commands:</p> ><div class="highlight"><pre> <span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> > <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span> <span class="o">-</span><span class="n">p</span> <span class="n">admin</span><span class="o">-</span><span class="mi">123</span> > <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">a</span> <span class="o">-</span><span class="n">u</span> <span class="n">quickuser</span> <span class="o">-</span><span class="n">p</span> <span class="n">quick</span><span class="o">-</span><span class="mi">123</span> > > <span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> > <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span> <span class="o">-</span><span class="n">p</span> <span class="n">admin</span><span class="o">-</span><span class="mi">123</span> > <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">bat</span> <span class="o">-</span><span class="n">a</span> <span class="o">-</span><span class="n">u</span> <span class="n">quickuser</span> <span class="o">-</span><span class="n">p</span> <span class="n">quick</span><span class="o">-</span><span class="mi">123</span> ></pre></div> ><p>If you prefer, you can use the add-user utility interactively. For an example of how to use the add-user utility, see instructions in the root README file located here: <a href="https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CREATE_USERS.md#add-an-application-user">Add an Application User</a>.</p> > ><h2><a id="start-the-jboss-eap-server" class="anchor" href="#start-the-jboss-eap-server"><span class="anchor-icon"></span></a>Start the JBoss EAP Server</h2> > ><ol> ><li>Open a command prompt and navigate to the root of the JBoss EAP directory.</li> ><li><p>The following shows the command line to start the server:</p> ><div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">standalone</span><span class="p">.</span><span class="n">sh</span> ><span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">standalone</span><span class="p">.</span><span class="n">bat</span> ></pre></div></li> ></ol> > ><h2><a id="build-and-deploy-the-quickstart" class="anchor" href="#build-and-deploy-the-quickstart"><span class="anchor-icon"></span></a>Build and Deploy the Quickstart</h2> > ><p><em>NOTE: The following build command assumes you have configured your Maven user settings. If you have not, you must include Maven setting arguments on the command line. See <a href="../README.html#buildanddeploy">Build and Deploy the Quickstarts</a> for complete instructions and additional options.</em></p> > ><ol> ><li>Make sure you have started the JBoss Server as described above.</li> ><li>Open a command prompt and navigate to the root directory of this quickstart.</li> ><li><p>Type this command to build the artifacts:</p> ><div class="highlight"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">deploy</span> ></pre></div></li> ></ol> > ><h2><a id="access-the-remote-client-application-from-the-same-machine" class="anchor" href="#access-the-remote-client-application-from-the-same-machine"><span class="anchor-icon"></span></a>Access the Remote Client Application from the same machine</h2> > ><p>This example shows how to invoke an EJB from a remote standalone application on the same machine. Both the client and server are on the same machine, so the defaults are sufficient and no authentication is necessary.</p> > ><ol> ><li>Be sure the quickstart deployed successfully as described above.</li> ><li><p>Navigate to the root directory of this quickstart and type the following command to run the application. Be sure to replace <code>EAP_HOME</code> with the path to your JBoss EAP installation.</p> ><div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="n">ear</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> ><span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="n">ear</span><span class="err">\</span><span class="n">target</span><span class="err">\</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> ></pre></div></li> ><li><p>Review the result. The client outputs the following information provided by the server application:</p> ><div class="highlight"><pre><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) Main started with arguments</span> ><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) </span><span class="cp">[</span><span class="nx">Hello</span><span class="p">,</span> <span class="nx">from</span><span class="p">,</span> <span class="nx">command</span><span class="p">,</span> <span class="nx">line</span><span class="cp">]</span><span class="x"></span> ><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-##) Hello from StatelessSessionBean@myhost</span> ></pre></div> ><p>This output shows that the <code>ServerApplication</code> is called at the jboss.node <code>myhost</code>. >The application client connected automatically a server on the same machine.</p></li> ><li><p>Review the server log files to see the bean invocations on the server.</p> ><div class="highlight"><pre> <span class="n">ClientContext</span> <span class="n">is</span> <span class="n">here</span> <span class="o">=</span> <span class="p">{</span><span class="n">Client</span><span class="o">=</span><span class="n">myhost</span><span class="p">}</span> ></pre></div></li> ></ol> > ><h2><a id="access-the-remote-client-application-from-a-different-machine" class="anchor" href="#access-the-remote-client-application-from-a-different-machine"><span class="anchor-icon"></span></a>Access the Remote Client Application from a different machine</h2> > ><p>This example shows how to invoke an EJB from a remote standalone Java EE application on a different machine. In this case, the client needs to define a properties file to define properties to connect and authenticate to the server. The properties file is passed on the command line using the “–ejb-client-properties” argument.</p> > ><h3><a id="configure-machine1-remote-server-machine" class="anchor" href="#configure-machine1-remote-server-machine"><span class="anchor-icon"></span></a>Configure Machine_1 (Remote Server Machine)</h3> > ><ol> ><li>Install JBoss EAP on this machine.</li> ><li>Add the application users to the JBoss EAP server on this machine as described above.</li> ><li><p>Start the JBoss EAP server with the following command. Be sure to replace <code>MACHINE_1_IP_ADDRESS</code> with the IP address of this machine. These arguments make the server accessible to the network. </p> ><div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">standalone</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">b</span> <span class="n">MACHINE_1_IP_ADDRESS</span> <span class="o">-</span><span class="n">bmanagement</span> <span class="n">MACHINE_1_IP_ADDRESS</span> ><span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">standalone</span><span class="p">.</span><span class="n">bat</span> <span class="o">-</span><span class="n">b</span> <span class="n">MACHINE_1_IP_ADDRESS</span> <span class="o">-</span><span class="n">bmanagement</span> <span class="n">MACHINE_1_IP_ADDRESS</span> ></pre></div></li> ></ol> > ><h3><a id="configure-machine2-local-client-machine" class="anchor" href="#configure-machine2-local-client-machine"><span class="anchor-icon"></span></a>Configure Machine_2 (Local Client Machine)</h3> > ><ol> ><li>Install JBoss EAP on this server. There is no need to add the application users to this server.</li> ><li>Download the <code>app-client</code> quickstart to this machine. </li> ><li><p>Create a <code>jboss-ejb-client.properties</code> file. This file can be located anywhere in the file system, but for ease of demonstration, we create it in the root directory of this quickstart. Add the following content, replacing <code>MACHINE_1_IP_ADDRESS</code> with the IP address of <code>Machine_1</code>.</p> ><div class="highlight"><pre><span class="n">remote</span><span class="p">.</span><span class="n">connectionprovider</span><span class="p">.</span><span class="n">create</span><span class="p">.</span><span class="n">options</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">xnio</span><span class="p">.</span><span class="n">Options</span><span class="p">.</span><span class="n">SSL_ENABLED</span><span class="o">=</span><span class="nb">false</span> ><span class="n">remote</span><span class="p">.</span><span class="n">connections</span><span class="o">=</span><span class="k">default</span> ><span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">host</span><span class="o">=</span><span class="n">MACHINE_1_IP_ADDRESS</span> ><span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">port</span><span class="o">=</span><span class="mi">4447</span> ><span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">connect</span><span class="p">.</span><span class="n">options</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">xnio</span><span class="p">.</span><span class="n">Options</span><span class="p">.</span><span class="n">SASL_POLICY_NOANONYMOUS</span><span class="o">=</span><span class="nb">false</span> ><span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">username</span><span class="o">=</span><span class="n">quickuser</span> ><span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">password</span><span class="o">=</span><span class="n">quickuser</span><span class="o">-</span><span class="mi">123</span> ></pre></div></li> ><li><p>Open a command prompt and navigate to the root directory of the quickstart.</p></li> ><li><p>Deploy the <code>app-client</code> quickstart to the remote machine using the following command:</p> ><div class="highlight"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">deploy</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">hostname</span><span class="o">=</span><span class="n">MACHINE_1_IP_ADDRESS</span> <span class="p">[</span><span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">port</span><span class="o">=</span><span class="mi">9099</span><span class="p">]</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">username</span><span class="o">=</span><span class="n">admin</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">password</span><span class="o">=</span><span class="n">admin</span><span class="o">-</span><span class="mi">123</span> ></pre></div></li> ><li><p>Be sure that the quickstart deployed successfully and the server is running on <code>Machine_1</code> as described above.</p></li> ><li><p>Type this command to run the <code>app-client</code> application:</p> ><div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="o">--</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="n">properties</span><span class="o">=</span><span class="n">jboss</span><span class="o">-</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">properties</span> <span class="n">ear</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> ><span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="o">--</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="n">properties</span><span class="o">=</span><span class="n">jboss</span><span class="o">-</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">properties</span> <span class="n">ear</span><span class="err">\</span><span class="n">target</span><span class="err">\</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> ></pre></div></li> ><li><p>Review the result. The client outputs the following information, which was provided by the application:</p> ><div class="highlight"><pre><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) Main started with arguments</span> ><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) </span><span class="cp">[</span><span class="nx">Hello</span><span class="p">,</span> <span class="nx">from</span><span class="p">,</span> <span class="nx">command</span><span class="p">,</span> <span class="nx">line</span><span class="cp">]</span><span class="x"></span> ><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-##) Hello from StatelessSessionBean@theOtherHOST</span> ></pre></div> ><p>This output shows that the <code>ServerApplication</code> is called at the jboss.node <code>theOtherHOST</code>.</p></li> ><li><p>Review the server log files on the remote machine to see the bean invocations on the server.</p> ><div class="highlight"><pre> <span class="n">ClientContext</span> <span class="n">is</span> <span class="n">here</span> <span class="o">=</span> <span class="p">{</span><span class="n">Client</span><span class="o">=</span><span class="n">myhost</span><span class="p">}</span> ></pre></div> ><p>As shown above, the connected server(s) can be configured using the properties file. It is also possible to connect multiple servers >or a cluster using the same <code>jboss-ejb-client.properties</code> file.</p></li> ></ol> > ><h2><a id="undeploy-the-archive-from-the-local-machine" class="anchor" href="#undeploy-the-archive-from-the-local-machine"><span class="anchor-icon"></span></a>Undeploy the Archive from the Local machine</h2> > ><p>Follow these instructions if you are testing the quickstart on the same machine.</p> > ><ol> ><li>Make sure you have started the JBoss Server on the machine where the quickstart is deployed as described above.</li> ><li>Open a command prompt on that server and navigate to the root directory of this quickstart.</li> ><li><p>When you are finished testing, type this command to undeploy the archive from the local machine.</p> ><div class="highlight"><pre><span class="n">mvn</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">undeploy</span> ></pre></div></li> ></ol> > ><h2><a id="undeploy-the-archive-from-the-remote-machine" class="anchor" href="#undeploy-the-archive-from-the-remote-machine"><span class="anchor-icon"></span></a>Undeploy the Archive from the Remote Machine</h2> > ><p>Follow these instructions if you are testing the quickstart on a diffent machine.</p> > ><ol> ><li>Make sure you have started the JBoss Server on the remote server machine, <code>Machine_1</code>, where the quickstart is deployed as described above.</li> ><li>Open a command prompt on the local client machine, <code>Machine_2</code>, and navigate to the root directory of this quickstart.</li> ><li><p>When you are finished testing, type this command to undeploy the archive from the remote server machine, <code>Machine_1</code>.</p> ><div class="highlight"><pre><span class="n">mvn</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">undeploy</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">hostname</span><span class="o">=</span><span class="n">MACHINE_1_IP_ADDRESS</span> <span class="p">[</span><span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">port</span><span class="o">=</span><span class="mi">9099</span><span class="p">]</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">username</span><span class="o">=</span><span class="n">admin</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">password</span><span class="o">=</span><span class="n">admin</span><span class="o">-</span><span class="mi">123</span> ></pre></div></li> ></ol> ></body></html>
<!DOCTYPE html><html><head><title>README</title><link href="http://www.jboss.org/jdf/stylesheets/documentation.css" rel="stylesheet"></link><link href="http://www.jboss.org/jdf/stylesheets/pygments.css" rel="stylesheet"></link></head><body> <h1><a id="appclient-application-client-to-run-with-the-jboss-eap-appclient-container" class="anchor" href="#appclient-application-client-to-run-with-the-jboss-eap-appclient-container"><span class="anchor-icon"></span></a>app-client: Application Client to run with the JBoss EAP appclient container</h1> <p>Author: Wolf-Dieter Fink<br/> Level: Intermediate<br/> Technologies: EJB, EAR, AppClient<br/> Summary: Shows how to use the JBoss EAP application client container to support injection<br/> Target Product: EAP<br/> Product Versions: EAP 6.1, EAP 6.2, EAP 6.3, EAP 6.4<br/> Source: <a href="https://github.com/jboss-developer/jboss-eap-quickstarts/">https://github.com/jboss-developer/jboss-eap-quickstarts/</a> </p> <h2><a id="what-is-it" class="anchor" href="#what-is-it"><span class="anchor-icon"></span></a>What is it?</h2> <p>This quickstart demonstrates how to use the JBoss EAP client container to start the client ‘Main’ program and provide Dependency Injections (DI) for client applications. It also shows you how to use Maven to package the application according to the JavaEE specification.</p> <p>This example consists of the following Maven projects, each with a shared parent:</p> <table><thead> <tr> <th align="left"><strong>Sub-project</strong></th> <th align="left"><strong>Description</strong></th> </tr> </thead><tbody> <tr> <td align="left"><code>ejb</code></td> <td align="left">An application that can be called by the <code>client</code>.</td> </tr> <tr> <td align="left"><code>ear</code></td> <td align="left">The EAR packaging contains the server and client side.</td> </tr> <tr> <td align="left"><code>client-simple</code></td> <td align="left">A simple client application for running in the application-client container to show the injection</td> </tr> </tbody></table> <p>The root <code>pom.xml</code> file builds each of the subprojects in the appropriate order.</p> <h2><a id="system-requirements" class="anchor" href="#system-requirements"><span class="anchor-icon"></span></a>System requirements</h2> <p>The application this project produces is designed to be run on Red Hat JBoss Enterprise Application Platform 6.1 or later.</p> <p>All you need to build this project is Java 6.0 (Java SDK 1.6) or later, Maven 3.0 or later.</p> <h2><a id="configure-maven" class="anchor" href="#configure-maven"><span class="anchor-icon"></span></a>Configure Maven</h2> <p>If you have not yet done so, you must <a href="https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CONFIGURE_MAVEN.md#configure-maven-to-build-and-deploy-the-quickstarts">Configure Maven</a> before testing the quickstarts.</p> <h2><a id="add-the-application-users" class="anchor" href="#add-the-application-users"><span class="anchor-icon"></span></a>Add the Application Users</h2> <p>If the client and server are run on different hosts, you must add the following users to the JBoss EAP server side application. Be sure to use the names and passwords specified in the table as they are required to run this example.</p> <table><thead> <tr> <th align="left"><strong>UserName</strong></th> <th align="left"><strong>Realm</strong></th> <th align="left"><strong>Password</strong></th> <th align="left"><strong>Roles</strong></th> </tr> </thead><tbody> <tr> <td align="left">admin</td> <td align="left">ManagementRealm</td> <td align="left">admin-123</td> <td align="left"><em>leave blank for none</em></td> </tr> <tr> <td align="left">quickuser</td> <td align="left">ApplicationRealm</td> <td align="left">quick-123</td> <td align="left"><em>leave blank for none</em></td> </tr> </tbody></table> <p>To add the users, open a command prompt and type the following commands:</p> <div class="highlight"><pre> <span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span> <span class="o">-</span><span class="n">p</span> <span class="n">admin</span><span class="o">-</span><span class="mi">123</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">a</span> <span class="o">-</span><span class="n">u</span> <span class="n">quickuser</span> <span class="o">-</span><span class="n">p</span> <span class="n">quick</span><span class="o">-</span><span class="mi">123</span> <span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">u</span> <span class="n">admin</span> <span class="o">-</span><span class="n">p</span> <span class="n">admin</span><span class="o">-</span><span class="mi">123</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">add</span><span class="o">-</span><span class="n">user</span><span class="p">.</span><span class="n">bat</span> <span class="o">-</span><span class="n">a</span> <span class="o">-</span><span class="n">u</span> <span class="n">quickuser</span> <span class="o">-</span><span class="n">p</span> <span class="n">quick</span><span class="o">-</span><span class="mi">123</span> </pre></div> <p>If you prefer, you can use the add-user utility interactively. For an example of how to use the add-user utility, see instructions in the root README file located here: <a href="https://github.com/jboss-developer/jboss-developer-shared-resources/blob/master/guides/CREATE_USERS.md#add-an-application-user">Add an Application User</a>.</p> <h2><a id="start-the-jboss-eap-server" class="anchor" href="#start-the-jboss-eap-server"><span class="anchor-icon"></span></a>Start the JBoss EAP Server</h2> <ol> <li>Open a command prompt and navigate to the root of the JBoss EAP directory.</li> <li><p>The following shows the command line to start the server:</p> <div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">standalone</span><span class="p">.</span><span class="n">sh</span> <span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">standalone</span><span class="p">.</span><span class="n">bat</span> </pre></div></li> </ol> <h2><a id="build-and-deploy-the-quickstart" class="anchor" href="#build-and-deploy-the-quickstart"><span class="anchor-icon"></span></a>Build and Deploy the Quickstart</h2> <p><em>NOTE: The following build command assumes you have configured your Maven user settings. If you have not, you must include Maven setting arguments on the command line. See <a href="../README.html#buildanddeploy">Build and Deploy the Quickstarts</a> for complete instructions and additional options.</em></p> <ol> <li>Make sure you have started the JBoss Server as described above.</li> <li>Open a command prompt and navigate to the root directory of this quickstart.</li> <li><p>Type this command to build the artifacts:</p> <div class="highlight"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">deploy</span> </pre></div></li> </ol> <h2><a id="access-the-remote-client-application-from-the-same-machine" class="anchor" href="#access-the-remote-client-application-from-the-same-machine"><span class="anchor-icon"></span></a>Access the Remote Client Application from the same machine</h2> <p>This example shows how to invoke an EJB from a remote standalone application on the same machine. Both the client and server are on the same machine, so the defaults are sufficient and no authentication is necessary.</p> <ol> <li>Be sure the quickstart deployed successfully as described above.</li> <li><p>Navigate to the root directory of this quickstart and type the following command to run the application. Be sure to replace <code>EAP_HOME</code> with the path to your JBoss EAP installation.</p> <div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="n">ear</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> <span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="n">ear</span><span class="err">\</span><span class="n">target</span><span class="err">\</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> </pre></div></li> <li><p>Review the result. The client outputs the following information provided by the server application:</p> <div class="highlight"><pre><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) Main started with arguments</span> <span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) </span><span class="cp">[</span><span class="nx">Hello</span><span class="p">,</span> <span class="nx">from</span><span class="p">,</span> <span class="nx">command</span><span class="p">,</span> <span class="nx">line</span><span class="cp">]</span><span class="x"></span> <span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-##) Hello from StatelessSessionBean@myhost</span> </pre></div> <p>This output shows that the <code>ServerApplication</code> is called at the jboss.node <code>myhost</code>. The application client connected automatically a server on the same machine.</p></li> <li><p>Review the server log files to see the bean invocations on the server.</p> <div class="highlight"><pre> <span class="n">ClientContext</span> <span class="n">is</span> <span class="n">here</span> <span class="o">=</span> <span class="p">{</span><span class="n">Client</span><span class="o">=</span><span class="n">myhost</span><span class="p">}</span> </pre></div></li> </ol> <h2><a id="access-the-remote-client-application-from-a-different-machine" class="anchor" href="#access-the-remote-client-application-from-a-different-machine"><span class="anchor-icon"></span></a>Access the Remote Client Application from a different machine</h2> <p>This example shows how to invoke an EJB from a remote standalone Java EE application on a different machine. In this case, the client needs to define a properties file to define properties to connect and authenticate to the server. The properties file is passed on the command line using the “–ejb-client-properties” argument.</p> <h3><a id="configure-machine1-remote-server-machine" class="anchor" href="#configure-machine1-remote-server-machine"><span class="anchor-icon"></span></a>Configure Machine_1 (Remote Server Machine)</h3> <ol> <li>Install JBoss EAP on this machine.</li> <li>Add the application users to the JBoss EAP server on this machine as described above.</li> <li><p>Start the JBoss EAP server with the following command. Be sure to replace <code>MACHINE_1_IP_ADDRESS</code> with the IP address of this machine. These arguments make the server accessible to the network. </p> <div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">standalone</span><span class="p">.</span><span class="n">sh</span> <span class="o">-</span><span class="n">b</span> <span class="n">MACHINE_1_IP_ADDRESS</span> <span class="o">-</span><span class="n">bmanagement</span> <span class="n">MACHINE_1_IP_ADDRESS</span> <span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">standalone</span><span class="p">.</span><span class="n">bat</span> <span class="o">-</span><span class="n">b</span> <span class="n">MACHINE_1_IP_ADDRESS</span> <span class="o">-</span><span class="n">bmanagement</span> <span class="n">MACHINE_1_IP_ADDRESS</span> </pre></div></li> </ol> <h3><a id="configure-machine2-local-client-machine" class="anchor" href="#configure-machine2-local-client-machine"><span class="anchor-icon"></span></a>Configure Machine_2 (Local Client Machine)</h3> <ol> <li>Install JBoss EAP on this server. There is no need to add the application users to this server.</li> <li>Download the <code>app-client</code> quickstart to this machine. </li> <li><p>Create a <code>jboss-ejb-client.properties</code> file. This file can be located anywhere in the file system, but for ease of demonstration, we create it in the root directory of this quickstart. Add the following content, replacing <code>MACHINE_1_IP_ADDRESS</code> with the IP address of <code>Machine_1</code>.</p> <div class="highlight"><pre><span class="n">remote</span><span class="p">.</span><span class="n">connectionprovider</span><span class="p">.</span><span class="n">create</span><span class="p">.</span><span class="n">options</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">xnio</span><span class="p">.</span><span class="n">Options</span><span class="p">.</span><span class="n">SSL_ENABLED</span><span class="o">=</span><span class="nb">false</span> <span class="n">remote</span><span class="p">.</span><span class="n">connections</span><span class="o">=</span><span class="k">default</span> <span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">host</span><span class="o">=</span><span class="n">MACHINE_1_IP_ADDRESS</span> <span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">port</span><span class="o">=</span><span class="mi">4447</span> <span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">connect</span><span class="p">.</span><span class="n">options</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">xnio</span><span class="p">.</span><span class="n">Options</span><span class="p">.</span><span class="n">SASL_POLICY_NOANONYMOUS</span><span class="o">=</span><span class="nb">false</span> <span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">username</span><span class="o">=</span><span class="n">quickuser</span> <span class="n">remote</span><span class="p">.</span><span class="n">connection</span><span class="p">.</span><span class="k">default</span><span class="p">.</span><span class="n">password</span><span class="o">=</span><span class="n">quickuser</span><span class="o">-</span><span class="mi">123</span> </pre></div></li> <li><p>Open a command prompt and navigate to the root directory of the quickstart.</p></li> <li><p>Deploy the <code>app-client</code> quickstart to the remote machine using the following command:</p> <div class="highlight"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">deploy</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">hostname</span><span class="o">=</span><span class="n">MACHINE_1_IP_ADDRESS</span> <span class="p">[</span><span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">port</span><span class="o">=</span><span class="mi">9099</span><span class="p">]</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">username</span><span class="o">=</span><span class="n">admin</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">password</span><span class="o">=</span><span class="n">admin</span><span class="o">-</span><span class="mi">123</span> </pre></div></li> <li><p>Be sure that the quickstart deployed successfully and the server is running on <code>Machine_1</code> as described above.</p></li> <li><p>Type this command to run the <code>app-client</code> application:</p> <div class="highlight"><pre><span class="n">For</span> <span class="n">Linux</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="o">--</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="n">properties</span><span class="o">=</span><span class="n">jboss</span><span class="o">-</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">properties</span> <span class="n">ear</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> <span class="n">For</span> <span class="n">Windows</span><span class="o">:</span> <span class="n">EAP_HOME</span><span class="err">\</span><span class="n">bin</span><span class="err">\</span><span class="n">appclient</span><span class="p">.</span><span class="n">sh</span> <span class="o">--</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="o">-</span><span class="n">properties</span><span class="o">=</span><span class="n">jboss</span><span class="o">-</span><span class="n">ejb</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">properties</span> <span class="n">ear</span><span class="err">\</span><span class="n">target</span><span class="err">\</span><span class="n">jboss</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">client</span><span class="p">.</span><span class="n">ear</span><span class="err">#</span><span class="n">simpleClient</span><span class="p">.</span><span class="n">jar</span> <span class="n">Hello</span> <span class="n">from</span> <span class="n">command</span> <span class="n">line</span> </pre></div></li> <li><p>Review the result. The client outputs the following information, which was provided by the application:</p> <div class="highlight"><pre><span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) Main started with arguments</span> <span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-51) </span><span class="cp">[</span><span class="nx">Hello</span><span class="p">,</span> <span class="nx">from</span><span class="p">,</span> <span class="nx">command</span><span class="p">,</span> <span class="nx">line</span><span class="cp">]</span><span class="x"></span> <span class="cp">[</span><span class="nx">org.jboss.as.quickstarts.appclient.acc.client.Main</span><span class="cp">]</span><span class="x"> (Thread-##) Hello from StatelessSessionBean@theOtherHOST</span> </pre></div> <p>This output shows that the <code>ServerApplication</code> is called at the jboss.node <code>theOtherHOST</code>.</p></li> <li><p>Review the server log files on the remote machine to see the bean invocations on the server.</p> <div class="highlight"><pre> <span class="n">ClientContext</span> <span class="n">is</span> <span class="n">here</span> <span class="o">=</span> <span class="p">{</span><span class="n">Client</span><span class="o">=</span><span class="n">myhost</span><span class="p">}</span> </pre></div> <p>As shown above, the connected server(s) can be configured using the properties file. It is also possible to connect multiple servers or a cluster using the same <code>jboss-ejb-client.properties</code> file.</p></li> </ol> <h2><a id="undeploy-the-archive-from-the-local-machine" class="anchor" href="#undeploy-the-archive-from-the-local-machine"><span class="anchor-icon"></span></a>Undeploy the Archive from the Local machine</h2> <p>Follow these instructions if you are testing the quickstart on the same machine.</p> <ol> <li>Make sure you have started the JBoss Server on the machine where the quickstart is deployed as described above.</li> <li>Open a command prompt on that server and navigate to the root directory of this quickstart.</li> <li><p>When you are finished testing, type this command to undeploy the archive from the local machine.</p> <div class="highlight"><pre><span class="n">mvn</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">undeploy</span> </pre></div></li> </ol> <h2><a id="undeploy-the-archive-from-the-remote-machine" class="anchor" href="#undeploy-the-archive-from-the-remote-machine"><span class="anchor-icon"></span></a>Undeploy the Archive from the Remote Machine</h2> <p>Follow these instructions if you are testing the quickstart on a diffent machine.</p> <ol> <li>Make sure you have started the JBoss Server on the remote server machine, <code>Machine_1</code>, where the quickstart is deployed as described above.</li> <li>Open a command prompt on the local client machine, <code>Machine_2</code>, and navigate to the root directory of this quickstart.</li> <li><p>When you are finished testing, type this command to undeploy the archive from the remote server machine, <code>Machine_1</code>.</p> <div class="highlight"><pre><span class="n">mvn</span> <span class="n">jboss</span><span class="o">-</span><span class="n">as</span><span class="o">:</span><span class="n">undeploy</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">hostname</span><span class="o">=</span><span class="n">MACHINE_1_IP_ADDRESS</span> <span class="p">[</span><span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">port</span><span class="o">=</span><span class="mi">9099</span><span class="p">]</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">username</span><span class="o">=</span><span class="n">admin</span> <span class="o">-</span><span class="n">Djboss</span><span class="o">-</span><span class="n">as</span><span class="p">.</span><span class="n">password</span><span class="o">=</span><span class="n">admin</span><span class="o">-</span><span class="mi">123</span> </pre></div></li> </ol> </body></html>
View Attachment As Raw
Actions:
View
Attachments on
bug 1146427
: 947660