帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
J2EE开发n层应用
作者:佚名 发布时间:2005-04-02 来源:不详
 
  摘要:在这篇文章中,
JNDI,EJBs,RMI,JSP,Ja
为了更好地说明这些技术在

我们将介绍13种J2EE(Java 2平
va servlets,XML,JMS,Java
实际中的应用,本文将通过BEA

台企业版)的核心技术:JDBC,
IDL,JTS,JTA,JavaMail和JAF。
System的WebLogic Server来介绍

  Java起初是运用在浏览
的开发。现今,随着越来越
用来开发企业级的服务器端
器和客户计算机上的,当时,很
多的第三方对Java 2平台企业版
应用。
多人都怀疑它是否适合用作服务端
(J2EE)的支持,Java已经被广泛

  J2EE平台包含有一整套
Web的应用。
的服务、应用编程接口(API)

和协议,可用于开发多层的基于

  在这篇文章中,我们将讨论构成J2EE
Java servlets, XML, JMS, Java IDL, J
用在哪里;我们还将介绍每种不同的技术
的13种核心技术:JDBC, JNDI, EJBs, RMI, JSP,
TS, JTA, JavaMail和JAF。我们将介绍每种技术适合
之间是如何通信的。
  为了更好地说明J2EE在现实中的应用
术,WebLogic Server来自BEA Syetem,
绍性文章的阅读对象是对WebLogic Serve
经理和商业分析者。
,我们将通过WebLogic Server来介绍其中主要的技
它是一个广泛使用的J2EE工具。要注意的是,这篇介
r和J2EE不熟悉的开发者、以及对J2EE感兴趣的项目

  分布式体系和J2EE                                                          
  以前,两层的应用--也
层体系。在一些情况下,服
数据访问、应用商业逻辑、
受用户的输入。客户/服务
通常基于私有的协议--典型
Web领域中,可能最重要的
Internet。
称为客户/服务器应用是很常见
务器提供的唯一服务就是数据库
将结果转换为一个格式以便显示
器的体系在开始的时候很容易配
的是私有的数据库协议。商业和
就是扩展,而两层的应用不便于

的。图1表示的就是一个典型的两
服务。在这种情形下,客户端负责
,为用户显示内部的接口,以及接
置,不过难于升级或者扩展,而且
表现逻辑的重新使用也很难。在
升级扩展,因此不适合用在

  

  **图1***************                                        
  (两层的应用体系)                                                            
  为了解决这个两层体系的不足,Sun
层的企业应用。它定义了一套标准化、模
;以及自动处理应用行为的许多细节---
设计了J2EE。J2EE定义了一套标准,可轻松地开发n
块化的组件;并为这些组件提供了一整套完整的服务
例如安全和多线程。
  使用J2EE来开发n层的
能够为以下的每个服务提供
应用,要将原来的2层体系细分
独立的层:
为多个不同的层。一个n层的应用

  表现:在一个典型的Web应用中,运行在客户机器上的浏览器负责处理表现          
  动态产生表现:虽然浏
