帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
J2EE应用部署(二):实践篇
作者:佚名 发布时间:2005-04-02 来源:不详
 
  提纲:                                                                       
  一、配置J2EE包                                                           
  1.1 企业应用的开发过程                                                   
  1.2 J2EE应用包的结构                                                 
  1.3 EAR部署描述器                                                     
  二、一个简单的实例                                                           
  2.1 组件                                                                 
  2.2 装配应用                                                             
  2.3 部署和运行应用                                                       
  三、可选的应用部署描述器标记                                                 
  正文:                                                                       
  一、配置J2EE包                                                           
  在上一篇文章中,我们
角色和行为。接下来就可以
以及应用部署描述器的内容
了解了J2EE应用封装和部署的一
配置和部署企业应用。为此,我

些基本知识,包括类装载器的不同
们必须了解创建EAR文件的过程,

  1.1 企业应用的开发过程                                                   
  构造一个企业应用的过程可以归纳为:                                           
  构造各个组件,包括EJB、JSP页面、Servlet和资源适配器等。         
  把这些组件打包成JAR
一种具有相同类型的一个或
上的EJB,一个Web应用模块
资源适配器。
文件格式的J2EE模块,同时提供
者多个J2EE组件的集合,也就是
可以包含多个JSP页面和Servlet

J2EE模块部署描述器。J2EE模块是
说,一个EJB模块可以包含一个以
,一个资源适配器包可以包含多个

  结合一个或者多个J2EE
用。最简单的J2EE应用只包
成,更复杂的J2EE应用可以
还可以包含描述部署过程的
模块创建EAR文件,同时提供企
含一个J2EE模块,稍微复杂一点
包含多个J2EE模块、模块里面包
帮助文件和其他文档。
业应用部署描述器,构造出J2EE应
的J2EE应用可以由多个J2EE模块构
含的类所用到的依赖库。J2EE应用

  把J2EE应用部署到J2EE平台上。安装
合。在J2EE应用部署过程中,每一个J2EE
被部署到适合该组件类型的合适容器。例
。部署应用时,应用服务器的部署工具将
的部署机制将提取出my.jar和my.war模块
如果这两个模块都部署成功,则整个J2EE
J2EE应用,然后把它与应用服务器提供的基础设施整
模块按照该类模块的部署要求分别部署,每一个组件
如,假设有一个my.ear文件,它包含my.jar和my.war
把my.ear文件拷贝到应用服务器;接着,应用服务器
,按照当前平台的类装载要求分别部署这两个模块。
应用部署成功。
  J2EE企业应用开发和部署过程可以图示如下:                                 
  

  组件被封装成J2EE模块时带有一个部
具还可以用来部署和“反部署”独立的J2
描述器封装成J2EE应用,用来把额外的内
整个应用部署到应用服务器上。
署描述器,J2EE模块可以通过部署工具创建。部署工
EE模块,用来把一个或者多个J2EE模块和另外的部署
容加入J2EE应用或从J2EE应用删除某些内容,或者把

  1.2 J2EE应用包的结构                                                 
  J2EE企业应用包的结构
application.xml的部署描
EAR文件可以包含依赖库,
很简单,它由一个或多个J2EE模
述器构成。文件用JAR格式打包
但这是可选的。EAR文件的一般
块以及一个META-INF目录下名为
,存储在扩展名为.ear的文件中。
结构是:
  EJB .jar文件 Web应用.war文件 资
文件 META-INF application.xml
源适配器.rar文件 应用客户端.jar文件 依赖库.jar

  下面是一个EAR文件的
例子,它包含一个EJB模块、一
个Web应用模块,不包含依赖库:
  MyFirstEJB.jar MyFir
stWeb.war META-INF applicat
ion.xml
  保存在EAR文件中的J2E
EJB模块、一个资源适配器
E模块不一定要在根目录之下。
包,它的结构可以如下:
例如,假设一个EAR文件包含一个

  ejbs MySecondEJB.jar resources
application.xml
MyLegacyAdapter.rar META-INF

  最后,下面是一个包含许多组件和依赖库的EAR文件:                           
  ejbs MyThirdEJB.jar MyFourthEJB
MyWebApp1.war MyWebApp2.war lib Myx
application.xml
.jar resources MyLegacyAdapter.rar web
mlx.jar Mycommon.jar META-INF

  EAR文件可以用部署工
具创建,或者也可以改用JDK提
供的jar工具创建。创建步骤为:
  创建一个用来容纳EAR文件内容的临时目录。                                   
  把所有J2EE模块放入临时目录,创建META-INF目录。                 
  在META-INF目录下创建application.xml部署描述器。     
  完成上述步骤之后,进入临时目录,运行jar工具创建EAR文件。               
  下面是一个运行jar工具的例子,它对前面例子进行打包:                       
  jar cvf MyApplicatio
