📄 session5.html
字号:
</p><a name="wp80562"> </a><p class="pBody"><code class="cCode">TimerSessionEJB</code> is a stateless session bean that shows how to set a timer. The implementation class for <code class="cCode">TimerSessionEJB</code> is called <code class="cCode">TimerSessionBean</code>. In the source code listing of <code class="cCode">TimerSessionBean</code> that follows, note the <code class="cCode">myCreateTimer</code> and <code class="cCode">ejbTimeout</code> methods. Because it's a business method, <code class="cCode">myCreateTimer</code> is defined in the bean's remote interface (<code class="cCode">TimerSession</code>) and may be invoked by the client. In this example, the client invokes <code class="cCode">myCreateTimer</code> with an interval duration of 30000 milliseconds. The <code class="cCode">myCreateTimer</code> method fetches a <code class="cCode">TimerService</code> object from the bean's <code class="cCode">SessionContext</code>. Then it creates a new timer by invoking the <code class="cCode">createTimer</code> method of <code class="cCode">TimerService</code>. Now that the timer is set, the EJB container will invoke the <code class="cCode">ejbTimer</code> method of <code class="cCode">TimerSessionBean</code> when the timer expires--in about 30 seconds. Here's the source code for the <code class="cCode">TimerSessionBean</code> class:</p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">import javax.ejb.*;public class TimerSessionBean implements SessionBean, TimedObject { private SessionContext context; public TimerHandle myCreateTimer(long intervalDuration) { System.out.println ("TimerSessionBean: start createTimer "); TimerService timerService = context.getTimerService(); Timer timer = timerService.createTimer(intervalDuration, "created timer");} public void ejbTimeout(Timer timer) { System.out.println("TimerSessionBean: ejbTimeout "); } public void setSessionContext(SessionContext sc) { System.out.println("TimerSessionBean: setSessionContext"); context = sc; } public void ejbCreate() { System.out.println("TimerSessionBean: ejbCreate"); } public TimerSessionBean() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {}} <a name="wp80563"> </a></pre></div><hr><a name="wp80940"> </a><p class="pNote">Note: To run the <code class="cCode">TimerSessionEJB</code> example, you must start the PointBase server before you start the J2EE application server. If you don't start the PointBase server, or if you start it after the J2EE application server, then you will get a <code class="cCode">java.rmi.RemoteException</code> with the message, <code class="cCode">EJB Timer service not available</code>.</p><hr><a name="wp80565"> </a><h3 class="pHeading2">Building TimerSessionEJB</h3><a name="wp80566"> </a><p class="pBody">In a terminal window, go to the<code class="cCode"> </code><code class="cVariable"><INSTALL></code><code class="cCode">/j2eetutorial14/examples/ejb/timersession/</code> directory. To build <code class="cCode">TimerSessionEJB</code>, type the following command:</p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">asant build<a name="wp80567"> </a></pre></div><a name="wp80568"> </a><p class="pBody">Use <code class="cCode">deploytool</code> to package and deploy this example.</p><a name="wp80569"> </a><h4 class="pHeading3">Creating the Application</h4><a name="wp80570"> </a><p class="pBody">In this section, you'll create a J2EE application named <code class="cCode">TimerSessionApp</code>, storing it in the file <code class="cCode">TimerSessionApp.ear</code>. </p><div class="pSmartList1"><ol type="1" class="pSmartList1"><a name="wp80571"> </a><div class="pSmartList1"><li>In <code class="cCode">deploytool</code>, select File<span style="font-family: Symbol"><img src="images/arrwrite.gif" border="0" alt="Right Arrow"></span>New<span style="font-family: Symbol"><img src="images/arrwrite.gif" border="0" alt="Right Arrow"></span>Application EAR.</li></div><a name="wp80572"> </a><div class="pSmartList1"><li>Click Browse.</li></div><a name="wp80573"> </a><div class="pSmartList1"><li>In the file chooser, navigate to <code class="cVariable"><INSTALL></code><code class="cCode">/j2eetutorial14/examples/ejb/timersession/</code>. </li></div><a name="wp80574"> </a><div class="pSmartList1"><li>In the File Name field, enter <code class="cCode">TimerSessionApp.ear</code>.</li></div><a name="wp80575"> </a><div class="pSmartList1"><li>Click New Application.</li></div><a name="wp80576"> </a><div class="pSmartList1"><li>Click OK.</li></div><a name="wp80577"> </a><div class="pSmartList1"><li>Verify that the <code class="cCode">TimerSessonApp.ear</code> file resides in <code class="cCode"><</code><code class="cVariable">INSTALL</code><code class="cCode">>/j2eetutorial14/examples/ejb/timersession/.</code></li></div></ol></div><a name="wp80578"> </a><h4 class="pHeading3">Packaging the Enterprise Bean</h4><a name="wp80579"> </a><p class="pBody">Start the Edit Enterprise Bean wizard by selecting File<span style="font-family: Symbol"><img src="images/arrwrite.gif" border="0" alt="Right Arrow"></span>New<span style="font-family: Symbol"><img src="images/arrwrite.gif" border="0" alt="Right Arrow"></span>Enterprise JavaBean JAR. The wizard displays the following dialog boxes.</p><div class="pSmartList1"><ol type="1" class="pSmartList1"><a name="wp80580"> </a><div class="pSmartList1"><li>In the Introduction dialog box:</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp80581"> </a><div class="pSmartList2"><li>Read the explanatory text for an overview of the wizard's features.</li></div><a name="wp80582"> </a><div class="pSmartList2"><li>Click Next.</li></div></ol></div><a name="wp80583"> </a><div class="pSmartList1"><li>In the EJB JAR dialog box:</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp80584"> </a><div class="pSmartList2"><li>Select the button labelled Create New JAR Module in Application.</li></div><a name="wp80585"> </a><div class="pSmartList2"><li>In the combo box below this button, select <code class="cCode">TimerSessionApp</code>.</li></div><a name="wp80586"> </a><div class="pSmartList2"><li>In the JAR Display Name field, enter <code class="cCode">TimerSessionJAR</code>.</li></div><a name="wp80587"> </a><div class="pSmartList2"><li>Click Edit.</li></div><a name="wp80588"> </a><div class="pSmartList2"><li>In the tree under Available Files, locate the <code class="cCode"><</code><code class="cVariable">INSTALL</code><code class="cCode">>/j2eetutorial14/examples/ejb/timersession/build/</code> directory.</li></div><a name="wp80589"> </a><div class="pSmartList2"><li>Select these classes: <code class="cCode">TimerSession.class</code>, <code class="cCode">TimerSessionBean.class</code>, and <code class="cCode">TimerSessionHome.class</code>.</li></div><a name="wp80590"> </a><div class="pSmartList2"><li>Click Add.</li></div><a name="wp80591"> </a><div class="pSmartList2"><li>Click OK.</li></div><a name="wp80592"> </a><div class="pSmartList2"><li>Click Next.</li></div></ol></div><a name="wp80593"> </a><div class="pSmartList1"><li>General dialog box</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp80890"> </a><div class="pSmartList2"><li>In the Enterprise Bean Class combo box, select <code class="cCode">TimerSessionBean</code>.</li></div><a name="wp80902"> </a><div class="pSmartList2"><li>In the Enterprise Bean Name field, enter <code class="cCode">TimerSessionEJB</code>.</li></div><a name="wp80878"> </a><div class="pSmartList2"><li>Under Bean Type, select the Stateless Session.</li></div><a name="wp80598"> </a><div class="pSmartList2"><li>In the Remote Interfaces section, select <code class="cCode">TimerSessionHome</code> for the Remote Home Interface and <code class="cCode">TimerSession</code> for the Remote Interface.</li></div><a name="wp80909"> </a><div class="pSmartList2"><li>Click Next.</li></div></ol></div><a name="wp80599"> </a><div class="pSmartList1"><li>In the Configure Options dialog box:</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp80600"> </a><div class="pSmartList2"><li>Select No for Expose Bean as Web Service Endpoint.</li></div><a name="wp80601"> </a><div class="pSmartList2"><li>Click Next.</li></div></ol></div><a name="wp80602"> </a><div class="pSmartList1"><li>Click Finish.</li></div></ol></div><a name="wp80605"> </a><h4 class="pHeading3">Compiling the Application Client</h4><a name="wp80606"> </a><p class="pBody">The application client files are compiled at the same time as the enterprise bean files.</p><a name="wp80607"> </a><h4 class="pHeading3">Packaging the Application Client</h4><a name="wp80608"> </a><p class="pBody">To package an application client component, you run the New Application Client wizard of the <code class="cCode">deploytool</code>. During this process the wizard performs the following tasks.</p><div class="pSmartList1"><ul class="pSmartList1"><a name="wp80609"> </a><div class="pSmartList1"><li>Creates the application client's deployment descriptor</li></div><a name="wp80610"> </a><div class="pSmartList1"><li>Puts the deployment descriptor and client files into a JAR file</li></div><a name="wp80611"> </a><div class="pSmartList1"><li>Adds the JAR file to the application's <code class="cCode">TimerSessionApp.ear</code> file</li></div></ul></div><a name="wp80612"> </a><p class="pBody">To start the New Application Client wizard, select File<span style="font-family: Symbol"><img src="images/arrwrite.gif" border="0" alt="Right Arrow"></span>New<span style="font-family: Symbol"><img src="images/arrwrite.gif" border="0" alt="Right Arrow"></span>Application Client JAR. The wizard displays the following dialog boxes.</p><div class="pSmartList1"><ol type="1" class="pSmartList1"><a name="wp80613"> </a><div class="pSmartList1"><li>Introduction dialog box </li></div><div class="pSmartList2"><ol type="a" class="pSmartList2">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -