加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 阅读中心 > 软件学习

J2EE的13种核心技术

时间:2014-05-04 10:05:18  来源:不详  作者:佚名
 
  许多朋友直问J2EE到底
是什么东东,在此转贴一文,其
实J2EE就是一套规范,一套方法
    Java最初是在浏览
务器端的开发。现在,随着
为开发企业级服务器端解决
器和客户端机器中粉墨登场的。
对Java2平台企业版(J2EE)第
方案的首选平台之一。
当时,很多人质疑它是否适合做服
三方支持的增多,Java被广泛接纳

    J2EE平台由一整套
基于Web的多层应用提供了
服务(Services)、应用程序接
功能支持。
口(APIs)和协议构成,它对开发

    在本文中我将解释支撑J2EE的13
servlets, XML, JMS, Java IDL, JTS, J
需要使用这些技术。当然,我还要介绍这
种核心技术:JDBC, JNDI, EJBs, RMI, JSP, Java
TA, JavaMail 和 JAF,同时还将描述在何时、何处
些不同的技术之间是如何交互的。
    此外,为了让您更好地感受J2EE
Systems公司的一种广为应用的产品―环
和J2EE的新手,还是那些想了解J2EE能带
定很有参考价值。
的真实应用,我将在WebLogic应用服务器―来自BEA
境下来介绍这些技术。不论对于WebLogic应用服务器
来什么好处的项目管理者和系统分析员,相信本文一

    宏观印象: 分布式结构和J2EE                                          
    过去,二层化应用
1刻画了典型的二层化结构
解决方案中,客户端程序负
用户界面、接受用户输入等
升级或改进,而且经常基于
界面逻辑非常困难。更重要
而很难适应Internet的要求
-- 通常被称为client/server
。在很多情况下,服务器提供的
责数据访问、实现业务逻辑、用
。client/server结构通常在第
某种专有的协议―通常是某种数
的是,在Web时代,二层化应用
。
应用 -- 是大家谈论的最多的。图
唯一服务就是数据库服务。在这种
合适的样式显示结果、弹出预设的
一次部署的时候比较容易,但难于
据库协议。它使得重用业务逻辑和
通常不能体现出很好的伸缩性,因

  图1. 二层化应用结构                                                        
    Sun设计J2EE的部分起因就是想
来简化N层企业级应用的开发。它定义了
。J2EE还自动为应用程序处理了很多实现
解决二层化结构的缺陷。于是,J2EE定义了一套标准
一套标准化的组件,并为这些组件提供了完整的服务
细节,如安全、多线程等。
    用J2EE开发N层应
能够为以下的每种服务提供
用包括将二层化结构中的不同层
一个分开的层:
面切分成许多层。一个N层化应用A

    显示:在一个典型
的Web应用中,客户端机器上运
行的浏览器负责实现用户界面。
    动态生成显示: 尽