n.ear ejbs resources web lib
META-INF
  创建好EAR文件之后,我们就可以把J2EE应用部署到应用服务器上。           
  1.3 EAR部署描述器                                                     
  理想情况下,我们用图形界面的工具
工构造或维护application.xml文件,因
编写application.xml文件。然而,有时我们必须手
此理解application.xml文件用到的标记很重要。
  application.xml部署
。部署描述器的DTD定义的
描述器并不复杂,不需要很多标
标记包括:
记就可以构造出一个合法的描述器

  

  所有合法的J2EE应用描述器必须包含如下DOCTYPE声明:                 

   n PUBLIC "-//Sun Microsystem
s, Inc.//DTD J2EE Application
  1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd">



  配置一个简单的application.xml部署描述器只需如下几步:         

  用标记声明一个企业应用。标记可以
使用。这些标记的内容和EJB、Web应用、
包含、和标记,供部署工具提供有关应用的描述信息
资源适配器部署描述器内的同一标记的内容相同。

  企业应用内的每一个模
记描述,资源适配器用标记
容都是指定EAR文件内包含J
块必须有一个相应的标记描述模
描述,应用客户端程序用标记描
2EE模块的文件的相对URI,该UR
块。EJB用标记描述,Web应用用标
述。除了标记之外,其他标记的内
I必须相对于EAR文件的根。

  如果企业应用包含一个Web应用J2EE
相对URI,指定EAR文件内包含J2EE模块的
Web应用将在其下运行的上下文的名字。
须加上该上下文名字作为前缀。例如,如
模块,则必须提供一个标记和一个标记。标记是一个
文件。这个URI和、、标记的URI同属一类。标记指定
所有针对该Web应用内JSP页面和Servlet的请求都必
果部署Web应用时指定了:
  web1

  则所有对JSP页面和Servlet的请求必须是如下形式:                     
  http://主机:端口/web1/......                             
  在EAR文件内封装的每
的值。如果EAR文件只包含
一个Web应用都要有一个唯一的
一个Web应用,的值可以是空字
值,任何两个Web应用不能有相同
符串。
  二、一个简单的实例                                                           
  在大多数使用EAR文件
用要用到EJB模块里面的EJB
库。下面我们来看看构造这
的情形中,企业应用包含一个EJ
组件。下面的例子就属于这种情
个例子的具体过程。
B模块、一个Web应用模块,Web应
况,EJB和Web应用不需要任何依赖

  2.1 组件                                                                 
  在这个例子中,一个Servlet在无状
和EJB输出一些文字信息表明程序已经成
组件封装存在问题。本例的所有EJB源文
到的Java文件包括:
态会话EJB的远程接口上调用invoke()方法,Servlet
功执行。如果控制台出现异常报告,它很可能意味着
件都属于test包,Servlet属于未命名的包。本例用

  MyEnterpriseServlet.
java:Servlet的实现类,执行
对EJB的调用
  MyEnterprise.java:EJB的远程接口。                       
  MyEnterpriseHome.java:EJB的Home接口。           
  MyEnterpriseBean.java::EJB的实现类。               
  MyEnterpriseBean.java的实现代码是:                     
  package test;                                                   
  import javax.ejb.*;                                       
  public class MyEnterpriseBean im
plements SessionBean {

  private InitialContext ctx;                       

  public void ejbCreate() {}                         
  public void ejbRemove() {}                         
  public void ejbActivate() {}                     
  public void ejbPassivate() {}                   
  public void setSessionContext(Se
ssionContext c) {}
  public void invoke() {                                 
  System.out.println("正在执行EJB.");                
  }                                                                           
  }                                                                         

  MyEnterpriseServlet.
java Servlet的实现代码是:
  import javax.servlet.*;                               
  import javax.servlet.http.*;                     
  import java.io.*;                                           
  import javax.naming.*;                                 

  public class MyEnter
