| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <title>Creating and Running an Application Client on the GlassFish Server</title> |
| <meta name="description" |
| content="A tutorial on how to use NetBeans IDE to develop and deploy an enterprise application client to GlassFish Server 3."> |
| <link rel="stylesheet" href="../../../netbeans.css"> |
| <meta name="author" content="ken ganfield"> |
| </head> |
| <body> |
| <!-- Begin Content Area --> |
| <h1>Creating and Running an Application Client on the GlassFish Server</h1> |
| |
| <p>This tutorial shows how to create a simple application client and access an Enterprise JavaBean (EJB) |
| deployed to GlassFish server 3. |
| In this tutorial you will first create an enterprise applications that contains a simple session bean and |
| a Java class library project that contains a remote interface for the session bean. |
| You will then create an application client that accesses the session bean through the remote interface in the class library. |
| The class library JAR that contains the remote interface is |
| added to the classpath of the enterprise application and the application client.</p> |
| |
| |
| |
| |
| <p><b>Tutorial Exercises</b></p> |
| <img src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" class="stamp" alt="Content on this page applies to NetBeans IDE 7.2, 7.3, 7.4 and 8.0" title="Content on this page applies to the NetBeans IDE 7.2, 7.3, 7.4 and 8.0" > |
| <ul> |
| <li><a href="#Exercise_10">Creating the Java Class Library</a></li> |
| <li><a href="#Exercise_20">Creating an EJB Module</a> |
| <ul> |
| <li><a href="#Exercise_22">Creating the Session Bean</a></li> |
| <li><a href="#Exercise_23">Adding a Business Method</a></li> |
| <li><a href="#Exercise_24">Deploying the Enterprise Application</a></li> |
| </ul> |
| </li> |
| <li><a href="#Exercise_30">Creating the Application Client</a> |
| <ul> |
| <li><a href="#Exercise_32">Adding the Class Library</a></li> |
| </ul> |
| </li> |
| <li><a href="#Exercise_30">Running the Application Client</a></li> |
| <!--<li><a href="#Exercise_40">Downloading the Solution Project</a></li>--> |
| </ul> |
| |
| |
| |
| <p><b>To follow this tutorial, you need the following software and resources.</b></p> |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Software or Resource</th> |
| <th class="tblheader" scope="col">Version Required</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td> |
| <td class="tbltd1">7.2, 7.3, 7.4, 8.0, Java EE version</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit (JDK)</a></td> |
| <td class="tbltd1">version 7 or 8</td> |
| </tr> |
| <tr> |
| <td class="tbltd1">GlassFish Server Open Source Edition</td> |
| <td class="tbltd1">3.x, 4.x</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| |
| <p><b>Prerequisites</b></p> |
| <p>This document assumes you have some basic knowledge of, or programming experience with, the following technologies:</p> |
| <ul> |
| <li>Java Programming</li> |
| <li>NetBeans IDE</li> |
| </ul> |
| <p class="tips">You can download <a href="https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/EntAppClientEE6.zip">a zip archive of the finished project</a>. |
| If you are using GlassFish 3.0 use <a href="https://netbeans.org/projects/samples/downloads/download/NetBeans%20IDE%206.8/JavaEE/entappclient.zip">the zip archive for the NetBeans IDE 6.8 project.</a></p> |
| |
| |
| |
| <!-- ===================================================================================== --> |
| |
| |
| <a name="Exercise_10"></a> |
| <h2>Creating the Java Class Library</h2> |
| <p>In this section you will create a Java Class Library project that |
| will contain the remote interface for the EJB. |
| The remote interface behaves as an API for the EJB that is used by clients |
| to communicate with the EJB.</p> |
| |
| <p>The library JAR is easy to distribute to any clients that may need to call the EJB. |
| Clients that want to access the EJB only need to add the library JAR to the project classpath. |
| The EJB implementation uses the same JAR to implement the interface.</p> |
| |
| |
| |
| <!--appclient runs locally on client and if it needs to communicate with an EJB on server then |
| EJB must have Remote interface which appclient will use. |
| .... something like that followed by |
| "so let's start with creating class lib project"--> |
| |
| <ol> |
| <li>Choose File > New Project (Ctrl-Shift-N; ⌘-Shift-N on Mac) and select Java Class Library in the Java category. Click Next.</li> |
| <li>Type <strong>EJBRemoteInterface</strong> for the Project Name. Click Finish. </li> |
| </ol> |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-newclasslibrary.png" alt="screenshot of New Class Library project wizard" title="New Class Library project wizard" class="margin-around b-all"/> |
| |
| <p>When you click Finish, the IDE creates a Java Class Library project. |
| In the next section you will create a Java EE enterprise application and an EJB module. |
| You will then use a wizard to create a session bean and the remote interface for your session bean in |
| the Class Library project. |
| The application client will access the session bean via the interface in the class library.</p> |
| |
| |
| |
| <a name="Exercise_20"></a> |
| <h2>Creating an EJB Module</h2> |
| <p>In this section you will create an enterprise application and an EJB module. |
| When you create an EJB, the EJB should be created as part of an enterprise application and packaged as an EAR archive |
| and deployed in to the server.</p> |
| |
| <div class="indent"> |
| <a name="Exercise_21"></a> |
| <h3>Creating the Enterprise Application</h3> |
| <p>In this section you will use the New Project wizard to create an enterprise application containing an EJB module. |
| The wizard provides an option to create an EJB module when you create the application. |
| </p> |
| |
| <ol> |
| <li>Choose File > New Project and select Enterprise Application in the Java EE category. Click Next.</li> |
| <li>Type <strong>EntAppEJB</strong> for the Project Name. Click Next.</li> |
| <li>Select GlassFish Server for the Server.</li> |
| <li>Confirm that Create EJB Module is selected and deselect Create Web Application Module. Click Finish. </li> |
| </ol> |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-newentappejb.png" alt="screenshot of New Enterprise Application wizard" title="Create EJB Module is selected in the New Enterprise Application wizard" class="margin-around b-all"/> |
| |
| <p>When you click Finish, the IDE creates an enterprise application and an EJB module. |
| In the Projects window, you can see that |
| the EJB Module project is listed under the Java EE Modules node of the enterprise application project.</p> |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-projects-entappejb1.png" alt="screenshot of Projects window showing open projects" title="Projects window showing open projects" class="margin-around b-all"/> |
| |
| <p>You can see that three types of projects are now listed in the Projects window: class library, enterprise application and EJB module.</p> |
| |
| |
| <a name="Exercise_22"></a> |
| <h3>Creating the Session Bean</h3> |
| <p>In this exercise you will use a wizard to create a session bean in the EJB module project. |
| In the wizard you will also create a remote interface for the session bean in the Class Library project. |
| </p> |
| <ol> |
| <li>Right-click the EJB module project and choose New > Session Bean.</li> |
| <li>Type <strong>MySession</strong> for the EJB Name.</li> |
| <li>Type <strong>ejb</strong> for the Package.</li> |
| <li>Select Stateless for the Session Type.</li> |
| <li>Select the Remote option for Create Interface.</li> |
| <li>Select the <strong>EJBRemoteInterface</strong> project from the dropdown list. Click Finish. </li> |
| </ol> |
| |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-wizard-newsessionbean.png" alt="screenshot of New Session Bean wizard" title="New Session Bean wizard" class="margin-around b-all"/> |
| |
| <p>When you click Finish, the IDE creates the session bean in the <tt>ejb</tt> package in the EJB module and opens the class in the editor. |
| You can see that <tt>MySession</tt> implements the <tt>MySessionRemote</tt> interface and that |
| the EJBRemoteInterface JAR was added as a library of the EJB module.</p> |
| |
| <p>The wizard also creates a remote interface named <tt>MySessionRemote</tt> in the <tt>ejb</tt> package of the EJBRemoteInterface project. |
| The IDE automatically adds the Java EE 6 API Library that is required for the EJB interface.</p> |
| |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-projects-entappejb2.png" alt="screenshot of Projects window showing session bean and remote interface" title="Projects window showing the session bean and remote interface" class="margin-around b-all"/> |
| |
| |
| <a name="Exercise_23"></a> |
| <h3>Adding a Business Method</h3> |
| <p>In this exercise you will create a simple business method in the session bean that returns a string. |
| </p> |
| <ol> |
| <li>Right-click in the editor of MySession and choose Insert Code (Alt-Insert; Ctrl-I on Mac) and select Add Business Method.</li> |
| <li>Type <strong>getResult</strong> for the Method Name and String for the Return Type. Click OK. |
| |
| </li> |
| <li>Make the following changes to modify the <tt>getResult</tt> method to return a String. |
| <p>The class should look like the following.</p> |
| <pre class="examplecode">@Stateless |
| public class MySession implements MySessionRemote { |
| |
| public String getResult() { |
| return <strong>"This is My Session Bean"</strong>; |
| } |
| }</pre> |
| </li> |
| <li>Save your changes.</li> |
| </ol> |
| |
| <p>You now have an enterprise application with a simple EJB that is exposed through a remote interface. |
| You also have an independent class library that contains the EJB interface that can be distributed |
| to other developers. |
| Developers can add the library to their projects if they want to communicate with the EJB that is |
| exposed by the remote interface and do not need to have the sources for the EJB. |
| When you modify the code for the EJB, you only need to distribute a JAR of the updated class library |
| if any of the interfaces change.</p> |
| |
| <p class="tips"> When you use the Add Business Method dialog, the IDE automatically |
| implements the method in the remote interface.</p> |
| |
| <a name="Exercise_24"></a> |
| <h3>Deploying the Enterprise Application</h3> |
| <p>You can now build and run the enterprise application. |
| When you run the application, the IDE will deploy the EAR archive to the server.</p> |
| <ol> |
| <li>Right-click the EntAppEJB enterprise application and choose Deploy.</li> |
| </ol> |
| |
| <p>When you click Deploy, the IDE builds the enterprise application and deploys the EAR archive to the server. |
| If you look in the Files window you can see that the EJBRemoteInterface JAR is deployed with the application.</p> |
| |
| <p>In the Services window, if you expand the Applications node of GlassFish Server you can see that |
| EntAppEJB was deployed.</p> |
| </div> |
| |
| |
| <a name="Exercise_30"></a> |
| <h2>Creating the Application Client</h2> |
| |
| <p>In this section you will create an enterprise application client. |
| When creating the application client, the project needs the EJBRemoteInterface Java class library as a library |
| in order to reference the EJB.</p> |
| |
| <p>When you run the enterprise application, the IDE will package the application client and the Java class library JAR in the EAR archive. |
| Library JARs must be packaged in an EAR with the application client if you want to access the JARs from the application client. |
| </p> |
| |
| <div class="indent"> |
| <a name="Exercise_31"></a> |
| <h3>Creating the Enterprise Application</h3> |
| <p>In this exercise you will use the New Project wizard to create an application client project. |
| If you are deploying to GlassFish 3.1 or 4.x you can create and run an application client as a standalone project. |
| The application client no longer needs to be deployed and run as part of an enterprise application.</p> |
| |
| <p class="notes"><strong>Note.</strong> If you are deploying to GlassFish 3.0.1, you need to create |
| the application client as a module in an enterprise application project and run the enterprise application.</p> |
| <ol> |
| <li>Choose File > New Project and select Enterprise Application Client in the Java EE category. Click Next.</li> |
| <li>Type <strong>EntAppClient</strong> for the Project Name. Click Next.</li> |
| <li>Select GlassFish Server for the Server. Click Finish. |
| <p>Note that you do not need to add the project to an enterprise application.</p> |
| </li> |
| </ol> |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-wizard-newentappclient.png" alt="screenshot of Create Application Client in the New Project wizard" title="Create Application Client selected in the New Project wizard" class="margin-around b-all"/> |
| |
| <p>When you click Finish, the IDE creates the application client project and opens <tt>Main.java</tt> in the editor.</p> |
| |
| <a name="Exercise_31"></a> |
| <h3>Adding the Class Library</h3> |
| <p>The class library that contains the remote interface now needs to be added to the classpath of the project |
| to enable the application client to reference the EJB. |
| The class library project is open, so you can use the Call Enterprise Bean dialog to help you |
| generate the code to call the EJB. |
| </p> |
| <p class="tips">If the class library project is not open, you can add the class library to the project in the Projects window by right-clicking the Libraries node and locating the JAR of the EJBRemoteInterface project.</p> |
| |
| <ol> |
| <li>Expand the Source Packages node of the EntAppClient project and open <tt>Main.java</tt> in the editor.</li> |
| <li>Right-click in the source code and choose Insert Code (Alt-Insert; Ctrl-I on Mac) and select Call Enterprise Bean to open the Call Enterprise Bean dialog.</li> |
| <li>Expand the EntAppEJB project node and select MySession. Click OK.<br/> |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-callenterprise.png" alt="screenshot of Call Enterprise Bean dialog" title="Call Enterprise Bean dialog" class="margin-around b-all"/> |
| |
| <p>The dialog automatically selects Remote as the interface type. |
| When you click OK, the IDE adds the following annotation to <tt>Main.java</tt>. |
| <pre class="examplecode">@EJB |
| private static MySessionRemote mySession;</pre> |
| |
| <p>The IDE also automatically adds EJBRemoteInterface as a project Library.</p> |
| </li> |
| <li>Modify the <tt>main</tt> method to retrieve the String of the <tt>getResult</tt> method |
| via the MySessionRemote interface. Save your changes. |
| <pre class="examplecode"> |
| public static void main(String[] args) { |
| <strong>System.err.println("result = " + mySession.getResult());</strong> |
| }</pre> |
| </li> |
| </ol> |
| </div> |
| |
| |
| <a name="Exercise_40"></a> |
| <h2>Running the Application Client</h2> |
| |
| <p>You can now run the application client by building and deploying the EntAppClient project.</p> |
| <ol> |
| <li>Right-click the EntAppClient project in the Projects window and choose Run. |
| <p>Alternatively, you can expand source package and right-click the <tt>Main.java</tt> class and choose Run File.</p></li> |
| </ol> |
| |
| <p>When you click Run, the IDE builds the application client project and deploys the JAR archive to the server. |
| You can see the message from the application client in the Output window.</p> |
| <img src="../../../images_www/articles/72/javaee/entappclient/appclient-buildoutput.png" alt="screenshot of the Output window showing the result" title="The result in the Output window" class="margin-around b-all"/> |
| |
| <p>If you want to create additional EJBs, you can simply add the new remote interfaces of the EJBs to the EJBRemoteInterface |
| class library project.</p> |
| |
| <!-- |
| |
| <a name="Exercise_50"></a> |
| <h2>Downloading the Solution Project</h2> |
| <p>You can download the solution to this tutorial as a project in the following ways.</p> |
| <ul> |
| <li>Download <a href="https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252Fentappclient.zip">a zip archive of the finished project</a>.</li> |
| <li>Checkout the project sources from the NetBeans Samples by performing the following steps: |
| <ol> |
| <li>Choose Team > Subversion > Checkout from the main menu.</li> |
| <li>In the Checkout dialog box, enter the following Repository URL:<br/> |
| <tt>https://svn.netbeans.org/svn/samples~samples-source-code</tt><br/> |
| Click Next.</li> |
| <li>Click Browse to open the Browse Repostiory Folders dialog box.</li> |
| <li>Expand the root node and select <strong>samples/javaee/entappclient</strong>. Click OK.</li> |
| <li>Specify the Local Folder for the sources (the local folder must be empty).</li> |
| <li>Click Finish. |
| <p>When you click Finish, the IDE initializes the local folder as a Subversion repository |
| and checks out the project sources.</p> |
| </li> |
| <li>Click Open Project in the dialog that appears when checkout is complete.</li> |
| </ol> |
| <p class="notes"><strong>Notes.</strong></p> |
| <ul> |
| <li>Steps for checking out sources from Kenai only apply to NetBeans IDE 6.7 and 6.8.</li> |
| <li>You need a Subversion client to checkout the sources from Kenai. |
| For more about installing Subversion, see the section on <a href="../ide/subversion.html#settingUp">Setting up Subversion</a> in the <a href="../ide/subversion.html">Guide to Subversion in NetBeans IDE</a>.</li> |
| </ul> |
| </li> |
| </ul>--> |
| |
| <div class="feedback-box"><a |
| href="/about/contact_form.html?to=3&subject=Feedback:%20Creating%20an%20Application%20Client">Send |
| Us Your Feedback</a></div> |
| <br style="clear: both;"> |
| <!-- ======================================================================================= --> |
| <h2><a name="nextsteps"></a>Next Steps</h2> |
| <!--<p>For more, see the following tutorial </p> |
| <ul> |
| <li><a href="http://wiki.netbeans.org/wiki/view/RemoteApplicationClientInNetBeans">RemoteApplicationClientInNetBeans</a></li> |
| </ul>--> |
| |
| |
| <p>For more information about using NetBeans IDE to |
| develop Java EE applications, see the following resources: </p> |
| <ul> |
| <li><a href="javaee-intro.html">Introduction to Java EE Technology</a></li> |
| <li><a href="javaee-gettingstarted.html">Getting Started with Java EE Applications</a></li> |
| <li><a href="../../trails/java-ee.html">Java EE & Java Web Learning Trail</a></li> |
| </ul> |
| <p>You can find more information about using EJB Enterprise Beans in the <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Java EE 6 Tutorial</a>.</p> |
| <p>To send comments and suggestions, get support, and keep |
| informed on the latest developments on the NetBeans IDE Java EE |
| development features, <a href="../../../community/lists/top.html">join the nbj2ee mailing list</a>.</p> |
| <!-- End Content Area --> |
| </body> |
| </html> |