隨筆-71  評論-4  文章-0  trackbacks-0

          文章摘要:現在很多J2EE應用程序開發模式都是使用Jbuilder+Weblogic+Oracle開發,而Jbuilder由于占用內存大,而對機子配置提出了更高的要求。本文向大家介紹一種方便,并且提供豐富插件并且免費的可視化編程工具Eclipse.。本文所使用的開發環境為Eclipse+Weblogic+Oracle。文中簡要介紹了環境的配置,會話EJB、實體EJBCMP)的創建過程,Struts框架的使用方法等。

          文章目錄

          文章標題:在Eclipse+WebLogic下開發J2EE應用程序...

          文章目錄:...

          正文部分:...

          一.環境準備...

          開發工具與插件介紹...

          安裝并配置環境變量...

          Weblogic 8.1的配置與使用...

          Eclipse的配置與使用...

          Oracle的配置與使用...

          . 實例概述...

          數據庫...

          結構圖...

          三.創建無狀態會話Bean.

          工作...

          創建J2EE項目...

          創建Stateless Session Bean.

          打包發布EarLeave.

          四.創建CMP----UIDGenerator.

          任務...

          創建CMP實體Bean----UIDGenerator.

          添加業務方法nextValue.

          添加回調方法...

          在LeaveAccess中添加業務方法...

          創建測試程序...

          五.創建CMP----LeaveApp.

          任務...

          創建CMP實體Bean----LeaveApp.

          實現ejbCreate方法...

          增加查詢方法...

          增加業務方法getLeaveAppData().

          在LeaveAccessBean中添加業務方法getAllLeaveApp.

          為LeaveAccess添加業務方法SaveLeaveForm.

          測試CMP.

          六.創建web客戶端...

          任務..

          創建leave.jsp.

          創建display.jsp.

          文章總結...

          正文部分:

          一.環境準備

          開發工具與插件介紹

          1、  JDK

          j2se v1.4.2  http://java.sun.com/j2se/downloads.html

          2、  Weblogic

          Weblogic8.1 http://dev2dev.bea.com.cn/

          應用服務器(APS),提供J2EE組件運行所用的J2EE容器和優秀的集成開發環境。

          3、  ECLIPSE

          eclipse v2.13 http://www.eclipse.org/

          j2ee集成開發環境。

          注意:不要下3.x版的,因為 EasyStruts plugin 是在 Eclipse 2.x 環境下編寫的而不是3.x. Eclipse 3.x為他們的 plugins使用了不同的格式和 APIs . 所以不能兼用。

          4、  Oracle

          Oracle8.1.7 http://www.mysql.com/

          大中型關系數據庫

          5、  LOMBOZ

          lomboz.v213 http://www.objectlearn.com/index.jsp

          LOMBOZ Tutorials http://www.objectlearn.com/support/docs/index.jsp

          eclipse開發EJB的插件

          6、  EASYSTRUTS

          easystruts http://sourceforge.net/projects/easystruts

          eclipase開發struts的插件

          7、  STRUTS

          struts http://jakarta.apache.org/struts/

          基于Module-View-Control(MVC)模式的Web框架(Framework).

          8、  JASPERREPORTS

          jasperreports http://jasperreports.sourceforge.net/

          強大的報表生成工具,可將富文本顯示在屏幕、打印或轉換成流行的PDFHTMLXLSCSVXML格式。


          安裝并配置環境變量

          1、  JDK

          j2sdk1.4.2安裝在C:j2sdk1.4.2

          設置環境變量JAVA_HOME=C:j2sdk1.4.2

          PATH=%PATH%;%JAVA_HOME%in;%JAVA_HOME%jrein;

          CLASSPATH=%CLASSPATH%;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;

          2、  Weblogic8.1

          Weblogic8.1安裝在C:ea

          安裝后,會直接加入環境變量

          PATHCLASSPATH

          3、  ECLIPSE

          eclipse-2.13安裝在C:eclipse

          4、  Oracle8.1.7

          Oracle8.1.7安裝在D:oracleOra81

          5、  LOMBOZ

          lomboz.213.zip解壓,然后把文件夾featuresplugins中文件夾和文件拷貝到eclipse相應目錄。

          6、  EASYSTRUTS

          org.easystruts.eclipse_0.6.4.zip解壓,然后將com.cross.easystruts.eclipse_0.6.4拷貝到eclipseplugins目錄

          7、  STRUTS

          jakarta-struts-1.1解壓到C:jakarta-struts-1.1

          設置環境變量STRUTS_HOME=C:jakarta-struts-1.1

          CLASSPATH=%CLASSPATH%;%STRUTS_HOME%libstruts.jar;

          8、  JASPERREPORTS

          jasperreports-0.5.0-project解壓到C:jasperreports-0.5.0

          設置環境變量CLASSPATH=%CLASSPATH%;

          C:jasperreports-0.5.0distjasperreports-0.5.0.jar;C:jasperreports-0.5.0libservlet.jar;

          Weblogic 8.1的配置與使用

          1。如果已經設置了環境變量,則啟動WebLogic8.1Configuration Wizard,新建一個 weblogic service。建立全部使用默認的配置。完成后將在myserver下新建一個mydomainweblogic service

          2。啟動WebLogic8.1,并打開一個IE,在URL中輸入http://localhost:7001/console,對新建service的屬性進行配置。輸入建立weblogic service注冊的usernamepassword

          3l如果你的browser不支持console,可以download新的browser。一般情況下沒有必要。點選下方的”continue with my current browser”超鏈接。.

          4l點擊“Deployerments”節點->Web Application Medules”,選擇其中的“Deploy New Web Applocation Medules,新建一個Application

          5l選擇此WebServer的默認的目錄:(注意:目錄下含有WEB-INF目錄,在WEB-INF目錄下含有web.xml文件的文件夾才能設置成默認目錄)。然后點擊“target modules

          建立完成。

          52再次啟動WebLogic8.1Configuration Wizard,選擇extend an existing weblogic configuration,點下一步。選擇先前建立的weblogic service,點下一步。選擇DefaultWebApp,點下一步,這樣就建立了一個默認的Web應用。

          6。通過monitoring標簽可以查看Application的資源的情況。

          測試:

          重新啟動WebLogic8.1,在IEURL中輸入http://localhost:7001/DefaultWebApp/index.html

          weblogic81 的目錄C:eauser_projectsdomainsmydomain_server(我建立的相應WebServer目錄)下找到config.xml文件,在文件中找到

          IdentityAndTrustLocations="KeyStores" ListenPort="7002" Name="myserver"/>

          這一句。在其下面添加一行:

          <WebServer DefaultWebApp="DefaultWebApp" Name="myserver"/>

          保存。

          就為這個Application設置了一個默認目錄為空。可以在URL中輸入http://localhost:7001/index.html。進入wl81主目錄。

          7。關閉Weblogic8.1應用服務

          選擇先前建立的myserver,,點右鍵選取start/stop this server…,關閉服務。

          配置連接池和數據源

          1、  配置JDBC

          啟動weblogic server,進入console,點Connection Pool,選取Configure a new JDBC Connection Pool... 填入以下信息。

          General欄目:

           



          Connection欄目:

          CapacityIncrement = 50
          MaxCapacity = 100
          Capacity Increment: 5
          Statement Cache Type:LRU
          Statement Cache Size: 5

          最后,點擊Apply,然后去Targets,選中你的server,點Apply。

          至此,Connection Pool已經配置完畢。

          2. 指定數據源

          單擊DataSources,進入配置界面。

          1. 單擊Configure a new JDBC Data Source..配置新的datasource

          2。填入以下數據:
          Name: MyDS (自己隨便起)
          JNDI: jdbc/OracleDS
           
          把后邊兩項打上勾。


          Pool Name: MyOra (一定要對應你的Connection Pool的 Name)
          點擊Create,然后去Targets里邊,點擊apply。。

          配置完成。。。

          Eclipse的配置與使用

          1、  安裝Eclipse

          解壓eclipse-SDK-M20040218-win32.zipc:eclipse

          解壓Lomboz插件lomboz.213.zip,然后拷貝到eclipse相應目錄plugins;

          解壓Struts插件org.easystruts.eclipse_0.6.4.zip,然后拷貝到eclipse相應目錄plugins;

          解壓拷貝至plugins文件夾后重啟eclipse

          2、  配置Lomboz

          2.1、選擇菜單Window > Open Perspective > Java

          2.2、選擇菜單Window > Customize Perspective > Other,Lomboz Actions子菜單打勾,OK后工具欄上將增加一個相應圖標按鈕,點擊它會在工作臺上出現一個Lomboz J2EE視圖

          2.3、選擇菜單Window > Customize Perspective > File > New,將所有以Lomboz開頭的節點打勾。完成之后,在我們的菜單File->New之后出現了許多以Lomboz開頭的文件類型

          2.4、選擇菜單Window > Customize Perspective > Window > Show view,選擇其中的ConsoleLomboz J2EE View

          3、  配置Eclipse

          3.1、選擇菜單Window > Preferences > Java > New Project,指定源文件和輸出文件的文件名:Source folder name:srcOutput folder name:bin

          3.2、選擇菜單Window > Preferences > Lomboz,確信JDK Tools.jar被設置為%JAVA_HOME%lib ools.jar

          3.3.、再進入Lomboz下的Server Definitions子節點,在Server types下找到我們期望的BEA Weblogic Server v8.1,中的Server NameserverDirectoryusername,password作相應修改即可。

          4、  配置Struts

          4.1、選擇菜單Window > Customize Perspective > File >New,選擇其中的Easy ×××項打勾

          4.2、選擇菜單Window > Preferences > Easy Struts,Struts1.1,Add JARs,添加%STRUTS_HOME%lib*.jar;再點Add TLDs,添加%STRUTS_HOME%webappsstruts-templateWEB-INF*.tld;

          Oracle的配置與使用

          1、    創建數據庫時注意實例名和相應表空間,回滾段的設置(詳情請參考oracle相應書籍)

          2、    啟動SQL PLUS

          3、    登錄數據庫

          我的應用環境登錄用戶名sb502,密碼sb502

          connect sb502/sb502(如果是連接遠程數據庫使用連接串connect sb502/sb502@alias )

          4、    創建數據庫orcl;(注意應給登陸用戶賦予相應的權限)

          5、    因我裝的是oracle817,所以將oracle目錄下的classes12.zip, nls_charset12.zip拷貝至weblogic81安裝的目錄下的你建立的Web應用的相應lib目錄下,將其寫進環境變量,并將其寫進啟動腳本startWLS.cmdclasspath加上oracle驅動,以便于weblogic8.1連接池的配置。

          注意:Oracle 8.17與 奔騰 四 1。7G的CUP會有沖突,出現無法正常安裝的問題。這時可以將Oracle 8.17的安裝文件拷到硬盤上,再在安裝文件夾中搜索“SYMCJIT.DLL”的文件,應該可以找到2個,刪除掉即可正常安裝。

          .實例概述

          數據庫

          1、  數據庫orcl中有兩個表,它們由CMP自動生成。其中t_uidgenerator有兩個字段:NAME代表應用名、UID代表此應用的唯一標識號;t_leaveapp有如下七個字段,分別代表請假單的標識號、員工編號、員工名、部門、請假日期、請假天數、請假原因。

                t_uidgenerator                             t_leaveapp

          圓柱形: NAME VARCHAR (PK)