这些动态生成工作应该放在
言)和(可扩展样式表语言
管浏览器可以完成某些动态内容
Web服务器端进行,使用JSP、Se
)。
显示,但为了兼容不同的浏览器,
rvlets,或者XML(可扩展标记语

  业务逻辑:业务逻辑适合用Session EJBs(后面将介绍)来实现。       
    数据访问:数据访问适合用Enti
ty EJBs(后面将介绍)和JDBC来实现。
    后台系统集成: 同后台系统的集
根据后台系统的特征而定。
成可能需要用到许多不同的技术,至于何种最佳需要

    您可能开始诧异:
强的伸缩性,它允许每层专
处理应用逻辑,而数据库服
为什么有这么多的层?事实上,
注于特定的角色。例如,让Web
务器提供数据库服务。
多层方式可以使企业级应用具有很
服务器负责提供页面,应用服务器

    由于J2EE建立在Ja
功能。包括“编写一次,到
交互的CORBA技术,以及一
业级Java组件)、Java ser
va2平台标准版(J2SE)的基础
处可用”的可移植性、通过JDBC
个经过验证的安全模型。在这些
vlets、Java服务器页面(JSPs
上,所以具备了J2SE的所有优点和
访问数据库、同原有企业资源进行
基础上,J2EE又增加了对EJB(企
)和XML技术的支持。
    分布式结构与WebLogic应用服务器                                    
    J2EE提供了一个框架--一套标准
实现留给了第三方厂商。部分厂商只是专
Tomcat提供了对JSP和servlets的支持,B
J2EE规范提供了一个较为完整的实现。
API--用于开发分布式结构的应用,这个框架的实际
注于整个J2EE架构中的的特定组件,例如Apache的
EA系统公司则通过其WebLogic应用服务器产品为整个

    WebLogic服务器已
和J2EE代你处理了大量常规
目录服务、数据库访问和连
使建立和部署伸缩性较好的分布
的编程任务,包括提供事务服务
接池、线程池、负载平衡和容错
式应用的过程大为简化。WebLogic
、安全领域、可靠的消息、名字和
处理等。
    通过以一种标准、
了具有更好伸缩性和可维护
易用的方式提供这些公共服务,
性的应用系统,使其为大量的用
象WebLogic服务器这样的产品造就
户提供了增长的可用性。
    J2EE技术                                                              
    在接下来的部分里,我们将描述
何在一个分布式应用中对它们进行支持的
servlets,对这些我们将作更仔细的考察
构成J2EE的各种技术,并且了解WebLogic服务器是如
。最常用的J2EE技术应该是JDBC、JNDI、EJB、JSP和
。
  图2表示了在一个分布式应用中,J2EE技术的各个方面通常在何处发挥作用。      
  图2. 一个N层应用结构的例子                                               
    Java Database Connectivity (JDBC)        
    JDBC API以一种统
发人员隐藏了不同数据库的
据库存取的平台独立性。
一的方式来对各种各样的数据库
不同特性。另外,由于JDBC建立

进行存取。和ODBC一样,JDBC为开
在Java的基础上,因此还提供了数

    JDBC定义了4种不同的驱动程序,现分述如下:                            
    类型 1: JDBC-ODBC Bridge                              
    在JDBC出现的初期,JDBC-ODBC
发人员可以使用JDBC来存取ODBC数据源。
话说,必须安装Microsoft Windows的某
。另外,ODBC驱动程序还需要具有客户端
桥显然是非常有实用意义的,通过JDBC-ODBC桥,开
不足的是,他需要在客户端安装ODBC驱动程序,换句
个版本。使用这一类型你需要牺牲JDBC的平台独立性
的控制权限。
    类型 2: JDBC-native driver bridge            
    JDBC本地驱动程序
不需要使用ODBC。 JDBC驱
此类型需要牺牲JDBC的平台
桥提供了一种JDBC接口,它建立
动程序将对数据库的API从标准
独立性,还要求在客户端安装一
在本地数据库驱动程序的顶层,而
的JDBC调用转换为本地调用。使用
些本地代码。
    类型 3: JDBC-network bridge                        
    JDBC网络桥驱动程
存取数据库。这种应用使得
数据缓存等。由于第3种类
在客户端安装并取得控制权
序不再需要客户端数据库驱动程
以下技术的实现有了可能,这些
型往往只需要相对更少的下载时
,所以很适合于Internet上的应
序。它使用网络上的中间服务器来
技术包括负载均衡、连接缓冲池和
间,具有平台独立性,而且不需要
用。
    类型 4: Pure Java driver                              
    第4种类型通过使用一个纯Java
际上在客户端实现了2层结构。要在N-层
包含存取代码并提供一个对客户端具有数
数据库驱动程序来执行数据库的直接访问。此类型实
结构中应用,一个更好的做法是编写一个EJB,让它
据库独立性的服务。
    WebLogic服务器为
Microsoft SQL Server以及
纯Java的DBMS,WebLogic服
一些通常的数据库提供了JDBC驱
Informix。它也带有一种JDBC驱
务器中带有该数据库的评估版本
动程序,包括Oracle, Sybase,
动程序用于Cloudscape,这是一种
。
  以下让我们看一个实例。                                                        
    JDBC实例                                                              
    在这个例子中我们假定你已经在
含一个表,名为 CONTACT_TABLE ,它带
Cloudscape JDBC driver,并请求 drive
的连接。通过这一连接,我们可以构造一
。最后,用循环来遍历结果集的所有数据
。
Cloudscape中建立了一个PhoneBook数据库,并且包
有2个字段:NAME 和 PHONE。 开始的时候先装载
r manager得到一个对PhoneBook Cloudscape数据库
个 Statement 对象并用它来执行一个简单的SQL查询
,并用标准输出将NAME和PHONE字段的内容进行输出

    import java.sql.*;                                      

    public class JDBCExample                          
    {                                                                        
     public static void main( S
tring args[] )
     {                                                                      
      try                                                                
      {                                                                    
       Class.forN
ame("COM.cloudscape.core.JDB
CDriver");
       Connection
oudscape:PhoneBook");
conn = DriverManager.getCon

nection("jdbc:cl

       Statement stmt = conn.
createStatement();
       String sql = "SELECT n
ame, phone FROM CONTACT_TABLE ORDER BY name";
       ResultSet
resultSet = stmt.executeQuer
y( sql );

       String name;                                            
       String phone;                                          
       while ( resultSet.next() )                
       {                                                                  
        name = r
esultSet.getString(1).trim()
;
        phone =
resultSet.getString(2).trim(
);
        System.o
ut.println( name + ", " + ph
one );
        }                                                                
      catch ( Exception e )                            
       {                                                                  
        // Handle exception here                  
        e.printStackTrace();                          
       }                                                                  
      }                                                                    
     }                                                                      

    OK。接着我们来看一看JDBC是如何在企业应用中的进行使用。              
    JDBC在企业级应用中的应用                                              
    以上实例其实是很
的企业级应用中,更大的可
了实现和改进可伸缩性和系
的支持。
基本的,可能有些微不足道。它
能是在客户端和一个EJB进行通
统性能, WebLogic服务器提供

假定了一个2层结构。在一个多层
信,该EJB将建立数据库连接。为
了对连接缓冲池connection pool

    Connection pool减少了建立和
样的缓冲池,此后如故再有对数据库的请
据。数据缓冲池可以在WebLogic服务器的
weblogic.properties 文件中的例子,We
释放数据库连接的消耗。在系统启动以后即可建立这
求,WebLogic服务器可以很简单地从缓冲池中取出数
weblogic.properties 文件中进行定义。(可参考
bLogic服务器的文档中还有更详细的参考信息)
    在企业级应用的另
它们必须做为同一个statem
auto-commit 事务模式。这
一个常见的数据库特性是事务处
ent来处理以保证数据完整性。
可以通过使用Connection类的 s
理。事务是一组申明statement,
缺省情况下JDBC使用
etAutoCommit() 方法来实现。
    现在我们已经对JDBC有了一些认识,下面该转向JNDI了。                

  Java Naming and Dire
ctory Interface (JNDI)
    JNDI API被用于执行名字和目录
源如DNS和LDAP,本地文件系统,后者在
服务。它提供了一致的模型来存取和操作企业级的资
应用服务器中的对象。
    在JNDI中,在目录
context的。这里没有绝对
InitialContext 类来得到
结构中的每一个结点称为contex
名字的概念存在。对一个应用来
其第一个context:
t。每一个JNDI名字都是相对于
说,它可以通过使用

    Context ctx = new InitialContext();    
    应用可以通过这个初始化的cont
例如,假设你在Weblogic服务器中展开了
么该EJB的某个客户在取得一个初始化con
ext经有这个目录树来定位它所需要的资源或对象。
一个EJB并将home接口绑定到名字 myApp.myEJB ,那
text以后,可以通过以下语句定位home接口:

    MyEJBHome home =
ctx.lookup( "myApp.myEJB" )
;
    在这个例子中,一
用方法。我们将在下面的"E
旦你有了对被请求对象的参考,
nterprise Java Beans"章节中
EJB的home接口就可以在它上面调
做更多的介绍。
    以上关于JNDI的讨论只是冰山之
,JNDI也提供了一些方法来进行以下操作
一角而已。如果要更进一步地在context中查找对象
: 
    将一个对象插入或
绑定到context。这在你展开一
个EJB的时候是很有效的。
    从context中移去对象。                                             
    列出context中的所有对象。                                         
    创建或删除子一级的context。                                        
    接下来,我们要开始关注EJB了。                                          
    Enterprise Java Beans (EJB)                    
    J2EE技术之所以赢得某体广泛重
和实施分布式商务逻辑,由此很显著地简
EJB规范定义了EJB组件在何时如何与它们
如目录服务、事务管理、安全性、资源缓
视的原因之一就是EJB。它们提供了一个框架来开发
化了具有可伸缩性和高度复杂的企业级应用的开发。
的容器进行交互作用。容器负责提供公用的服务,例
冲池以及容错性。
    EJB规范定义了三种基本的bean类型:                                  
    Stateless session beans: 提
发生时无法继续存在,生命期相对较短。
温度转换计算。
供某种单一的服务,不维持任何状态,在服务器故障
例如,一个stateless session bean可能被用于执行

    Stateful session
客户。典型例子是购物车。
对较短。每一个实例只用于
bean: T提供了与客户端的会话
Stateful session bean在服务
一个单个的线程。
交互,可以存储状态从而代表一个
器故障时无法继续生存,生命气相


    Entity beans: 提供了一致性数
发生后能继续存在。多用户情况下可以使
子是客户的帐号信息。
据的表示-- 通常存放在数据库中 -- 在服务器故障
用EJB来表示相同的数据。entity EJB的一个典型例

  尽管有以上的区别,所有的EJB还是
定义了一个客户端是如何创建与消亡EJB
行调用;bean类则执行了主要的商务逻辑
有许多的共同之处。它们都处理home interface。它
的。可以在bean中对定义了客户端方法的远程接口进
。

    描述EJB的开发已经超出了本文
三方进行了购买,它就必须在应用服务器
Deployer Tool来协助处理EJB的发布。当
所用的JNDI名字来定位EJB。Deployer To
jar文件中把被请求的Java类绑定在一起
的范围。但是,如果一个EJB已经被开发了或者从第
中进行发布。WebLogic Server 5.1带有一个EJB
你使用EJB Deployer Tool的时候,你要定义客户端
ol将生成wrapper类来处理和容器的通信以及在一个
。

    一旦EJB被发布,客户端就可以
个到home接口的reference。然后,客户
服务器上运行的某个bean实例的句柄;最
使用它的JNDI名字来定位EJB。首先,它必须得到一
端可以使用该接口,调用一个 create() 方法来得到
后,客户端可以使用该句柄在bean中调用方法。
    了解 EJB后,让我们再来看JSP。                                      
  JavaServer Pages (JSPs)                                
    我们中间可能已经有许多人已经
。JSP和ASP相对应的,但更具有平台对立
网页,并且只需要相对较少的代码。 即
JSP应用是很方便的。 JSP页面由HTML代
户端所请求以后对这些Java代码进行处理
熟悉Microsoft的Active Server Pages (ASP)技术了
性。他们被设计用以帮助Web内容开发人员创建动态
使Web设计师不懂得如何编程也可以使用JSP,因为
码和嵌入其中的Java代码所组成。服务器在页面被客
,然后将生成的HTML页面返回给客户端的浏览器。
    下面我们来看一个
语法的具体解释已经超出了
号的中间,而Java的表达式
JSP的简单实例。它只显示了服
本文的范围,但我们还是可以很
则放在 符号之间。
务器的当前日期和时间。虽然,对
直观地看到,Java代码被放在 符

    <H1>Date JSP sample</H1>                          

       <H2>                                                            
       <% respon
se.setHeader("Refresh", 5);
%>
       The current date is <
%= new Date() %>.
      </H2>                                                            
     您可能有时候听说过JHTML。
可支持JSP,又可支持JHTML。请注意,在
效状态。要使之有效,你可以编辑weblog
状态,则要先使之有效。Servlet的情况
这是JSP以前的一种较老的标准。WebLogic服务器既
缺省状况下,JSP在WebLogic服务器中并没有处于有
ic.properties文件。如果Web服务器还没有处于有效
和JSP是一样的。
    下面是: Java servlets                                      
    Java Servlets                                                
    Servlet提供的功能大多与JSP类
码中嵌入少量的Java代码,而servlets全
似,不过实现的方式不同。JSP通常是大多数HTML代
部由Java写成并且生成HTML。
    Servlet是一种小型的Java程序
应用,当被请求时开始执行,这和CGI Pe
别是:每一个CGI在开始的时候都要求开
以分离的线程来运行的。因此servlets在
,它扩展了Web服务器的功能。作为一种服务器端的
rl脚本很相似。Servlets和CGI脚本的一个很大的区
始一个新的进程 -- 而servlets是在servlet引擎中
可伸缩性上提供了很好的改进。
    在开发servlets的
且override一些它的方法,
时候,您常常需要扩展javax.se
其中包括:
rvlet.http.HttpServlet 类,并

    service(): 作为dispatcher来实现命令-定义方法       
    doGet(): 处理客户端的HTTP GET请求。                     
    doPost(): 进行HTTP POST操作                           
    其它的方法还包括处理不同类型
的HTTP请求 -- 可以参考HttpServlet API文档。
  以上描述的是标准J2EE Servlet API
的实现途径。一旦你开发了一个servlet
此可以在WebLogic服务器中对它进行配置
的各种方法。WebLogic服务器提供了一个该API完整
,你就可以在weblogic.properties 中加以注册并由
。
    通过Java servlet
于这些。下面的段落中我们
JTA, 以及XML,等等。
s,我们已经到达了J2EE主要技术
将简要地看一下现存的一些技术

的末尾了。但J2EE所提供的并不止
,包括RMI, Java IDL和CORBA,

    Remote Method Invocation (RMI)              
    正如其名字所表示的那样,RMI
列方式在客户端和服务器端传递数据。RM
协议是在远程对象上调用一些方法。它使用了连续序
I是一种被EJB使用的更下层的协议。
    Java IDL/CORBA                                              
    在Java IDL的支持
对象并使之可在CORBA ORB
CORBA对象的客户。后一种
和legacy系统相集成。
下,开发人员可以将Java和CORB
中展开, 或者他们还可以创建Ja
方法提供了另外一种途径,通过

A集成在一起。 他们可以创建Java
va类并作为和其它ORB一起展开的
它Java可以被用于将你的新的应用

    Java Transaction Architectur
e (JTA)/Java Transaction Service (JTS)
    JTA定义了一种标准的API,应用系统由此可以存取各种事务监控。          
    JTS是CORBA OTS事务监控的基本
管理器是在高层支持Java Transaction A
specification的Java映像。JTS事务管理
资源管理器提供了事务服务。
的实现。JTS规定了事务管理器的实现方式。该事务
PI (JTA)规范,并且在较底层实现OMG OTS
器为应用服务器、资源管理器、独立的应用以及通信


    JavaMail and Jav
aBeans Activation Framework
    JavaMail是用于存取邮件服务器
持SMTP服务器,也支持IMAP服务器。
的API,它提供了一套邮件服务器的抽象类。不仅支

    JavaMail利用JavaBeans Activa
。MIME的字节流可以被转换成Java对象,
直接使用JAF。
tion Framework (JAF)来处理MIME-编码的邮件附件
或者转换自Java对象。由此大多数应用都可以不需要

    Java Messaging Service (JMS)                  
    JMS是用于和面向
域,有支持发布/订阅(publ
消息传递,事务型消息的传
方式来对您的应用与legacy
消息的中间件相互通信的应用程
ish/subscribe)类型的域,并且
递,一致性消息和具有持久性的
backend系统相集成。
序接口(API)。它既支持点对点的
提供对下列类型的支持:经认可的
订阅者支持。JMS还提供了另一种

    Extensible Markup Language (XML)          
    XML是一种可以用来定义其它标
据。XML的发展和Java是相互独立的,但
将Java和XML的组合,您可以得到一个完
的公司在为Java和XML的组合而努力。如
Java-XML页面,或者IBM developerWorks
记语言的语言。它被用来在不同的商务过程中共享数
是,它和Java具有的相同目标正是平台独立性。通过
美的具有平台独立性的解决方案。目前正有许多不同
果要了解更多的这方面的信息,可以访问Sun的
的XML Zone。
    总结                                                                      
    在本文中,我们介
对J2EE的各种支持。 然而
展示J2EE潜在的对您的企业
绍了建立在J2EE上的分布式应用
,我们所揭示的仅仅是冰山之一
级应用的影响可是很不公平的。
结构,并且描述了WebLogic服务器
角而已,要以一篇数千字的文章来

    我们已经关注了在您开始用J2EE
EJB, JSP和servlet。我们也为您提供了
开发人员,商务应用分析师,或者项目经
,给我们的企业以及我们的企业级应用所
进行工作时最有可能遇到的各类技术:JDBC, JNDI,
一些尚未常见的J2EE技术的背景知识。不管您是一名
理,都应该对J2EE和WebLogic服务器所能提供给我们
带来的意义有一个更好的认识。

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
后牧工业区厂房1500平出租
后牧工业区厂房1500平
现实的童话公主艾米·罗森
现实的童话公主艾米·
科比专为大场面而生
科比专为大场面而生
“最美清洁工”原是《赤壁》宫女
“最美清洁工”原是《
相关文章
    无相关信息
栏目更新
栏目热门