priseServlet extends HttpSer
vlet {
                                                                             
   public void service(HttpSe
rvletRequest req, HttpServletResponse res)
   throws IOException{           
   res.setContentType("text
/html;charset=GB2312");

   PrintWriter
out = res.getWriter();

   try {                                                   
   System.o
ut.println("正在服务器上运行
Servlet");
   InitialC
ontext ctx = new InitialCont
ext();
                                                                             
   test.M
yEnterpriseHome eHome = (tes
t.MyEnterpriseHome)
  
ctx.lookup("My
EnterpriseEJB");
   test.MyEnterprise
e = eHome.create();
   e.invoke();                           

   } catch(Exception e) {                 
   out.println("异常: " + e);       

   System.ou
t.println("异常: " + e);
   }                                                           

   out.println("");

   out.println("");

   out.println("

检查控制台确信EJB已经被调用

");

   out.println("");

  }                                                                           
  }                                                                           
  编写好EJB和相关的部
MyEnterpriseBean.jar文件
Servlet代码和相关的部署
文件。
署描述器(此处不列出)之后,
。在JNDI名称空间配置中,EJB
描述器(此处也不列出)之后,

接下来要把EJB封装成
绑定到MyEnterpriseEJB。编写好
Servlet应该封装成MyWebApp.war

  2.2 装配应用                                                             
  构造好各个组件之后,接下来应该编
册为企业应用的模块,还要让Web应用的
application.xml文件应该为:
写企业应用部署描述器。我们必须把EJB和Web应用注
组件在/web/上下文之下执行。这样,本例的

  

   n PUBLIC '-//Sun Microsystem
s, Inc.//DTD J2EE Application
  1.3//EN' 'http://java.sun.com/dtd/application_1_3.dtd'>

  

   Enterprise Application

  

  MyEnterpriseBean.jar

  

  

  

   MyWebApp.war

   web

  

  

  

  编写好application.xml部署描述器之后,企业应用的目录将包括:   
  MyEnterpriseBean.jar MyWebApp.wa
r META-INF application.xml
  用jar工具创建名为MyE
nterprise.ear的EAR文件,控制
台命令如下:
  jar cvf MyEnterprise
.ear MyEnterpriseBean.jar My
WebApp.war META-INF
  值得一提的是,如果使用J2EE参考实
,我们不必手工编写ejb-jar.xml、web.x
deploytool自动生成。在本例的企业应用
现(Reference Implementation)提供的deploytool
ml和application.xml部署描述器,这些文件由
中,application.xml就是自动生成的。
  2.3 部署和运行应用                                                       
  构造好EAR文件之后,
应商提供了不同的部署工具

接下来该部署它了。记住,具体
。例如,J2EE的deploytool能够

的部署操作和平台有关,不同的供
把企业应用部署到J2EE参考实现上

  成功地部署好企业应用之后,接下来
是/web,Servlet作为它的一部分调用。
就可以调用Servlet了。由于该企业应用上下文的根
为此,我们在浏览器中输入的地址应该是如下形式:
  http://主机:端口/web/myenterpriseservlet/
  三、可选的应用部署描述器标记                                                 
  在某些情形下,有两个可选的部署描述器标记可供使用,它们是和标记。             
  是的子标记,它的值是一个为模块提
器文件。这个文件的命名不必和它在J2EE
必须命名为ejb-jar.xml,但如果标记的
取ejb-jar.xml以外的名字。
供的从EAR文件的根开始的URI,指向另一个部署描述
模块里面时一样。例如,所有EJB模块的部署描述器
值指向一个EJB模块的可选部署描述器,文件就可以

  标记中指定的部署描述
署描述器的外部版本,当部
者应用客户端模块内的描述
将使用EAR文件里面JAR、WA
部署描述器,假设该描述器
器文件将覆盖J2EE模块里面包含
署者想要使用的部署描述器与包
器不同时,就可以使用这个标记
R或RAR文件中提供的值。例如,
在EAR文件的根下面,我们指定
的描述器,。标记可以用来引用部
含在EJB、Web应用、资源适配器或
。如果不指定标记的值,部署工具
要为Web应用指定一个外部的可选

  

  

   web.war

   web

  

   external-web.xml

  

  标记用来指定应用级的安全角色,这
果EAR文件包含多个EJB模块或多个Web应
署者的责任之一是确保所有J2EE模块中包
用整体来说具有实际意义。安全角色可以
也就是说,如果某个J2EE模块中存在一个
级提供即可。
个安全角色将用于EAR文件包含的所有J2EE模块。如
用模块,这些模块都可以有自己的安全角色定义。部
含的所有安全角色都有一个唯一的名字,而且对于应
从J2EE模块级“拉出”到企业应用级,加入到标记。
重复的安全角色值,该值可以删除,只需在企业应用

  标记需要一个子标记指定安全角色的名称。下面是一个配置标记的例子:             
  

  

   Security role of administrator
  

   Administrator

  

  在下一篇文章中,我们将了解J2EE应用封装和部署过程中可能遇到的一些问题。   

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·J2EE开发n层应用  (2005-04-02)
 ·J2EE概述  (2005-04-02)
 ·J2EE应用部署(一):基础篇  (2005-04-02)
 ·从商业角度分析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)

   栏目导行
  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实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统