⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ebank6.html

📁 j2eePDF格式的电子书
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<div class="pSmartList1"><ol type="1" class="pSmartList1"><a name="wp81563"> </a><div class="pSmartList1"><li>Invoke the Application Client wizard.</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp84104"> </a><div class="pSmartList2"><li>Create an application client module named <code class="cCode">DukesBankACJAR</code> in <code class="cCode">&lt;</code><code class="cVariable">INSTALL</code><code class="cCode">&gt;/j2eetutorial14/examples/bank/</code>. </li></div><a name="wp82475"> </a><div class="pSmartList2"><li>Add the <code class="cCode">appclient</code>, <code class="cCode">util</code>, and <code class="cCode">ejb/exception </code>packages and the <code class="cCode">ejb/*/*Controller*</code> <em class="cEmphasis">home</em> and <em class="cEmphasis">local</em> or <em class="cEmphasis">remote</em> interfaces (<code class="cCode">AccountController</code>, <code class="cCode">AccountControllerHome</code>, <code class="cCode">CustomerController</code>, <code class="cCode">CustomerControllerHome</code>, <code class="cCode">TxController</code>, <code class="cCode">TxControllerHome</code>) under <code class="cCode">&lt;</code><code class="cVariable">INSTALL</code><code class="cCode">&gt;/j2eetutorial14/examples/bank/build/com/sun/ebank </code>to the JAR.</li></div><a name="wp82009"> </a><div class="pSmartList2"><li>Select <code class="cCode">appclient.BankAdmin</code> as the application client main class.</li></div></ol></div><a name="wp82031"> </a><div class="pSmartList1"><li>Add EJB references to thse session beans listed in <a  href="Ebank6.html#wp82016">Table 32-15</a>.</li></div><a name="wp82512"> </a><div class="pSmartList1"><li>Save the module.<div align="left"><table border="1" summary="Application Client EJB References to Session Beans" id="wp82016">  <caption><a name="wp82016"> </a><div class="pTableTitle">Table 32-15   EJB References to Session Beans&nbsp;</div></caption>  <tr align="center">    <th><a name="wp82020"> </a><div class="pCellHeading">Coded Name</div></th>    <th><a name="wp82022"> </a><div class="pCellHeading">JNDI Name of Session Bean</div></th></tr>  <tr align="left">    <td><a name="wp82024"> </a><div class="pCellBody"><code class="cCode">ejb/accountController</code></div></td>    <td><a name="wp82026"> </a><div class="pCellBody"><code class="cCode">AccountControllerBean</code></div></td></tr>  <tr align="left">    <td><a name="wp82028"> </a><div class="pCellBody"><code class="cCode">ejb/customerController</code></div></td>    <td><a name="wp82030"> </a><div class="pCellBody"><code class="cCode">CustomerControllerBean</code></div></td></tr></table></div></li></div></ol></div><a name="wp82032"> </a><h4 class="pHeading3">Packaging and Deploying the Web Client</h4><div class="pSmartList1"><ol type="1" class="pSmartList1"><a name="wp83993"> </a><div class="pSmartList1"><li>Create a <code class="cCode">Dispatcher</code> servlet Web component using the Web Component wizard. Create a new Web module containing the component <code class="cCode">DukesBankWAR</code> in <code class="cCode">&lt;</code><code class="cVariable">INSTALL</code><code class="cCode">&gt;/j2eetutorial14/examples/bank/</code>. </li></div><a name="wp82139"> </a><div class="pSmartList1"><li>Add content to the Web module.</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp82135"> </a><div class="pSmartList2"><li>Add the <code class="cCode">web</code>, <code class="cCode">util</code>, and <code class="cCode">ejb/exception</code> packages and the <code class="cCode">ejb/*/*Controller*</code> <em class="cEmphasis">home</em> and <em class="cEmphasis">local</em> or <em class="cEmphasis">remote</em> interfaces (<code class="cCode">AccountController</code>, <code class="cCode">AccountControllerHome</code>, <code class="cCode">CustomerController</code>, <code class="cCode">CustomerControllerHome</code>, <code class="cCode">TxController</code>, <code class="cCode">TxControllerHome</code>) under <code class="cCode">&lt;</code><code class="cVariable">INSTALL</code><code class="cCode">&gt;/j2eetutorial14/examples/bank/build/com/sun/ebank</code> to the module.</li></div><a name="wp83439"> </a><div class="pSmartList2"><li>Add the <code class="cCode">template</code> directory, all the JSP pages, the <code class="cCode">WebMessages*.proproperties</code> files and <code class="cCode">tutorial-template.tld</code> under <code class="cCode">&lt;</code><code class="cVariable">INSTALL</code><code class="cCode">&gt;/j2eetutorial14/examples/bank/build/</code> to the module.</li></div><a name="wp82125"> </a><div class="pSmartList2"><li>In the Web module contents editor, drag the files <code class="cCode">WebMessages*.properties</code> from the context root to <code class="cCode">WEB-INF/classes</code>.</li></div></ol></div><a name="wp84018"> </a><div class="pSmartList1"><li>Set the context root to <code class="cCode">/bank</code>.</li></div><a name="wp82041"> </a><div class="pSmartList1"><li>Add the <code class="cCode">/accountHist</code>, <code class="cCode">/accountList</code>, <code class="cCode">/atm</code>, /<code class="cCode">atmAck</code>, <code class="cCode">/main</code>, /<code class="cCode">transferAck</code>, <code class="cCode">/transferFunds</code>, and <code class="cCode">/logoff</code> aliases to the <code class="cCode">Dispatcher</code> component.</li></div><a name="wp81715"> </a><div class="pSmartList1"><li>Add EJB references to the session beans listed in <a  href="Ebank6.html#wp82256">Table 32-16</a>:<div align="left"><table border="1" id="wp82256">  <caption><a name="wp82256"> </a><div class="pTableTitle">Table 32-16   EJB References to Session Beans&nbsp;</div></caption>  <tr align="center">    <th><a name="wp82260"> </a><div class="pCellHeading">Coded Name</div></th>    <th><a name="wp82262"> </a><div class="pCellHeading">JNDI Name of Session Bean</div></th></tr>  <tr align="left">    <td><a name="wp82264"> </a><div class="pCellBody"><code class="cCode">ejb/accountController</code></div></td>    <td><a name="wp82266"> </a><div class="pCellBody"><code class="cCode">AccountControllerBean</code></div></td></tr>  <tr align="left">    <td><a name="wp82268"> </a><div class="pCellBody"><code class="cCode">ejb/customerController</code></div></td>    <td><a name="wp82270"> </a><div class="pCellBody"><code class="cCode">CustomerControllerBean</code></div></td></tr>  <tr align="left">    <td><a name="wp82272"> </a><div class="pCellBody"><code class="cCode">ejb/txController</code></div></td>    <td><a name="wp82274"> </a><div class="pCellBody"><code class="cCode">TxControllerBean</code></div></td></tr></table></div></li></div><a name="wp81590"> </a><div class="pSmartList1"><li>Add a JSP property group named <code class="cCode">bank</code>. The property group applies to the URL pattern <code class="cCode">*.jsp</code>. Add the include prelude <code class="cCode">/template/prelude.jspf</code>.</li></div><a name="wp81726"> </a><div class="pSmartList1"><li>Add a context parameter named <code class="cCode">javax.servlet.jsp.jstl.fmt.localizationContext</code> and value <code class="cCode">WebMessages</code>.</li></div><a name="wp81733"> </a><div class="pSmartList1"><li>Add a security constraint.</li></div><div class="pSmartList2"><ol type="a" class="pSmartList2"><a name="wp82111"> </a><div class="pSmartList2"><li>Select Form Based as the User Authentication Method. The authentication settings are <code class="cCode">file</code> for the Realm Name, <code class="cCode">/logon.jsp</code> for the Login Page, and <code class="cCode">/logonError.jsp</code> for the Error Page. </li></div><a name="wp82116"> </a><div class="pSmartList2"><li>Add a security constraint and a web resource collection. Use the default names provided by <code class="cCode">deploytool</code>.</li></div><a name="wp82117"> </a><div class="pSmartList2"><li>Add the URL Patterns <code class="cCode">/main</code>, <code class="cCode">/accountList</code>, <code class="cCode">/accountHist</code>, <code class="cCode">/atm</code>, /<code class="cCode">atmAck</code>, <code class="cCode">/transferAck</code>, and <code class="cCode">/transferFunds</code> to the web resource collection.</li></div><a name="wp82174"> </a><div class="pSmartList2"><li>Select the GET and POST HTTP methods.</li></div><a name="wp82118"> </a><div class="pSmartList2"><li>Add the security role <code class="cCode">bankCustomer</code>.</li></div></ol></div><a name="wp83511"> </a><div class="pSmartList1"><li>Map the <code class="cCode">bankCustomer</code> role to the <code class="cCode">bankCustomer</code> group.</li></div><a name="wp82086"> </a><div class="pSmartList1"><li>Save the module.</li></div><a name="wp82060"> </a><div class="pSmartList1"><li>Deploy the module.</li></div></ol></div><a name="wp81685"> </a><h4 class="pHeading3">Packaging and Deploying the Application</h4><div class="pSmartList1"><ol type="1" class="pSmartList1"><a name="wp82351"> </a><div class="pSmartList1"><li>Create a J2EE application named <code class="cCode">DukesBankApp</code> in <code class="cCode">&lt;</code><code class="cVariable">INSTALL</code><code class="cCode">&gt;/j2eetutorial14/examples/bank/</code>. </li></div><a name="wp82363"> </a><div class="pSmartList1"><li>Add the <code class="cCode">DukesBankACJAR</code> application client module to <code class="cCode">DukesBankApp</code>.</li></div><a name="wp82364"> </a><div class="pSmartList1"><li>Add the <code class="cCode">DukesBankEJBJAR</code> EJB module to <code class="cCode">DukesBankApp</code>.</li></div><a name="wp82370"> </a><div class="pSmartList1"><li>Map the <code class="cCode">bankCustomer</code> role to the <code class="cCode">bankCustomer</code> group.</li></div><a name="wp82377"> </a><div class="pSmartList1"><li>Map the <code class="cCode">bankAdmin</code> role to the <code class="cCode">bankAdmin</code> group.</li></div><a name="wp82389"> </a><div class="pSmartList1"><li>Save the application.</li></div><a name="wp82390"> </a><div class="pSmartList1"><li>Deploy the application. In the Deploy <code class="cCode">DukesBankApp</code> dialog, select the Return Client Jar checkbox.</li></div></ol></div><a name="wp82348"> </a><p class="pBody">After you have packaged all the modules, <code class="cCode">deploytool</code> should look like <a  href="Ebank6.html#wp81002">Figure&nbsp;32-17</a>.</p><a name="wp80999"> </a><p class="pBody"></p><div align="left"><img src="images/Fig4512.gif" height="710" width="711" alt="Duke's Bank Modules and Components" border="0" hspace="0" vspace="0"/></div><p class="pBody"></p><a name="wp81000"> </a><p class="pBody"></p><p>  <a name="81002"> </a><strong><font >Figure&nbsp;32-17   Duke's Bank Modules and Components</font></strong></p><a name="wp80323"> </a><h3 class="pHeading2">Reviewing JNDI Names</h3><a name="wp80325"> </a><p class="pBody">With <code class="cCode">DukesBankApp</code> selected, click the JNDI Names tab. The JNDI Name column is shown in <a  href="Ebank6.html#wp80342">Figure&nbsp;32-18</a>. The order may be a little different in your own environment.</p><a name="wp80340"> </a><p class="pBody"></p><div align="left"><img src="images/Fig469.gif" height="558" width="434" alt="Duke's Bank JNDI Names" border="0" hspace="0" vspace="0"/></div><p class="pBody"></p><p>  <a name="80342"> </a><strong><font >Figure&nbsp;32-18   Duke's Bank JNDI Names</font></strong></p><a name="wp80343"> </a><p class="pBody">A JNDI name is the name the J2EE server uses to look up enterprise beans and resources. When you look up an enterprise bean, you supply statements similar to those shown in the following code. </p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">try {&nbsp;&nbsp;customerControllerHome =&nbsp;&nbsp;&nbsp;&nbsp;EJBGetter.getCustomerControllerHome(); &nbsp;&nbsp;customer = customerControllerHome.create();} catch (Exception namingException) { &nbsp;&nbsp;namingException.printStackTrace(); }public static CustomerControllerHome&nbsp;&nbsp;getCustomerControllerHome() throws &nbsp;&nbsp;NamingException {&nbsp;&nbsp;InitialContext initial = new InitialContext();&nbsp;&nbsp;Object objref = initial.lookup(&nbsp;&nbsp;&nbsp;&nbsp;CodedNames.CUSTOMER_CONTROLLER_EJBHOME);<a name="wp80344"> </a></pre></div><a name="wp80345"> </a><p class="pBody">The lookup takes place in the third line of code, in which the <code class="cCode">getCustomerControllerHome</code> method of <code class="cCode">com.sun.ebank.utilEJBGetter</code> is called. <code class="cCode">EJBGetter</code> is a utility class that retrieves a coded JNDI name from <code class="cCode">com.sun.ebank.util.CodedNames</code>. </p><a name="wp84122"> </a><p class="pBody">In this example, the application client is looking up the coded name for the <code class="cCode">CustomerController</code> remote interface. <code class="cCode">BankAdmin</code> (the display name for the main class of the application client) references <code class="cCode">ejb/customerController</code>, which is the coded name defined in <code class="cCode">CodedNames</code> for the <code class="cCode">CustomerController</code> remote interface.</p><a name="wp80346"> </a><p class="pBody">The JNDI name is stored in the J2EE application deployment descriptor, and the J2EE server uses it to look up the <code class="cCode">CustomerControllerBean</code> bean. In <a  href="Ebank6.html#wp80342">Figure&nbsp;32-18</a> you see that <code class="cCode">CustomerControllerBean</code> is mapped to the same JNDI name as is <code class="cCode">ejb/customerController</code>. It does not matter what the JNDI name is, as long as it is the same name for the remote interface lookup as you use for its corresponding bean. So, looking at the table, you can say that the application client (<code class="cCode">BankAdmin</code>) looks up the <code class="cCode">CustomerController</code> remote interface, which uses the JNDI name of <code class="cCode">CustomerControllerBean</code>, and the J2EE server uses the <code class="cCode">CustomerControllerBean</code> JNDI name to find the corresponding <code class="cCode">CustomerControllerBean</code> object. </p><a name="wp80350"> </a><p class="pBody">The other rows in the table have the mappings for the other enterprise beans. All of these beans are stored in the JAR file you added to the J2EE application during assembly. Their implementations have coded names for looking up either other enterprise beans or the database driver.</p>    </blockquote>   <img src="images/blueline.gif" width="550" height="8" ALIGN="BOTTOM" NATURALSIZEFLAG="3" ALT="Divider">    <table width="550" summary="layout" id="SummaryNotReq1">      <tr>	<td align="left" valign="center">	<font size="-1">	<a href="http://java.sun.com/j2ee/1.4/download.html#tutorial" target="_blank">Download</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/faq.html" target="_blank">FAQ</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/history.html" target="_blank">History</a>	</td>        <td align="center" valign="center"><a accesskey="p" href="Ebank5.html"><img id="LongDescNotReq1" src="images/PrevArrow.gif" width="26" height="26" border="0" alt="Prev" /></a><a accesskey="c" href="J2EETutorialFront.html"><img id="LongDescNotReq1" src="images/UpArrow.gif" width="26" height="26" border="0" alt="Home" /></a><a accesskey="n" href="Ebank7.html"><img id="LongDescNotReq3" src="images/NextArrow.gif" width="26" height="26" border="0" alt="Next" /></a><a accesskey="i" href="J2EETutorialIX.html"></a>        </td>	<td align="right" valign="center">	<font size="-1">	<a href="http://java.sun.com/j2ee/1.4/docs/api/index.html" target="_blank">API</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/search.html" target="_blank">Search</a>	<br>	<a href="http://java.sun.com/j2ee/1.4/docs/tutorial/information/sendusmail.html" target="_blank">Feedback</a></font>	</font>	</td>      </tr>    </table>    <img src="images/blueline.gif" width="550" height="8" ALIGN="BOTTOM" NATURALSIZEFLAG="3" ALT="Divider"><p><font size="-1">All of the material in <em>The J2EE(TM) 1.4 Tutorial</em> is <a href="J2EETutorialFront2.html">copyright</a>-protected and may not be published in other workswithout express written permission from Sun Microsystems.</font>  </body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -