999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于TAPESTRY 5+EJB 3架構(gòu)的石化行業(yè)管理系統(tǒng)實(shí)現(xiàn)

2011-12-31 00:00:00向才鳳張藝劉玉慧
中國管理信息化 2011年13期

[摘要] 傳統(tǒng)的石化行業(yè)管理主要以電子文檔和紙質(zhì)材料為媒介,分散且不便于集中管理。對此,本文提出開發(fā)基于Tapestry 5和EJB 3的B/S架構(gòu)的數(shù)據(jù)庫管理系統(tǒng),對多年積累的數(shù)據(jù)進(jìn)行匯總分析,為高級(jí)管理人員提供決策參考。

[關(guān)鍵詞] Tapestry;EJB 3;框架

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2011 . 13. 039

[中圖分類號(hào)]F270.7;TP311 [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1673 - 0194(2011)13- 0065- 03

Web應(yīng)用程序可以分為表示層、業(yè)務(wù)層、持久層和領(lǐng)域模型層。按照這種分層結(jié)構(gòu),本文分別介紹Tapestry和EJB 3兩種開源框架。Tapestry使得程序具有一致性的結(jié)構(gòu),通過開發(fā)Tapestry組件,增強(qiáng)了代碼的復(fù)用性和程序的健壯性。結(jié)合項(xiàng)目實(shí)例介紹了如何整合這兩種框架構(gòu)建Web的應(yīng)用。應(yīng)用這種整合框架,可以使系統(tǒng)層次清晰,并實(shí)現(xiàn)層之間的解耦,各層可以獨(dú)立開發(fā),極大地提高了開發(fā)效率。

1 基于Tapestry+EJB3的軟件架構(gòu)

1.1 Tapestry框架簡介

Tapestry是一個(gè)使用Java語言創(chuàng)建Web應(yīng)用的面向組件的開源框架。其中Tapestry 5是框架的第5個(gè)版本。Tapestry應(yīng)用建立在根據(jù)組件構(gòu)建的頁面的基礎(chǔ)上。這個(gè)框架能夠提供輸入驗(yàn)證、本地化/國際化、狀態(tài)/持續(xù)性管理、URL構(gòu)建/參數(shù)映射等功能。獨(dú)一無二的類重載機(jī)制使得開發(fā)者對源代碼的修改無需重新部署和啟動(dòng)便可立即顯現(xiàn),極大地提高了開發(fā)的效率。組件的思想貫穿Tapestry 5始終。以BeanEditForm組件為例,用戶只需要寫極少的代碼就可以實(shí)現(xiàn)一個(gè)JavaBean中所有屬性到一組組件的映射。同時(shí),在Web 2.0時(shí)代,Tapestry提供了老練的Ajax支持。由于JavaScript在瀏覽器運(yùn)行時(shí)的不穩(wěn)定性,框架對其進(jìn)行了很好的隱藏。此外,完善的驗(yàn)證機(jī)制,內(nèi)置的國際化策略都使得Web開發(fā)輕而易舉。系統(tǒng)開發(fā)工程中大量使用該框架的優(yōu)秀特性,極大地提高了開發(fā)的效率。

1.2 EJB 3框架簡介

EJB(Enterprise JavaBeans)是J2EE平臺(tái)的中心,它用于開發(fā)和部署商業(yè)應(yīng)用程序的分布式組件模型,EJB作為一種實(shí)現(xiàn)業(yè)務(wù)邏輯的組件技術(shù),具有可擴(kuò)展性、事務(wù)處理和安全保密性。而項(xiàng)目采用的是EJB 3.0,使用元注釋(Annotation)替換原有的XML的部署描述文件以及采用依賴注入等優(yōu)勢L4J,降低了程序的復(fù)雜性和組件之間的耦合性,大大提高了系統(tǒng)的開發(fā)效率。而將系統(tǒng)的業(yè)務(wù)核心集中在EJB層完成,在Web層實(shí)現(xiàn)MVC模式調(diào)用,實(shí)現(xiàn)了EJB層和Web層的解耦,使得編程難度降低,且形成模板化,從而使得本系統(tǒng)具有易于維護(hù)和擴(kuò)展、低成本、高效率等特點(diǎn) 。開發(fā)需求多變的企業(yè)級(jí)應(yīng)用系統(tǒng),應(yīng)用EJB技術(shù)將大大簡化系統(tǒng)的開發(fā)和維護(hù)成本。

EJB 的運(yùn)行環(huán)境:EJB 需要運(yùn)行在EJB容器,每個(gè)JavaEE應(yīng)用服務(wù)器都含有EJB 容器和Web 容器,所以既可以運(yùn)行EJB,也可以運(yùn)行Web 應(yīng)用。目前支持EJB 3.0的應(yīng)用服務(wù)器有JBOSS(4.2.x 以上版本)、Glassfish、Weblogic(10 以上版本)、Sun Application Server(9.0 以上版本)、Oracle Application Server(10g 以上版本)和我們國內(nèi)的Apusic 應(yīng)用服務(wù)器。本文將介紹JBOSS和Weblogic,前者是使用者最多的開源應(yīng)用服務(wù)器,后者是市場占有率最高的商業(yè)應(yīng)用服務(wù)器。注意:Tomcat 目前只是Web 容器,它不能運(yùn)行EJB應(yīng)用。

1.3基于EJB 3的B/S架構(gòu)

1.3.1 Enterprise JavaBeans(EJB)

Enterprise JavaBeans 是一個(gè)用于分布式業(yè)務(wù)應(yīng)用的標(biāo)準(zhǔn)服務(wù)端組件模型。采用Enterprise JavaBeans 架構(gòu)編寫的應(yīng)用是可伸的、事務(wù)性的、多用戶安全的。可以一次編寫這些應(yīng)用,然后部署在任何支持Enterprise JavaBeans 規(guī)范的服務(wù)器平臺(tái),如Jboss、Weblogic等。

Enterprise JavaBean(EJB)定義了3種企業(yè)Bean,分別是會(huì)話Bean(Session Bean),實(shí)體Bean(Entity Bean)和消息驅(qū)動(dòng)Bean(MessageDriven Bean)。

1.3.2JNDI

JNDI是自JDK 1.3 版本開始就綁定的標(biāo)準(zhǔn)Java API。它為各種現(xiàn)有的命名和目錄服務(wù)提供了通用接口:DNS、LDAP、活動(dòng)目錄(Active Directory)、RMI注冊器、COS注冊器、NIS 及文件系統(tǒng)。在結(jié)構(gòu)上,JNDI 由兩部分組成:客戶API 和服務(wù)提供商接口(Service Provider Interface,SPI),應(yīng)用程序通過客戶API 訪問命名和目錄服務(wù);服務(wù)提供商接口用于供廠商創(chuàng)建命名和目錄服務(wù)的JNDI 實(shí)現(xiàn)。JNDI的結(jié)構(gòu)如圖1所示。

EJB 開發(fā)者只需要知道使用客戶API 如何訪問命名和目錄服務(wù)即可,而不需要知道JNDI SPI 的使用,因?yàn)椴恍枰褂茫剩危模?SPI 開發(fā)JNDI 實(shí)現(xiàn)產(chǎn)品,這就好比通過JDBC 訪問數(shù)據(jù)庫,我們只需要知道使用JDBC API 如何訪問數(shù)據(jù)庫,而不需要知道數(shù)據(jù)庫的JDBC 驅(qū)動(dòng)如何實(shí)現(xiàn)。使用客戶API 訪問EJB 3.0,只需編寫少量JNDI代碼。

1.3.3應(yīng)用范圍

EJB 3.0只專注于業(yè)務(wù)核心的開發(fā),它并不關(guān)心客戶端的類型及其使用的技術(shù)。既可以在Web 中調(diào)用EJB,也可以在J2SE 或J2ME中調(diào)用EJB。對于在Web中調(diào)用EJB,可以把代碼直接寫在JSP中,但這種做法已經(jīng)被拋棄,原因是Java代碼與HTML代碼相混合,不但可讀性差,而且維護(hù)起來也很麻煩。目前,在Web 開發(fā)上,我們可以引入第三方Web框架,如Struts,JSF,Spring MVC,Tapestry等。其實(shí)使用EJB開發(fā)項(xiàng)目,對于選擇Web框架會(huì)顯得不是那么重要,因?yàn)槿蘸蠹词垢鼡Q成另一種框架,對于業(yè)務(wù)核心是不會(huì)構(gòu)成任何影響的。即使如此,我們選擇Web 框架仍需謹(jǐn)慎,因?yàn)檎l也不想換來換去。目前,可推薦的Web框架是Struts 和JSF,前者是這幾年的主流框架,使用的開發(fā)人員比較多,后者屬于JavaEE規(guī)范,有望成為Web框架的主角。其中一個(gè)樣例如圖2所示。