器,大部分的动态产生都应
Extensible Markup Langua
扩展样式表语言)。
览器可以处理一些动态产生的表
该在Web服务器进行,通过使用J
ge,扩展标记语言)和XSL(Ext

现,不过为了支持多种不同的浏览
SP,servlet或者XML(
ensible Stylesheet Language,

  商业逻辑:实现商业逻辑的最佳方法是通过Session EJB(下文将会提及)。
  数据访问:实现数据访
问的最佳方法是在Entity EJB(
下文将会提及),以及使用JDBC。
  Backend系统集成:可使用各种不同
backend系统的确切种类。
的技术来与backend系统集成。最佳的选择在于

  你也许会问:为什么要这么多层呢?
用。它可让每个层集中在一个特定的角色
用服务器来提供应用服务,以及一个数据
这是由于分层的方法可得到一个更便于扩展的企业应
上--例如,让一个Web服务器提供网页服务,一个应
库服务器来提供数据库服务。
  由于J2EE构建在Java 2
特色。包括有“写一次,到
CORBA技术,以及一个经过
EJB)组件、Java servlets
平台标准版本上(J2SE),因此
处运行”的便利、用作数据库访
验证的安全模型。在这个基础上
, JavaServer Pages (JSPs)和X
它可提供与J2SE一样的所有优点和
问的JDBC,与现有企业资源交互的
,J2EE还加入了对企业JavaBean(
ML技术的支持。
  WebLogic Server的分布式体系                                    
  J2EE提供了一个框架--
具留给第三方厂商完成。一
Tomcat为JSP和servlet提供
部特性。
一个标准的API--用作开发分布
些厂商将着重于实现J2EE体系中
支持。BEA System通过它的WebL

式的体系。实现这个框架的引擎工
的某些组件。例如,Apache的
ogic Server产品实现了J2EE的全

  通过提供J2EE规范的一个完整实现,
式的应用。WebLogic Server和J2EE为你
全领域、认证信息、命名和目录服务、数
WebLogic Server可用来建立及配置易于扩展和分布
处理一些常见的编程任务。包括有提供事务服务,安
据库访问和连接池、线程池、负载均衡和容错。
  通过以一种易于使用和
提供更富扩展性和便于维护
标准的方式提供这些常见的服务
的应用。结果是可为大量的用户
,类似WebLogic Server的产品可
提供可用性更强的应用。
  J2EE技术                                                                  
  在以下的部分中,我们
一个分布式的应用中支持它
servlets,因此我们也着重
将讨论构成J2EE的每一种技术,
们。最常用的J2EE技术可能是:
讨论这些方面。
并且看看WebLogic Server如何在
JDBC, JNDI, EJB, JSPs和

  图2表示了在一个分布式的应用中,每项J2EE技术最常用在哪里。                
  ****图2************                                          
  (n层应用体系的一个例子)                                                    
  Java数据库连接(JDBC)                                                
  JDBC API以一个统一的方式访问各种
间的问题隔离开来。由于它建立在Java上
数据库。与ODBC类似,JDBC将开发者和私有数据库之
,因此JDBC可以提供平台无关的数据库访问。
  JDBC定义了4种不同的驱动,具体来说,包括有:                              
  类型1:JDBC-ODBC桥                                                  
  在JDBC刚产生时,JDBC
ODBC数据源。缺点是,它需
Windows系统的。使用这一
需要客户端的管理。
-ODBC桥是非常有用的。通过它
要在客户机器上安装有一个ODBC
类的驱动器,你就会失去JDBC平

,开发者可以使用JDBC来访问一个
驱动,该机器通常是应该运行微软
台无关的好处。此外,ODBV驱动器

  类型2:JDBC-native驱动桥                                          
  JDBC-native驱动桥提供了一个建筑
JDBC驱动将标准的JDBC调用转变为对数据
台无关性的好处,并且需要安装客户端的
在本地数据库驱动上的JDBC接口--没有使用ODBC。
库API的本地调用。使用类型2的驱动也会失去JDBC平
本地代码。
  类型3:JDBC-network桥                                            
  JDBC-network桥不需要
库。这会引出诸如负载均衡
带来相对小的下载时间,它
Internet的应用。
客户端的数据库驱动。它们使用
、连接池等技术,数据缓冲也是
是平台无关的,并且不需要客户

网络-服务器中层来访问一个数据
可能的。由于类型3的驱动通常可
端的安装和管理,因此很适合用作

  类型4:纯Java驱动                                                        
  类型4使用纯Java数据
并且直接访问数据库,因此
中使用类型4的驱动,可以
一个数据库无关的服务。
库驱动来提供直接的数据库访问
运行在这个模式暗示要使用一个
通过一个包含有数据访问代码的

。由于类型4驱动运行在客户端,
两层的体系。要在一个n层的体系
EJB,并且让该EJB为它的客户提供

  WebLogic Server为一些很常用的数
Microsoft SQL Server, 和Informix。它
Java DBMS,不过WebLogic Server自带的
据库提供了JDBC驱动器,包括有Oracle、Sybase、
还带有一个Cloudscape的JDBC驱动,这是一个纯
是一个评估版本。
  接着我们来看一个例子。                                                        
  JDBC例子                                                                  
  在例子中,我们假设你
有一个CONTACT_TABLE表,
接着向driver manager请求
接,我们建立了一个Statem
到结果集的所有项目,将NA
已经在Cloudscape中设置了一个
里面有NAME和PHONE字段。我们
获得一个到PhoneBook Cloudsca
ent对象,并且使用它来执行一
ME和PHONE字段的内容写入到标
PhoneBook数据库,该数据库包含
首先载入Cloudscape的JDBC驱动,
pe数据库的一个连接。使用这个连
个简单的SQL查询。最后,循环得
准的输出中。
  import java.sql.*;                                         

  public class JDBCExample                             
  {                                                                           
  public static void main( String
args[] )
  {                                                                           
  try                                                                       
  {                                                                           
  Class.forName("COM.cloudscape.co
re.JDBCDriver");
  Connection conn = Dr
iverManager.getConnection("j
dbc:cloudscape:PhoneBook");

  Statement stmt = con
n.createStatement();
  String sql = "SELECT name, phone
FROM CONTACT_TABLE ORDER BY name";
  ResultSet resultSet = stmt.execu
teQuery( sql );

  String name;                                                     
  String phone;                                                   
  while ( resultSet.next() )                         
  {                                                                           
  name = resultSet.getString(1).trim();   
  phone = resultSet.getString(2).trim();

  System.out.println(
name + ", " + phone );
  }                                                                           
  }                                                                           
  catch ( Exception e )                                   
  {                                                                           
  // Handle exception here                             
  e.printStackTrace();                                     
  }                                                                           
  }                                                                           
  }                                                                           
  接着,我们将介绍JDBC在企业应用中的使用。                                  
  企业应用中的JDBC                                                          
  上面的例子是很简单的
户将与一个EJB通信,并且
提供连接池(connection p
。它使用的仍然是一个两层的体
会进行数据库的连接。为了提高
ools)的支持。
系。在一个n层的企业应用中,客
扩展性和性能,WebLogic Server

  通过在服务器启动的时
时的系统开销。如果有数据
一个。WebLogic Server的
weblogic.properties中的
候建立一个数据库的连接池,连
库连接的需求,WebLogic Serve
连接池在weblogic.properties
例子和Weblogic Server中的文
接池可减少建立和中断数据库连接
r可从池中选择一个,而不是创建
中定义(具体可参考你的
档)。
  另一个企业应用中经常
据的完整性,这组语句都被
auto-commit)的事务模式
用到的数据库特性是支持事务。
看成是一个单一的语句。默认的
。你可以使用Connection类的se
事务是一组语句,不过为了保持数
情况下,JDBC工作在自动提交(
tAutoCommit()方法来覆盖它。
  现在我们对JDBC已经有一个了解了。接着我们将介绍JNDI。                  
  Java命名和目录接口(
Java Naming and Directory In
terface,JNDI)
  JNDI API被用来访问命名和目录服务
资源,例如一个应用服务器中的DNS、LDA
。它提供一个相容的模式来访问和操作企业范围大的
P、本地文件系统或者对象。
  在JNDI中,一个目录结
context相对的,没有一个
第一个context:
构中的每一个节点被称为contex
绝对名字的概念。一个应用可以

t。每一个JNDI的名字都是与一个
使用InitialContext类来得到它的

  Context ctx = new InitialContext();       
  通过这个初始的contex
定你已经在WebLogic Serve
客户端,在得到这样一个初
t,应用就可以经过目录树定位
r中配置了一个EJB,并且在myAp
始的context后,然后就可以使
到需要的资源或者对象。例如,假
p.myEJB中绑定了home接口。EJB的
用以下的代码来定位到home接口:
  MyEJBHome home = ctx.lookup( "my
App.myEJB" );
  一旦你得到你所需对象
用它上面的方法。我们将在
讨论它。
的一个引用--在这个例子中,就
后面的“企业Java Beans(Ente

是EJB的home接口--然后你可以调
rprise Java Beans)”中进一步

  以上关于JNDI的讨论,只是它的冰山
还提供方法可以做到:
一角。为了在一个context中查找到一个对象,JNDI

  插入或者绑定一个对象
到一个context中。在你配置一
个EJB时,这是非常有效的方法;
  从一个context中移去一个对象                                            
  列出一个context中的所有对象                                            
  创建和删除subcontexts                                              
  接着,我们将介绍EJB                                                        
  企业Java Beans(Enterprise Java Beans,EJB)
  J2EE其中一个引人注目
商业逻辑,因此可以明显减
应该如何及何时与它们的容
、安全、资源池和容错。
的技术是EJB。它提供了一个架
少开发扩展性、高度复杂企业应
器交互。由容器来负责提供普通

构来开发和配置到客户端的分布式
用的难度。EJB规范定义了EJB组件
的服务,例如目录服务、事务管理

  EJB规范定义了三类基本的bean:                                          
  无状态的session beans(Stateless
护任何的状态,在服务器崩溃时也不再存
session bean可能用作执行温度转换。
session beans):这是一个单一使用的服务,不维
在,而且生存期也相对地短。例如,一个无状态的

  有状态的session bean
在线购物车就是这样一个有
溃时也不再存在,而且生存
:它提供了一个传统的与客户端
状态session ean的典型例子。
期也相对地短,并且每个实例只
交互的方法,存储客户端的状态。
有状态session beans在服务器崩
可以用在一个单一的线程中。
  实体bean(Entity beans):这是持
在服务器崩溃后数据仍然存在。多个客户
:一个用户的帐号信息。
久保存数据的代表--典型的是存储在数据库中--因此
端可以使用EJB来表示同样的数据。实体EJB的例子是

  虽然它们有不同,不过所有的EJB也
定义一个客户如何创建和消除EJB;一个
;以及一个实现主商业逻辑的bean类。
有不少相同的地方。它们都有一个home的接口,用来
远程的接口,定义客户端可以调用哪些bean上的方法

  至于如何开发一个EJB
第三方得到了一个EJB,你
个EJB Deployer Tool来帮
需要指定JNDI的名字,以便
处理与容器的通信,并且与
,这已经超出了这篇文章的讨论
就需要在你的应用服务器上配置
助你配置EJB。当你使用EJB Dep
客户端可以找到这个EJB。然后
一些必要的Java类绑定在一起到
范围。不过,如果已经开发或者由
它。WebLogic Server 5.1带有一
loyer Tool来配置一个EJB时,你
Deployer Tool会产生封装的类来
一个jar文件中。
  一旦EJB配置好,客户端就可以使用
home接口的一个引用。然后,使用这个接
服务器上运行的bean实例的一个句柄。最

它的JNDI名字来查找到该EJB。首先,它必须获得到
口,客户端就可以调用bean的create()方法,以获得
后,客户端就可以使用这个句柄来调用bean上的方法

  接着,我们将讨论JSP。                                                      
  JavaServer Pages (JSPs)                               
  或许你已经对微软的Active Server
它是平台无关的。它们都是设计来帮助we
网页。web设计者即使不懂得编程,也可
HTML代码和Java代码的混合。在客户请求
HTML页面给浏览器。
Pages (ASPs)非常熟悉;JSP也是类似的技术,不过
b内容开发者使用相对较少的代码就可以创建动态的
以使用JSP来创建动态的网页。JavaServer Page是
页面的时候,服务器就会处理Java代码,然后返回

  让我们看一个JSP的简单例子,它用
解,已经超出了本文的讨论范围;不过,
%= 和 %>间的是Java表达式,表示输出
来显示服务器的当前日期和时间。至于具体的细节讲
你要注意到在< %和%>符号间的是Java代码,<

  < html>                                                               
  < head>                                                               
  < title>Sample JSP Page< /title>             
  < /head>                                                             
  < body>                                                               
  < h1>Date JSP sample< /h1>                         
  < h2>                                                                   
  < % response.setHeader("Refresh
", 5); %>
  The current date is < %= new Da
te() %>.
  < /h2>                                                                 
  < /body>                                                             
  < /html>                                                             
  你可以也听过JHTML,
支持JSP,还支持JHTML。不
本)。你必须编辑weblogic
它是一个旧的标准,现在已经被
过,在默认设置下,WebLogic S
.properties来激活web服务器,
JSP取代了。WebLogic Server不但
erver是不支持JSP的(对于5.1版
对于JSPServlet来说,也是这样。
  Java servlets                                                   
  servlets提供的功能大
HTML代码,其中只有少量的
HTML代码。
部分JSP相同,它采用的是一个
Java代码,而servlets则相反,

有点不同的方法。JSP中大部分是
它完全使用Java编写,并且产生

  servlet是一个在服务器上运行的Jav
端的应用可以在被请求时动态执行,与传
servlet的一个主要不同是:CGI脚本对于
销--而servlet的执行只要在servlet引擎
性也更好。
a小程序,它可以扩展Web服务器的功能。这些服务器
统Web服务器上的CGI Perl脚本差不多。CGI脚本和
每次请求都启动一个全新的进程--需要额外的系统开
内启动一个独立的线程就性了。因此Servlet的扩展

  在开发servlet时,你通常都要扩展j
一些方法。感兴趣的方法包括有:
avax.servlet.http.HttpServlet类,并且覆盖它的

  service(): 作为command-specific方法的一个调度程序  
  doGet(): 处理来自一个客户的HTTP GET请求                     
  doPost(): 处理来自一个客户的HTTP POST请求                  
  还有一些其它的方法来处理不同类型
更多相关的信息。
的HTTP请求--可参考HttpServlet API的文本来得到

  以上讨论的方法是标准的J2EE Servl
有的API。一旦你开发了自己的servlet,
在WebLogic Server中配置它。
et API全部标准的部分。WebLogic Server实现了所
通过在weblogic.properties文件中注册,你就可以

  以上我们已经介绍了J2
括有RMI, Java IDL and CO
EE主要的技术,在下面的部分,
RBA, JTA和XML。
我们将简要地介绍余下的技术,包

  Java IDL/CORBA                                                  
  通过Java的IDL支持,开发者可以将J
ORB中的Java对象,也可以创建作为配置
Java将你的新应用和以前的系统集成,后
ava与CORBA集成。他们可以创建能配置在一个CORBA
在其它ORB内的CORBA对象客户端的Java类。对于通过
者提供了一个另外的方法。
  Java事务体系(JTA)/Java事务服务(JTS)                        
  JTA定义了一个标准的API,应用可以通过它来访问事务监控器。                
  JTS是CORBA OTS事务监控器的一个基
Transaction Manager),这个管理器在
一个低级别上实现了OMG OTS规范的Java
器、standalone应用和通信资源管理器提
本实现。JTS指定了一个事务管理器的实现(
一个高级别上支持Java事务API(JTA)规范,并且在
映射。一个JTS事务管理器为应用服务器、资源管理
供事务服务。
  JavaMail和JavaBeans
激活架构(JavaBeans Activati
on Framework,JAF)
  JavaMail是一个用来访问邮件服务器
个邮件系统。支持SMTP和IMAP服务器。
的API。JavaMail API提供了一套抽象类来模型化一

  JavaMail通过使用Java
。MIME字节流和Java对象间
Beans Activation Framework (
可以互相转化。大多数的应用无
JAF) 来处理MIME加密的邮件附件
需要直接使用JAF。
  Java信使服务(Java Messaging Service,JMS)      
  JMS是一个用来和面向信息的中层通
域,并且提供对担保信息传送、事务信息
于将你的应用和以前的backend系统集成
信的API。它不但支持点对点的域,也支持发布/订阅
传送、持久信息和durable subscribers的支持。对
,JMS提供了另外一个方法。
  扩展标记语言(Extensible Markup Language,XML)  
  XML是一个用来定义其它标记语言的
展是与Java分开的;不过,它的目标和Ja
合,你可以得到一个完全平台无关的解决
集成而工作。具体的信息,可浏览Sun站
以及IBM的developerWorks的XML Zone部
的语言。它可被用作商业之间的数据共享。XML的发
va类似,都是为了与平台无关。通过将Java与XML结
方案。多个公司都为在Java和XML间开发一个紧密的
点的Java-XML部分(http://java.sun.com/xml),
分(http://www.ibm.com/developer/xml/)。
  结论                                                                          
  在这篇文章中,我们介
持,我们也作了介绍。当然
绍了建立在J2EE上的分布体系,
,对于J2EE的介绍,以上只是冰
对于WebLogic Server对J2EE的支
山一角。
  我们集中介绍了你通常要使用的J2EE
介绍了一些没有那么知名的J2EE技术的背
经理,对于J2EE和WebLogic Server可为
将有一个不错的概念了。
技术:JDBC, JNDI, EJBs, JSPs和servlets。我们也
景信息。不论你是一个开发者、商业分析家或者项目
你、你的企业或者你的企业应用带来些什么,现在你


  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·从商业角度分析J2EE与WINDOWS DN  (2005-04-02)
 ·XML和J2EE的完美结合  (2005-04-02)
 ·J2EE的安全认证机制  (2005-04-02)
 ·J2EE配置指南  (2005-04-02)
 ·J2EE中的设计模式  (2005-04-02)
 ·J2EE表现层设计思考  (2005-04-02)
 ·开发完整J2EE解决方案的八个步骤  (2005-04-02)
 ·J2EE平台架构上开发CRM的技术过程  (2005-04-02)
 ·使用J2EE建立基于XML的网络服务  (2005-03-12)
 ·XML和J2EE的组合技术  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统