UID INTEGER
圓柱形: UID INTEGER (PK)
EMPLOYEENO VARCHAR
EMPLOYEENAME VARCHAR
DEPARTMENT VARCHAR
LEAVEDATE DATE
LEAVEDAYS INTEGER
REASON VARCHAR

           

           

          結構圖

          1、  leaveApp結構圖:客戶端通過web請求Servlets(或JSP),servlet調用Session EJB ----LeaveAccess提供的方法訪問數據,而數據的存取由對應的CMP EJB來實現。(注:CMP是由EJB容器自動完成對數據庫的操作,你所有做的,就是在實體bean重寫入SetXXXgetXXX方法,然后在ejb-jar.xml中定義cmp-field就可以。)

                


          2         leaveAccessBean是一個Session EJB,它封裝了與實體Bean UIDGeneratorLeaveApp復雜的業務交互,為表達層提供各種數據訪問接口。

          三.創建無狀態會話Bean

          工作

          1、  創建一個J2EE項目,命名為MyLeave

          2、  創建一個無狀態會話Bean,包為com.ssess.session,命名為LeaveAccess

          3、  部署LeaveAccess Bean

          創建J2EE項目

          1、  點菜單File > New > Lomboz J2EE Project,將彈出一個創建向導窗口。

          2、  Project name后輸入項目名MyLeave,點Next

          3、  Java Settings窗口中,確定SourceSource foldersMyLeave/src(new)output folderMyLeave/bin,點Next進入Create J2EE Module窗口

          4、  Web Modules下點Add按鈕,輸入Module NameWebLeave

          5、  Ejb Modules下點add按鈕,輸入Module NameEjbLeave

          6、  Targeted Servers下選typeBEA Weblogic Server v8.1 Add按鈕,將會在Targeted Servers框中添加一個BEA Weblogic Server v8.1的服務器

          7、  完成后點Finish按鈕

          創建Stateless Session Bean

          1、  選菜單File > New > Lomboz EJB Creation Wizard,將打開Create EJB窗口

          2、  指定Packagecom.ssess.sessionNameLeaveAccessEJB TypeStateless Session EJB

          3、  Finish完成后將在src目錄下創建一個包為com.ssess.session的會話Bean----LeaveAccessBean

          4、  從上圖我們可以看到,它已經創建了一個Class級別的標簽(Tag)@ejb.bean,該標簽指明了Bean的類型、名字以及將在Home 接口里生成的JNDI名。(注意:我們為Bean命名的時候不需要以Bean結尾,向導將自動為我們添加)

          5、  打開節點EjbLeave > META-INF下的xdoclet.xml文件,Lomboz就是使用它來生成需要的接口類和幫助類,當你有一些特殊的需求時可以編輯此文件,關于其中標簽的含義及用法請參考Xdoclet文檔的ejbdoclet部分。

          6、  <dataobject/>將生成數據對象來處理EJB組建持久域(對應于數據庫中表的列)的值。

          <utilobject/>創建訪問遠程和本地Home對象的方法

          <remoteinterface/>生成EJB的遠程接口

          <localinterface/>生成EJB的本地接口

          <homeinterface/>生成EJB的遠程Home接口

          <localhomeinterface/>生成EJB的本地Home接口

          <entitypk/>生成EJB的主鍵類

          <entitybmp/>BMP創建實體bean

          <entitycmp/>CMP創建實體bean

          <session/>生成會話bean

          7、  <weblogic/>weblogic服務器所需的標簽,必須指定數據源、數據源映射和關系映射。我們設定datasource=”我填的是weblogic設的數據源值;更多信息可以參考有關weblogic文檔。

            <weblogic version="6.0" xmlencoding="UTF-8" destdir="${ejb.dd.dir}" validatexml="false" datasource="MyDS" mergedir="${ejb.dd.dir}" persistence="weblogic" />

          8、  展開com.ssess.session包下的LeaveAccessBean節點,用右鍵打開快捷菜單,選擇Lomboz J2EE > Add EJB to Module,在EJB[EjbLeave]前打勾,點OK將會話Bean添加到EJB模塊中。

          9、  選擇菜單 Window > Show View > Lomboz J2EE View打開Lomboz J2EE View視圖,可以看到EjbLeave模塊下出現了com.ssess.session.LeaveAccessBean

          10、              右鍵點Package Explorer視圖中的節點EjbLeave,選Lomboz J2EE > Generate Ejb Classes。完成后將在ejbsrc下生成LeaveAccess.javaLeaveAccessHome.javaLeaveAccessLocal.javaLeaveAccessLocalHome.javaLeaveAccessSession.javaLeaveAccessUtil.java六個java文件;在EjbLeave > META-INF 下生成ejb-jar.xmljboss.xml,weblogic-ejb-jar.xml

          <weblogic-ejb-jar>

           <description><![CDATA[Generated by XDoclet]]></description>

             <weblogic-enterprise-bean>

                <ejb-name>LeaveAccess</ejb-name>

                <stateless-session-descriptor>

                </stateless-session-descriptor>

                <reference-descriptor>

                </reference-descriptor>

                <jndi-name>LeaveAccessBean</jndi-name>

                <local-jndi-name>LeaveAccessLocal</local-jndi-name>

             </weblogic-enterprise-bean>

          <!--

          To add enterprise beans that you have deployment descriptor info for, add

          a file to your XDoclet merge directory called weblogic-enterprise-beans.xml that contains

          the <weblogic-enterprise-bean></weblogic-enterprise-bean> markup for those beans.

          -->

          </weblogic-ejb-jar>

          打包發布EarLeave

          1、  右鍵點MyLeave > New > Lomboz EAR Module,彈出Create Ear Module窗口,將display-name:lomboz改名為EarLeave,右鍵點EarLeave選擇Add web module增加一個myapp.war、右鍵點EarLeave選擇Add ejb module增加一個myBean.jar。設置Ear下的display-namedescriptionLeave Application Form

          2、  選中左邊Leave Application Form下的myapp.war,修改右邊的web-uriWebLeave.warcontext-root/leavelinked web module選中WebLeave

          3、  選中myBean.jar,修改右邊ejb-jar uriEjbLeave.jarLinked ejb module 選中EjbLeave

          選擇Targeted ServersBEA Weblogic Server v8.1,完成設置。將在MyLeave下生成EarLeave模塊。打開META-INF下的build.xml,刪除<target name=”modules” depends=”init”>下的重復項。(如果我們創建ear模塊時不設置Linked web moduleLinked ejb module無法生成application.xmlbuild.xml,設置后build.xml中出現重復項<ant …>,須刪除重復項

          4、  展開Lomboz J2EE View視圖下的MyLeave項目,右鍵點EarLeave,選Deploy。(當然,我們事先啟動BEA Weblogic Server v8.1 server

          四.創建CMP----UIDGenerator

          下面介紹如何創建一個CMPUIDGenerator是一個序列生成器,負責為各個應用生成唯一標識符。

          任務

          1、  創建一個CMP,包為com.ssess.cmp,名為UIDGenerator

          2、  實現ejbCreate方法:將所有屬性值作為參數傳遞進來,調用相應的set方法設置值。

          3、  增加一個業務方法取下一個可用的序號:public Integer nextValue()

          4、  部署UIDGeneratorBean

          5、  LeaveAccessBean中添加一個業務方法:public Integer nextValue(String name)

          6、  增加回調方法setEntityContextunsetEntityContext

          7、  創建一個客戶端測試程序SessionCMPClient,包為com.ssess.client

          8、  運行客戶端程序并測試Bean

          創建CMP實體Bean----UIDGenerator

          1、  Package Explorer視圖中展開MyLeave節點,右鍵點src打開快捷菜單,選New > Lomboz EJB Creation Wizard,在打開的EJB創建向導中指定Packagecom.ssess.cmpNameUIDGeneratorEJB Type選擇Container Managed Entity EJB。點Next

          2、  打開Container Managed Persistence對話框,指定Schema nameUIDGeneratorTable namet_uidgenerator

          3、  Persistent fields下指定FieldnameField typejava.lang.StringDatabase columnnameSQL typevarchar;然后點Add按鈕將在Fields中添加一項;選中該項,點“Make primary key”按鈕

          4、  Persistent fields下指定FielduidField typejava.lang.IntegerDatabase columnuidSQL typeinteger;然后點Add按鈕將在Fields中再添加一項。完成后點“finish

          5、  完成ejbCreate(String name)方法

          public java.lang.String ejbCreate() throws javax.ejb.CreateException {

                 String name=null;

          setName(name);

                 setUid(new Integer(0));

                 return null;

              }

          6、  展開Package Explorer視圖下src > com.ssess.cmp包,右鍵點UIDGeneratorBean.java,選Lomboz J2EE > Add Ejb to Module,在彈出的對話框中將EJB[EjbLeave]打勾后“OK

          7、  右鍵點Package Explorer視圖下的EjbLeave,選Lomboz J2EE > Generate EJB Classes。完成后將在ejbsrc下生成UIDGenerator.javaUIDGeneratorCMP.javaUIDGeneratorData.javaUIDGeneratorHome.javaUIDGeneratorLocal.javaUIDGeneratorLocalHome.javaUIDGeneratorUtil.java

          8、  @ejb.bean標簽提供了關于EJB的信息:名字、JNDI名、類型、主鍵、還有Schema(用在查詢語句SQL中)

          @ejb.persistence標簽在class級提供與CMP實體Bean對應的表信息;在method級時提供Bean的持久性屬性與數據庫中表的各列的映射信息

          @ejb.pk-field標簽定義主鍵

          添加業務方法nextValue

          1、  展開Package Explorer視圖下MyLeave > src > com.ssess.cmp > UIDGeneratorBean.java,右鍵點UIDGeneratorBean,選New > Lomboz EJB Method Wizard,在彈出的對話框中輸入Method Signaturepublic Integer nextValue()Method TypeBusiness MethodInterface Type Local Interface;然后點按鈕“Finish”。

          2、  實現nextValue方法:

          3、  右鍵點Package Explorer視圖下的EjbLeave,選Lomboz J2EE > Generate EJB Classes

          添加回調方法

          1、  導入包javax.ejb.EntityContextimport javax.ejb.EntityContext

          2、  增加一個變量域eContext用來存儲entity contextprivate EntityContext eContext

          3、  增加一個方法setEntityContextunsetEntityContext

          4、  右鍵點Package Explorer視圖下的EjbLeave,選Lomboz J2EE > Generate EJB Classes

          LeaveAccess中添加業務方法

          1、  增加一個變量域:UIDGeneratorLocalHome cache_UIDGeneratorLocalHome

          詳細操作:

          EjbLeave/META-INF/ejb-jar.xml
                   <ejb-local-ref >
                      <ejb-ref-name>ejb/UIDGeneratorLocal</ejb-ref-name>
                      <ejb-ref-type>Entity</ejb-ref-type>
                      <local-home>com.ssess.cmp.UIDGeneratorLocalHome</local-home>
                      <local>com.ssess.cmp.UIDGeneratorLocal</local>
                      <ejb-link>UIDGenerator</ejb-link>
                   </ejb-local-ref>
          它是由LeaveAccessBean.java中的Tag(見下)生成的:
           * @ejb.ejb-ref ejb-name="UIDGenerator"
           *  view-type="local"
           *  ref-name="ejb/UIDGeneratorLocal"

          2、  展開Package Explorer視圖下的src > com.ssess.session > LeaveAccessBean,右鍵點LeaveAccessBean > New > Lomboz EJB Method Wizard。指定Method Signaturepublic void ejbCreate() throws javax.ejb.CreateException; Method Type:Create Method; Interface Type: Local Interface;實現ejbCreate方法:cache_UIDGeneratorLocalHome = UIDGeneratorUtil.getLocalHome();

          3、  展開Package Explorer視圖下的src > com.ssess.session > LeaveAccessBean,右鍵點LeaveAccessBean > New > Lomboz EJB Method Wizard。指定Method Signaturepublic Integer nextValue(String name); Method Type:Business Method; Interface Type: Local Interface;實現nextValue方法

          4、  添加兩個class級標簽使LeaveAccessUIDGenerator之間建立聯系:

          @ejb.ejb-ref ejb-name=”UIDGenerator”

            view-type=”local”

            ref-name=”ejb/UIDGeneratorLocal”

          這個標簽將在ejb-jar.xml中生成部署描述符,使LeaveAccessBean知道它參照了哪個Bean,這個Bean是什么類型以及這個Bean的參照名是什么。

          @jboss.ejb-ref-jndi ref-name=”UIDGeneratorLocal”

            jndi-name=”UIDGeneratorLocal”

          5、  右鍵點Package Explorer視圖下的EjbLeave,選Lomboz J2EE > Generate EJB Classes。然后改正上面提到的jboss.xml中的錯誤。

          6、  右鍵點Lomboz J2EE View視圖中MyLeave下的EjbLeave模塊,選Deploy

          創建測試程序

          1、  展開Package Explorer下的MyLeave,右鍵點src > Lomboz EJB Test Client Wizard,在彈出的對話框中指定

          Packagecom.ssess.client

          NameSessionCMPClient

          Ejb Homecom.ssess.session.LeaveAccessHome(必須是遠程Home

          Ejb Interfacecom.ssess.session.LeaveAccess (必須是遠程接口)

          Target ServerBEA Weblogic Server v8.1

          完成后點“Finish

          2、  因為客戶端測試程序里無法調用LeaveAccess本地接口中的方法,所以我們去掉LeaveAccessBean.java中所有方法下的view-type=”local”描述符,再執行Generate EJB Classes,將會在本地接口和遠程接口中都生成這些方法的引用。

          3、  SessionCMPClient.javatestBean()方法中加入語句System.out.println(“test:” + myBean.nextValue(“test”);保存。選中SessionCMPClient后執行菜單Run > Run As > Java Application,最后輸出如下:

          4、  再次執行,將返回test:2,第三次返回test:3,依次遞增。

          五.創建CMP----LeaveApp

          下面我們創建另一個CMP----LeaveApp,它提供了以下一些接口:獲取所有請假記錄、創建新的請假記錄。

          任務

          9、  創建一個CMP,包為com.ssess.cmp,名為LeaveApp

          10、              實現ejbCreate方法:將所有屬性值作為參數傳遞進來,調用相應的set方法設置值。

          11、              增加一個查詢方法,指定其querymethod如下:

          querySELECT OBJECT(a) FROM LeaveApp as a

          method”java.util.Collection findAllLeaveApp()

          12、              增加一個業務方法取當前數據:public LeaveAppData getLeaveAppData()

          13、              部署LeaveApp

          14、              LeaveAccessBean中添加一個業務方法:public ArrayList getAllLeaveApp()

          15、              LeaveAccessBean中添加一個業務方法:public void SaveLeaveForm(String,String,String,Date,Integer,String)

          16、              增加回調方法setEntityContextunsetEntityContext

          17、              創建一個客戶端測試程序SessionCMPClient,包為com.ssess.client

          18、              運行客戶端程序并測試Bean

          創建CMP實體Bean----LeaveApp

          9、  Package Explorer視圖中展開MyLeave節點,右鍵點src打開快捷菜單,選New > Lomboz EJB Creation Wizard,在打開的EJB創建向導中指定Packagecom.ssess.cmpNameLeaveAppEJB Type選擇Container Managed Entity EJB。點Next

          10、              打開Container Managed Persistence對話框,指定Schema nameLeaveAppTable namet_leaveapp

          11、              Persistent fields下指定FielduidField typejava.lang.IntegerDatabase columnuidSQL typeinteger;然后點Add按鈕將在Fields中再添加一項。完成后點“finish”。選中該項,點“Make primary key”按鈕將它設置為主鍵

          12、              Persistent fields下指定FieldemployeeNoField typejava.lang.StringDatabase columnemployeenoSQL typevarchar;然后點Add按鈕將在Fields中添加一項;

          13、              Persistent fields下指定FieldemployeeNameField typejava.lang.StringDatabase columnemployeenameSQL typevarchar;然后點Add按鈕將在Fields中添加一項;

          14、              Persistent fields下指定FielddepartmentField typejava.lang.StringDatabase columndepartmentSQL typevarchar;然后點Add按鈕將在Fields中添加一項;

          15、              Persistent fields下指定FieldleaveDateField typejava.util.DateDatabase columnleaveDateSQL typedate;然后點Add按鈕將在Fields中添加一項;

          16、              Persistent fields下指定FieldleaveDaysField typejava.lang.IntegerDatabase columnleavedaysSQL typeinteger;然后點Add按鈕將在Fields中再添加一項。

          17、              Persistent fields下指定FieldreasonField typejava.lang.StringDatabase columnreasonSQL typevarchar;然后點Add按鈕將在Fields中添加一項;完成后點“finish

          18、              刪除LeaveAppBean.java中無關的標簽后添加@ejb.persistence table-name=”t_leaveapp”

          實現ejbCreate方法

          1、  調用set方法設置各字段值

          增加查詢方法

          1、  class級添加標簽

          @ejb.finder

          query="SELECT OBJECT(a) FROM LeaveApp as a"

          signature="java.util.Collection findAllLeaveApp()"

          2、  展開Package Explorer視圖MyLeave > src > com.ssess.cmp,右鍵點LeaveAppBean.javaLomboz J2EE > Add Ejb to Module > EJB[EjbLeave]后確定。將Bean添加到EJB模塊中。

          3、  右鍵點EjbLeave,執行Lomboz J2EE > Generate Ejb Classes。生成相關文件。

          增加業務方法getLeaveAppData()

          1、  右鍵點LeaveAppBean,選New > Lomboz EJB Method Wizard,指定:

          Method Signaturepublic LeaveAppData getLeaveAppData()

          Method TypeBusiness Method

          Interface TypeLocal Interface

          2、  實現LeaveAppData的構造方法實現getLeaveAppData

          LeaveAccessBean中添加業務方法getAllLeaveApp

          3、  右鍵點LeaveAccessBean,選New > Lomboz EJB Method Wizard,指定:

          Method Signaturepublic java.util.Collection getAllLeaveApp()

          Method TypeBusiness Method

          Interface TypeLocal Interface

          4、  LeaveAccessBean中添加一個變量域private LeaveAppLocalHome cache_LeaveAppLocalHome = null;

          5、  LeaveAccessBean.ejbCreate()中添加cache_LeaveAppLocalHome = LeaveAppUtil.getLocalHome();

          6、  調用LeaveAppLocalHome.findAllLeaveapp()實現getAllLeaveApp()方法

          LeaveAccess添加業務方法SaveLeaveForm

          1、  右鍵點LeaveAccessBean,選New > Lomboz EJB Method Wizard,指定:

          Method Signaturepublic void SaveLeaveForm(String employeeNo, String employeeName, String department, Date leaveDate, Integer leaveDays, String reason)

          Method TypeBusiness Method

          Interface TypeLocal Interface

          2、  調用LeaveAppLocalHome.Create()實現SaveLeaveForm方法。

          3、  class級添加標簽

          4、  右鍵點Package Explorer中的EjbLeave,選Lomboz J2EE > Generate EJB Classes

          5、  修改EjbLeaveMETA-INFjboss.xml的標簽<ejb-ref><ejb-local-ref>

          6、  保存之后右鍵點Lomboz J2EE View視圖中的EjbLeave,選Deploy

          測試CMP

          1、  為了測試,我們將LeaveAccessBean.javamethod的標簽view-type="local"去掉,以便于在遠程接口LeaveAccess.java中生成對應方法供客戶端測試程序調用。

          2、  我們去掉getAllLeaveApp()SaveLeaveForm()方法前的view-type="local"標簽后,右鍵點EjbLeave > Lomboz J2EE > Create EJB Classes

          3、  修改jboss.xml中的錯誤然后發布(Deploy)。

          4、  修改SessionCMPClient.java中的testBean()方法:先增加一條記錄,然后輸出所有記錄

          5、  選中Package Explorer視圖中的SessionCMPClient,點菜單Run > Run as > Java Application。執行輸入如下:

          6、  再次執行,LeaveForm將輸出兩條記錄,依次遞增。

          7、  此時的package explorer視圖如下:

          六.創建web客戶端

          下面介紹如何在表達層創建web客戶端。客戶端最常見的兩個例子是創建ServletsJSP頁,在MVC模式中,Servlets擔當ControllerJSP擔當View

          任務

          1、  創建leave.jspLeaveFormLeaveAction

          2、  創建display.jspDisplayFormDisplayAction

          3、  打包發布

          創建leave.jsp

          1、  右鍵點WebLeave > New > Easy Action Accosied with a form,彈出Struts新建窗口,設定Webapp folder/WebLeaveBase package for generationcom.ssess.struts;點“Next

          2、  進入Struts Form設置窗口,設定Use caseleave。點Form properties后的Add按鈕。

          3、  在彈出的Form屬性對話框中輸入NameemployeeNo,點OK

          4、  同上,添加employeeNamedepartmentleaveDateleaveDaysreason等屬性。Type取默認的java.lang.StringJSP input type取默認的text即可。點Finish回到Form對話框。

          5、  Next進入Struts Action對話框。設置input/leave.jsp,點Next

          6、  Forwards后的Add按鈕,設定Forward namesuccessForward path/display.do。點OK。完成所有設置。

          7、  com.ssess.strutsApplicationResources.properties中添加如下信息:

          8、  leave.jsp稍作修改,如下:

          9、  完成LeaveAction.java。提交表單時保存請假記錄。執行成功后轉向顯示頁。

          10、              完成LeaveForm.javavalidate()方法:去掉異常,返回空值return null;

          創建display.jsp

          1、  右鍵點WebLeave > New > File,在WebLeave下新建文件style.css

          2、  右鍵點WebLeave > New > Lomboz  JSP Wizard,新建display.jsp頁:

          <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

          <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

          <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

          <html>

              <head>

                 <title><bean:message key="display.title"/></title>

                  <link href="<%= request.getContextPath() %>/style.css" rel="stylesheet" type="text/css">

              </head>

              <body>

                     <table class="grid">

                        <tr>

                            <th class="gridheader"><bean:message key="uid"/></th>

                            <th class="gridheader"><bean:message key="employeeNo"/></th>

                            <th class="gridheader"><bean:message key="employeeName"/></th>

                            <th class="gridheader"><bean:message key="department"/></th>

                            <th class="gridheader"><bean:message key="leaveDate"/></th>

                            <th class="gridheader"><bean:message key="leaveDays"/></th>

                            <th class="gridheader"><bean:message key="reason"/></th>

                        </tr>

                        <logic:empty name="displayForm" property="lists">

                            <tr>

                               <td class="griddata" colspan="7"><bean:message key="no_record"/></td>

                            </tr>

                        </logic:empty>

                        <logic:notEmpty name="displayForm" property="lists">

                            <logic:iterate id="item" name="displayForm" property="lists">

                            <tr>

                               <td class="griddata"><bean:write name="item" property="uid"/></td>

                               <td class="griddata"><bean:write name="item" property="employeeNo"/></td>

                               <td class="griddata"><bean:write name="item" property="employeeName"/></td>

                               <td class="griddata"><bean:write name="item" property="department"/></td>                    

                               <td class="griddata"><bean:write name="item" property="leaveDate"/></td>

                               <td class="griddata"><bean:write name="item" property="leaveDays"/></td>

                               <td class="griddata"><bean:write name="item" property="reason"/></td>

                            </tr>

                            </logic:iterate>

                        </logic:notEmpty>

                     </table>

              <body>

          </html>

          3、  New > Easy form,設置Use casedisplay,點Form properties后的Add按鈕,添加一屬性:

          4、  去掉(Create JSP) input前的勾,去掉Create the methodsvalidate()reset()方法的勾,然后點Finish完成。

          5、  完成之后將在srccom.ssess.struts.form包中生成.displayForm.java,在WEB-INFstruts-config.xml中添加<form-bean>

          6、  New > Easy Action,設置Use casedisplayForm namedisplayForm(點Browse…,然后選擇)、input/display.jsp(點Browse…,然后選擇)

          7、  Next,點Forwards后的Add按鈕,設定Forward namesuccessForward path/display.jsp。點OK完成后將在com.ssess.struts.action包中生成displayAction.java,在struts-config.xml中生成<action></action>標簽。

          8、  web.xml中添加如下標簽:

              <ejb-local-ref>

                  <ejb-ref-name>ejb/LeaveAccessLocal</ejb-ref-name>

                  <ejb-ref-type>Session</ejb-ref-type>

                  <local-home>com.ssess.session.LeaveAccessLocalHome</local-home>

                  <local>com.ssess.session. LeaveAccessLocal</local>

                  <ejb-link>LeaveAccess</ejb-link>

              </ejb-local-ref>

          9、  index.jsp<body></body>間添加:<a href="leave.jsp">填寫請假單</a><br/>。為了顯示中文,還得添加:<%@ page contentType="text/html; charset=gb2312" %>

          10、             

          http://localhost:7001/leave 訪問,進行測試。

          文章總結

          本文首先論述了幾種常用開發工具以及他們的配置使用,然后著重介紹了Eclipse與BEA WebLogic Server8.1 和oracle數據庫的集成解決方案:如何創建session bean;如何使用實體bean存取數據;如何使用jsp調用EJB提供的接口和方法訪問數據,希望能與廣大Weblogic開發使用者共同學習,一起進步。在此也一并感謝dev2dev論壇對我們開發者提供的一如既往的技術支持。
           

          參考資料:

          Lomboz 安裝配置說明

          http://www.objectlearn.com/support/docs/installation/install.jsp

          posted on 2005-10-24 20:59 zjw_albert 閱讀(2155) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 广河县| 乌兰县| 冷水江市| 台湾省| 兴山县| 普格县| 霍州市| 仙游县| 红河县| 托克逊县| 堆龙德庆县| 峨眉山市| 宜川县| 汽车| 都昌县| 讷河市| 客服| 丹棱县| 余干县| 建德市| 泰州市| 浦江县| 五家渠市| 独山县| 兰溪市| 平罗县| 高密市| 金塔县| 项城市| 大同县| 中山市| 朝阳区| 县级市| 怀柔区| 金乡县| 嘉定区| 海阳市| 洛宁县| 天气| 沙田区| 杂多县|