• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • J2EE Server下的第一個EJB程序

    發表于:2007-04-29來源:作者:點擊數: 標簽:程序第一個作者ejbj2ee
    作者:翁馳原 編按:為了幫助國內J2EE初學者,寫了這篇文章,期望能夠對廣大 Java 愛好者有所幫助。 文章內容: 1、本文一步步圖文并茂的教讀者配置出一個標準的J2EE開發環境 2、啟動cloudscape數據庫的cloudview,并建立數據庫 3、讓讀者開發第一個EJB程序
    作者:翁馳原
    編按:為了幫助國內J2EE初學者,寫了這篇文章,期望能夠對廣大Java愛好者有所幫助。
    文章內容:
    1、本文一步步圖文并茂的教讀者配置出一個標準的J2EE開發環境
    2、啟動cloudscape數據庫的cloudview,并建立數據庫
    3、讓讀者開發第一個EJB程序
    4、設置EJB的datasource、部署應用程序等。


    開發環境:
    開發環境使用SUN的j2sdk1.4和j2sdkee1.3.1(注:關于j2sdk的版本,只要是1.3.1_02以后的都可以)。數據庫:j2sdkee自帶的cloudscape數據庫。
    第一、配置系統環境
    確認你下載了j2sdk1.3.1_02以上的jdk版本和j2sdkee.1.3.1這些軟件可以到sun的網站上去找http://java.sun.com 目前j2se的最高版本是j2sdk1.4。然后安裝上述軟件。我的安裝目錄是在H:盤。在安裝之前如果你以前裝有不同版本的jdk,請先卸載,然后再安裝。安裝好以后,請設置classpath.windows下的設置如下:為了方便,所以加入大部分的路徑。
    set JAVA_HOME=h:\ j2sdk1.4
    set J2EE_HOME=h:\j2sdkee1.3.1
    set classpath=h:\ j2sdk1.4\jre\lib\jaws.jar;
    h:\ j2sdk1.4\lib\dt.jar;
    h:\j2sdk1.4\lib\tools.jar;
    h:\j2sdkee1.3.1\lib\ejb10deployment.jar;
    h:\j2sdkee1.3.1\lib\j2ee.jar;
    h:\j2sdkee1.3.1\lib\jhall.jar;
    h:\j2sdkee1.3.1\lib\j2eetools.jar;
    h:\j2sdkee1.3.1\lib;
    上面是我的機器上的目錄,如果你安裝在不同的目錄上的話,請自行改變
    如果操作系統是win98,要運行這個文件或者重新啟動才可以生效.
    這樣可以順利的啟動j2ee,在dos窗口下運行%j2ee_home%\bin\j2ee -verbose命令如果順利的話,就會看到在DOS窗口中出現J2EE server startup complete的提示(如下圖)。

    打開瀏覽器敲入地址http://localhost:8000/index.html可以看到首頁就說明配置正確并成功啟動了J2EE應用服務器。(如下圖)
    clearcase/" target="_blank" >ccess.jpg" width=350>
    第二、啟動數據庫
    加入如下的路徑
    h:\j2sdkee1.3.1\lib\system\cloudutil.jar;h:\j2sdkee1.3.1\lib\cloudscape\cloudclient.jar;
    h:\j2sdkee1.3.1\lib\cloudscape\rmijdbc.jar;h:\j2sdkee1.3.1\lib\system\cloudscape.jar;
    關鍵的問題出在如何調出cloudscape數據庫的圖形管理界面!你在命令行方式下敲入java COM.cloudscape.tools.cview很可能會出現錯誤。什么原因呢?第一、你要看看你的jdk版本對不對,是不是1.3.1_02以上或者1.4的。第二、關鍵中的關鍵,原來sun的j2ee里的cloudview是不能在他附帶的cloudscape4.0.6下工作的(真不知道sun在搞什么東東 :))
    這里是在ibm網站上的一句原話:The Java 2 SDK, Enterprise Edition v. 1.3.1 includes Cloudscape 4.0.6 but includes a version of Cloudview which will not function with the 4.0.6 system。所以同志門就自己去下一個吧!這里還需要兩個jar文件。下載地址是
    cloudview.jarjd.jar把這兩個文件放在j2sdkee1.3.1下的cloudscape目錄下,我這里還需要加兩個classpaht路徑
    h:\j2sdkee1.3.1\cloudscape\cloudview406.jar;
    h:\j2sdkee1.3.1\cloudscape\jh.jar
    OK!一起大功告成!現在看看怎么啟動cloudview,在命令行下鍵入
    java -Dcloudscape.system.home=%j2ee_home%\cloudscape COM.cloudscape.tools.cview
    這里-Dcloudscape.system.home是設置數據庫存放的路徑,這個路徑可以在建立數據庫的時候改變
    %j2ee_home%\cloudscape是cloudscape的默認工作目錄
    也可以將-Dcloudscape.system.home后的路徑去掉,不過要記住,要將數據庫建在改路徑下,否則j2ee server找不到它!好了,接下來你會發現一個圖形界面。用file——>new 菜單來新建一個數據庫(如下圖)

    很多數據庫的管理模式都差不多,比如cloudview和sqlserver、db2的控制中心使用方法基本相同。在彈出的菜單中輸入你所要創建的數據庫名。在這個例子里輸入ExampleDB。按directory按鈕選擇目錄在j2ee的安裝目錄下的cloudscape目錄(如下圖)

    這時在面板的左面就會發現有了table、view等列表。如果下次啟動時候左面的面板不見了,可以選view菜單下的details only后再選一次。然后在Table上點右鍵選擇new子菜單下的table,新建好了一個表后可以在右邊的框的name旁邊的框內修改表名,這里表名設成employee。在columns這一欄可以按+號新增一個列。也可以選擇所要刪除的列后按-號。
    新建兩個列,一個是employeeID、一個是name類型和字段長度如下圖所示。選擇Data標簽可以新增數據,你可以輸入一些測試數據。

    鼠標右鍵選擇左邊窗口的Keys在彈出的窗口里選擇new——> key。在右邊的窗口修改名字為employeeKey,類型選擇primary Key,然后點選EmployeeID字段(如下圖),按下面的OK按鈕確定,最后按OK按鈕關閉cloudview窗口。

    接下來啟動j2ee自帶的cloudscape數據庫,這個也簡單
    在命令行方式下到h:\j2sdkee1.3.1\bin目錄下打cloudscape -start可以啟動cloudscape數據庫如下圖

    第三、接下來開始寫三個范例程序
    分別是EmployeeHome.java、EmployeeBean.java、Employee.java。把這三個程序一起放在一個叫first的目錄里
    (1) EmployeeHome.java
    package employee.com;
    import java.util.Collection;
    import java.rmi.RemoteException;
    import javax.ejb.*;
    public interface EmployeeHome extends javax.ejb.EJBHome {
    public Employee create(String employeeID) throws DuplicateKeyException,javax.ejb.CreateException,java.rmi.RemoteException;

    public Employee findByPrimaryKey(String employeeID ) throws ObjectNotFoundException,FinderException,RemoteException;

    }
    這個文件實現了Home 接口。Home接口必須遵守以下的規定:(1)類型必須為interface。(2)必須是public。(3)至少要聲明一個create()或者finder方法其中的一個。(4)create和finder方法必須包含java.rmi.RemoteException異常,finder方法必須另外包含java.ejb.FinderException異常。
    客戶端利用Home interface 取得EJB Object的遠端對象參考(Remote interface)什么是Remote interface呢?看下來的程序
    (2)Employee.java
    package employee.com;
    import javax.ejb.EJBObject;
    import java.rmi.RemoteException;

    public interface Employee extends javax.ejb.EJBObject {
    public String getName()throws java.rmi.RemoteException;
    }
    這個文件實現了Remote接口。Remote接口必須遵守以下的規定:(1)類型必須為interface。(2)必須是public。(3)必須直接或者間接繼承java.ejb.EJBObject。(4)聲明的方法必須和Bean class里的方法一樣。
    (3) EmployeeBean.java
    package employee.com;
    import java.util.*;
    import javax.ejb.*;

    public class EmployeeBean implements EntityBean{
    public String employeeID;
    public String name;
    private EntityContext context;
    public void setEntityContext (EntityContext context){
    this.context=context;
    }
    public void unsetEntityContext(){
    context=null;
    }
    public String ejbCreate (String employeeID) throws DuplicateKeyException, CreateException{
    this.employeeID=employeeID;
    this.name="";
    return null;
    }

    public void ejbPostCreate(String employeeID){
    }

    public void setName(String name){
    this.name=name;
    }

    public String getName(){
    return name;
    }

    public void ejbActivate(){
    employeeID=(String) context.getPrimaryKey();
    }

    public void ejbPassivate(){
    employeeID=null;
    name=null;
    }

    public void ejbRemove(){
    }

    public void ejbLoad(){
    }

    public void ejbStore(){
    }

    }

    以上是一個EntityBean 和一個遠程接口和一個Home接口。
    下面寫一個JavaBean來調用EntityBean里的方法
    EmployeeOut.java
    package employee.beans;
    import employee.com.*;
    import java.util.*;
    import javax.naming.*;
    import javax.rmi.PortableRemoteObject;
    import javax.ejb.*;
    import java.sql.*;

    public class EmployeeOut{
    private String id="";
    private String name="";
    EmployeeHome employeeHome=null;
    public EmployeeOut() throws SQLException
    {
    try{
    Context initial = new InitialContext();
    Object objref=initial.lookup("ejb/EmployeeEntityBean");
    employeeHome=(EmployeeHome)PortableRemoteObject.narrow(objref,EmployeeHome.class);

    }catch (Exception ex){
    throw new SQLException (ex.toString());
    }
    }

    public String getName(String id) throws Exception
    {
    try
    {
    Employee employee=employeeHome.findByPrimaryKey(id);
    name=employee.getName();
    return name;

    }
    catch (ObjectNotFoundException notfoundex){
    return "notfound";
    }
    catch (Exception ex){
    throw ex;
    }

    }
    }

    在dos方式下,更換工作目錄至first目錄,然后執行下列的編譯指令:
    javac -d . *.java (注d后面和*前面都有一個空格)
    就可以在first下生成一個com目錄和一個beans目錄里面有編譯好了的.class文件。
    接下來寫一個jsp文件,將jsp文件放在first目錄下,通過調用JavaBean里的方法來簡潔調用EntityBean里的方法。
    login.jsp
    <%@page language="java" import ="java.sql.*,employee.beans.*" contentType="text/html; charset=GB2312"%>
    <jsp:useBean id="employee" scope="page" class="employee.beans.EmployeeOut">
    </jsp:useBean>
    <%
    String name="";
    String id=request.getParameter ("id");
    if (id==null)
    {
    id="";
    }
    if (!id.equals(""))
    {
    name=employee.getName(id);
    }
    %>

    <html>
    <body bgcolor="#cccccc">
    <br><br><br><br>
    <form name="f1" action="login.jsp" method="post">
    <table width=60% align="center">
    <tr><td>編號:<input name=id value="" size=15></td>
    <td>姓名:<%=name%></td></tr>
    <tr><td><br><br></td></tr>
    <tr><td clospan=2 align="center"><input type="submit" name="查詢姓名"></td></tr>
    </table>
    </form>
    </body>
    </html>
    第四、設置datasource 部署J2EE
    用文本編輯工具打開%J2ee_home%\config\resource.properties文件,找到jdbcDataSource.4.name=jdbc/DB2
    jdbcDataSource.4.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
    這行,在這行下面加上
    jdbcDataSource.5.name=jdbc/ExampleDB
    jdbcDataSource.5.url=jdbc:cloudscape:rmi:ExampleDB;create=true
    各個不同的J2ee版本的Datasource 設置文件不一樣,以前的版本有的是在default.properties文件下設置的。
    接下來用J2ee自帶的部署工具部署應用程序,在dos窗口在鍵入%j2ee_home%\bin\deploytool打開deploytool工具
    選擇File---->New---->Application如圖選擇應用程序存放的地址和名字,名字以ear結尾。接下來輸入顯示名后按OK關閉小窗口。在左邊的Frame里可以看到employeeDisName的符號。(如下圖)

    用鼠標選上employeeDISName,選擇File---->new Enterprise Bean,第一個屏幕是一些介紹,直接按Next,在第下面的屏幕如圖,填寫JAR Display Name為employeeJAR。

    在Contents面板點選旁邊的Edit按鈕,在彈出的窗口中的Starting Directory里選擇first目錄,用鼠標按住Ctrl鍵一起選擇在下面的Avaliable Files里選擇first下的employee下的com目錄里的三個.class文件后,按Add按鈕。這時在最下面的Contents of employeeJAR里就會出現這三個類文件。如下圖

    按OK鍵關閉窗口后在Contents面板里可以看到employee這個標志。按下next
    在Bean Type里選擇Entity,在Enterprise Bean Class里選擇你的Bean Class EmployeeBean,在Remote Home Interface里選擇EmployeeHome ,在Remote Interfaze里選擇Employee如圖后, 按下Next。

    在Prisistence Management里選擇Container managed prisistence (1.0),在Fields to be Persisted里把兩個字段都選上,在Primary Key Class里改成java.lang.String,在Primary Key Field Name里選上employeeID,如下圖所示,按Next。

    在接下來的界面都按Next按鈕一直到Resource References 面板,點擊右邊的Add按鈕 在Coded Name 和下面的JNDI Name中填寫jdbc/ExampleDB,如下圖所示。按finish按鈕結束。

    如下圖選擇窗口左邊的EmployeeBean,按下右側Entity Tab頁次的Deployment Settings按鈕。

    在Deployment Settings窗口取消Database Table面板里的Create table on deploy和Delete Table on undeploy。按下Database Settings在彈出的窗口里的Database JNDI Name 里填寫jdbc/ExampleDB后按OK返回。按下Generate SQL Now 按鈕,生成SQL語句,成功的話系統會給出一個提示,這樣就生成好了sql語句,選取左邊的method里的各個方法可以看到在右邊SQL Query里出現相應的SQL語句。(如下圖)

    將所有SQL語句里的EmployeeBeanTable修改成employee后按下OK關閉窗口。

    點選左邊的employeeDISName,在右邊選擇JNDI Name標簽,在Application下的JNDI標簽中填寫ejb/EmployeeEntityBean,這個名字要和EmployeeOut程序里的initial.lookup("ejb/EmployeeEntityBean")一樣。(如下圖)


    接下來添加Web Component
    選擇File---->new Web Component,第一個窗口直接next,進入WAR File窗口,在WAR Display Name中輸入一個顯示名:employeeWEB。(如下圖)

    點擊Content下的Edit按鈕,彈出Edit Contents of employeeWEB的窗口里,選擇first下employee下beans目錄下的EmployeeOut.class文件和first目錄下的login.jsp文件后點擊Add按鈕(如下圖),按OK關閉窗口。

    在WAR File窗口里按Next按鈕
    在Choose Component Type 窗口里選擇jsp按next到Component General Properites 選擇Jsp FileName為login.jsp,Web Component Name里輸入EmployeeWEB。后按Finish(如下圖)

    點選左邊窗口的employeeDISName,選取右邊的Web Context的面板。在Context Root里輸入employee,這相當于虛擬目錄名。選擇Tools----->Deploy Application,在Introduction窗口選擇object to Deploy里為employeDISName,Target Server為localhost。按Next后檢查JNDI有沒有寫對,如果正確,按Next。確認Context Root后按Next。最后按Finish開始部署應用程序。部署成功后出現如下圖所示的信息。

    然后打開IE輸入http://localhost:8000/employee/login.jsp 就可以看到數據庫的用戶的姓名了。
    注意事項:如果運行的時候提示找不到表或者字段的話,請把SQL語句里的表名和字段名改成大寫的。因為cloudview建立好數據庫后默認是大寫的。
    作者信箱:wengchy@shvns.com

    來源:ZDNet China


    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    ...

    熱門標簽

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>