(1)瀏覽器請求Test.jsp 文件。

(2)應(yīng)用服務(wù)器的JSP 引擎編繹Test.jsp。

(3)Test.jsp 通過JNDI 查找獲得HelloWorld EJB 的存根對象,然后調(diào)用SayHello()方法,EJB 容器截獲到方法調(diào)用。

(4)EJB 容器調(diào)用HelloWorld 實(shí)例的SayHello()方法。

2項(xiàng)目實(shí)例

2.1 EJB 3端:META-INF/persistence.xml 配置文件

關(guān)聯(lián)所有的持久層類,企業(yè)級(jí)數(shù)據(jù)庫可以利用HQL語法無縫將數(shù)據(jù)轉(zhuǎn)換成對象。

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence">

<persistence-unit name="core">

<jta-data-source>java:/oildata</jta-data-source>

<class>com.jncom.core.ejb3.control.entity.UserHBM</class>

<class>com.jncom.core.ejb3.control.entity.RoleHBM</class>

<class>com.jncom.core.ejb3.control.entity.OperationHBM</class><exclude-unlisted-classes>true</exclude-unlisted-classes>

<properties>

<property name="hibernate.hbm2ddl.auto" value="update" />

<property name="hibernate.dialect"

value="org.hibernate.dialect.SQLServerDialect" />

<property name="hibernate.show_sql" value="false" />

</properties>

</persistence-unit>

</persistence>

2.2 EJB3端:core/com/jncom/core/ejb3/base/ 持久層核心代碼

class BaseEntity

類型:接口

目的:通過實(shí)現(xiàn) java.io.Serializable 接口以啟用其序列化功能。主要加載DAO層中的類。

class BaseSvc

類型:抽象類

目的:實(shí)例化DAO中的各種方法。

interface GridDataSource

類型:接口

目的:配合表格組件使用,完成分頁等具體功能,并保證數(shù)據(jù)庫取值的范圍。

2.3 EJB 3端:JBOSS的數(shù)據(jù)庫連接配置

不同的數(shù)據(jù)庫對應(yīng)不同的配置文件,以下是SQL Server的配置文件。

jboss-4.2.2.GA\server\default\deploy\ mssql-ds.xml

<datasources>

<local-tx-datasource>

<jndi-name>oildata</jndi-name>

<connection-url>jdbc:sqlserver://127.0.0.1:1433;DatabaseName=oildata</connection-url>

<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>

<user-name>oildata</user-name>

<password>oildata</password>

<metadata>

<type-mapping>MS SQLSERVER2005</type-mapping>

</metadata>

</local-tx-datasource>

</datasources>

2.4 Tapetry 5端:com/jncom/core/tapestry/ejbinject/EjbInjectImpl.java 關(guān)聯(lián)EJB 3

通過從配置文件中取得相應(yīng)函數(shù),指向關(guān)聯(lián)的EJB 3應(yīng)用。

public EjbInjectImpl() {

try {

if (initContext == null) {

Properties props = new Properties();

props.setProperty("java.naming.factory.initial",

"org.jnp.interfaces.NamingContextFactory");

props.setProperty("java.naming.provider.url", SystemConfig

.getAppserverip()+ ":1099");

props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming");

initContext = new InitialContext(props);

} catch (Exception e) {

e.printStackTrace();

配置文件為:SystemConfig_zh_CN.properties

SERVERIP=192.168.0.180

SERVERPORT=1001APPSERVERIP=192.168.0.180

2.5 如何調(diào)用EJB 3中的DAO

@InjectEjb("UserServiceBean/remote")

private UserServiceBeanRemote userService;

上述應(yīng)用寫入到Java的表現(xiàn)層類中即可直接應(yīng)用EJB 3中的相應(yīng)的DAO方法。

3結(jié)束語

本文介紹了J2EE開發(fā)中的輕量級(jí)框架組合Tapestry+EJB 3,并通過實(shí)例說明組合框架的應(yīng)用。應(yīng)用Tapestry+EJB 3框架構(gòu)建Web應(yīng)用程序具有很好的擴(kuò)展性、可維護(hù)性,并能充分發(fā)揮兩者的優(yōu)勢,因此該組合框架具有很好的應(yīng)用前景。

主要參考文獻(xiàn)

[1]李慧宗,孟祥瑞.基于J2EE的中小企業(yè)電子商務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國管理信息化,2010(1):109-111.

[2]劉能現(xiàn),俞建家.基于Tapestry+Spring+Ibatis框架的Web應(yīng)用開發(fā)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008(12):174-177.

主站蜘蛛池模板: 欧美高清三区| 亚洲性影院| 国产免费黄| 中文字幕佐山爱一区二区免费| 亚洲日韩高清在线亚洲专区| 亚亚洲乱码一二三四区| 国产一区三区二区中文在线| 精品视频一区二区三区在线播| 天天摸夜夜操| 婷婷六月在线| 欧美国产视频| 久久国产乱子伦视频无卡顿| 夜夜爽免费视频| www.99在线观看| 亚洲AV人人澡人人双人| 国产精品一区二区不卡的视频| 麻豆精品久久久久久久99蜜桃| 亚洲成综合人影院在院播放| 国产主播在线观看| 男人天堂伊人网| а∨天堂一区中文字幕| 色综合热无码热国产| 日韩久草视频| 欧美乱妇高清无乱码免费| 亚洲全网成人资源在线观看| 欧美精品v日韩精品v国产精品| 久久99国产乱子伦精品免| 亚洲第一页在线观看| 国产精品99一区不卡| 蜜桃视频一区二区三区| 日本一区二区不卡视频| 天堂岛国av无码免费无禁网站| 亚洲国产欧洲精品路线久久| 欧美精品高清| 精品超清无码视频在线观看| 香蕉伊思人视频| 婷婷久久综合九色综合88| 国产系列在线| 青青草91视频| 国产精品亚洲天堂| 亚洲无码免费黄色网址| 国产91视频观看| 国产最新无码专区在线| 99一级毛片| 蜜臀AVWWW国产天堂| 国产人人射| a天堂视频| 婷婷六月综合网| 好吊色国产欧美日韩免费观看| 97在线免费| 欧洲熟妇精品视频| 在线播放精品一区二区啪视频| 精品国产一二三区| 欧美色图第一页| 本亚洲精品网站| aaa国产一级毛片| 伊人成人在线| 韩日午夜在线资源一区二区| 欧美曰批视频免费播放免费| 高清无码手机在线观看| 99热这里只有精品免费| 亚洲无码精彩视频在线观看| 亚洲免费播放| 黄色网站不卡无码| 97青草最新免费精品视频| 毛片视频网址| 国产凹凸视频在线观看| 在线观看国产黄色| 亚洲综合婷婷激情| 色综合久久88| 无码人妻免费| 无码专区在线观看| 色综合色国产热无码一| 91麻豆精品视频| 热思思久久免费视频| 免费在线播放毛片| 国产黄色免费看| 久久婷婷综合色一区二区| 好吊色妇女免费视频免费| 制服丝袜亚洲| 99无码熟妇丰满人妻啪啪| 亚洲午夜福利精品无码不卡|