Apusic部署工具用户手册 下载本文

Apusic部署工具用户手册

Apusic部署工具3.0在2.0版的基础上,做了全新改版,配合Apusic应用服务器3.0的新功能,支持各种类型的应用,使用起来更加方便。

目录

1. 部署工具3.0的新特性 1.1. 统一打开应用 1.2. 提供应用移植插件机制 1.3. 部署工具与应用服务器的交互全面采用JAAS方式 1.4. 与服务器的连接标志 1.5. 部署信息的显示 1.6. 界面的改变 2. 部署工具能做什么? 2.1. 什么是部署描述文件? 2.1.1. 提供对程序文件的管理信息 2.1.2. 提供应用本身对外部资源的依赖的描述 2.1.3. 提供对程序本身执行特性的配置信息 2.2. 部署工具就是专门管理与部署描述文件有关的一切事务的工具 2.3. 部署工具可以管理J2EE应用,辅助J2EE程序开发 3. 部署工具的使用方式

3.1. 作为准开发工具管理J2EE应用 3.1.1. 第一步,启动Apusic应用服务器。 3.1.2. 第二步,打开部署工具。 3.1.3. 第三步,新建目录形式的EAR 3.1.4. 第四步,添加一个EJB模块 3.1.5. 第五步,添加一个EJB 3.1.6. 第六步,添加一个Web模块 3.1.7. 第七步,部署到Apusic应用服务器(AAS) 3.1.8. 第八步,访问应用 3.1.9. 第九步,修改EJB

3.1.10. 第十步,重新部署,再次访问应用 3.2. 对已有的J2EE应用进行配置修改 4. 部署工具功能详解 4.1. 界面说明 4.1.1. 菜单 4.1.2. 工具条 4.1.3. 总体界面结构 4.2. 应用管理类功能

4.2.1. 新建J2EE应用 4.2.2. 打开J2EE应用 4.2.3. 添加一个Web模块 4.2.4. 添加一个EJB模块 4.2.5. 添加一个EJB 4.2.6. 添加一个Application Client模块 4.2.7. 删除(J2EE模块,组件)

4.2.8. 打包成ear文件(.jar文件,.war文件) 4.3. 应用配置类功能 4.3.1. 对EAR的配置 4.3.2. 对Web模块的配置 4.3.3. 对EJB模块的配置 4.3.4. 对EJB的配置 4.3.5. 对Application Client模块的配置 4.3.6. 配置Mail Session 4.4. 服务器交互类功能 4.4.1. 登录到Apusic服务器 4.4.2. 查看已部署的应用 4.4.3. 部署到Apusic应用服务器

4.4.4. 以打包文件(.ear, .jar或.war文件)的形式部署到Apusic应用服务器 4.5. 部署工具本身的配置选项 5. 部署工具移植插件

5.1. 移植插件能完成的工作和不能完成的工作 5.2. 移植插件装载机制及编写方法 5.2.1. XSLT方式的移植插件 5.2.2. Java方式的移植插件 1 部署工具3.0的新特性

1.1 统一打开应用

? 文件和目录形式的应用在同一菜单打开; ? 可以单独打开EJB模块; ? 可以单独打开Web模块。

1.2 提供应用移植插件机制

? Java方式插件;

? Xslt方式插件。

部署工具3.0提供两种形式的插件机制,用户可编写自己的插件,配合部署工具完成对其他应用服务器的应用向Apusic的移植。

1.3 部署工具与应用服务器的交互全面采用JAAS方式

? 登录Apusic应用服务器;

? 获取Apusic应用服务器用户和组; ? 管理Apusic应用服务器上的应用列表; ? 部署应用到Apusic应用服务器。

1.4 与服务器的连接标志

? 登录后显示已登录标志:显示已登陆的服务器名称或地址

? 自动感知服务器关闭,显示未连接。

1.5 部署信息的显示

? 显示部署进度;

? 显示部署过程中的错误信息。

1.6 界面的改变

? 一棵详细的应用结构树

对应用中不同组件的配置只需点击树中相应节点,即可进入配置界面。

2 部署工具能做什么?

我们知道,J2EE应用(ear, war, ejb-jar)是可配置的应用,不仅由程序文件(可能为java程序,JSP文件等)组成,而且有配置文件(部署描述文件)作为必不可少的一部分,共同参与组成一个完整的应用。

2.1 什么是部署描述文件?

部署描述文件的作用有以下几点: ? 提供对程序文件的管理信息;

? 提供应用本身对外部资源的依赖的描述; ? 提供对程序本身执行特性的配置信息。

应用服务器根据配置文件来得到有关程序的信息,分配程序需要的外部资源,并根据配置信息对程序的执行施加相应的限制和影响。

2.1.1 提供对程序文件的管理信息

比如在应用级(顶级)部署描述文件application.xml中描述该应用中都包含哪些J2EE模块(EJB模块,Web模块,Application Client模块等),这些模块的URI等信息,在EJB模块级的部署描述文件ejb-jar.xml中描述该模块中包含哪些EJB,这些EJB的名字、类、接口等信息。

2.1.2 提供应用本身对外部资源的依赖的描述

比如在应用级(顶级)部署描述文件apusic-application.xml中对mail-session的定义,应用中安全角色与Apusic应用服务器中用户和组的映射,在J2EE模块级部署描述文件中对EJB引用、资源引用、环境变量等的定义等。

2.1.3 提供对程序本身执行特性的配置信息

比如对Web模块中Web资源的访问约束,会话超时时间的设置,EJB中方法的事务和安全的设置等。

2.2 部署工具就是专门管理与部署描述文件有关的一切事务的工具

部署描述文件涉及的方面和内容很多很杂,都是用XML文件格式书写的,如果都用手工来写不但经常不容易记得清DTD,而且随着应用规模的扩大,数量巨大,内容繁杂的XML常令人搞得不胜繁琐。

Apusic部署工具就是专门帮助开发人员产生、操纵部署描述文件的。因此使用部署工具完全可以免去手写XML格式的部署描述文件之苦。

2.3 部署工具可以管理J2EE应用,辅助J2EE程序开发

Apusic部署工具2.0适当运用,可以扮演准开发工具的角色,可以帮助开发人员有效地管理J2EE程序。

3 部署工具的使用方式

? 作为准开发工具管理J2EE应用; ? 简单的对已有的J2EE应用进行配置修改。

3.1 作为准开发工具管理J2EE应用

之所以称为准开发工具,是因为Apusic部署工具现不具备对java源程序的文本编辑功能,因此不能提供开发J2EE应用的完整的IDE环境。但可以在Apusic部署工具的配合下,对J2EE应用进行有效管理。即由第三方的编辑和编译工具负责程序代码的编写和编译,Apusic部署工具负责J2EE应用的管理及部署描述文件的生成和修改。

一个例子。

第一步,启动Apusic应用服务器 第二步,打开部署工具 第三步,新建目录形式的EAR

选取菜单“文件 | 新建J2EE应用...”,在弹出的对话框中选择一个目录,作为新建EAR目录的父目录(比如“E:\\deploy”),填写EAR目录的名字为newEar,然后确定。可以看到,在E:\\deploy目录中新建了newEar目录,在newEar目录中有

META-INF\\application.xml和META-INF\\apusic-application.xml两个文件。newEar现在是一个空的J2EE应用。下面的步骤要往这个空的ear里面添加J2EE模块,充实它的内容。

第四步,添加一个EJB模块

选取菜单“编辑 | 添加一个EJB-Jar模块...”,添加一个空的EJB模块myejb.jar。可以看到,在E:\\deploy\\newEar目录下,myejb.jar目录建立,且里面有一个最简单的META-INF\\ejb-jar.xml文件。myejb.jar现在是一个空的EJB模块。

第五步,添加一个EJB

到E:\\deploy\\newEar\\myejb.jar目录中,新建目录hello,在hello目录下,用你喜欢的编辑器编写EJB的类及接口文件:Hello.java,HelloHome.java,HelloBean.java。然后编译这三个文件到当前目录。如采用命令行方式编译可这样:

E:\\deploy\\newEar\\myejb.jar\\hello>javac *.java

编译好了以后,在hello目录中会产生三个.class文件:Hello.class,HelloHome.class,HelloBean.class。

在部署工具中选择菜单“编辑 | 添加一个EJB...”,在弹出的对话框中的第一步,已经指出了要在myejb.jar中添加EJB,按“下一步”。

在对话框第二步,添加在E:\\deploy\\newEar\\myejb.jar\\hello中的三个.class文件,按“下一步”。

在对话框第三步,设置EJB属性页面接受缺省的设置,进入“下一步”。 在对话框第四步,因本EJB中没有任何环境变量和引用,直接按“完成”。 第六步,添加一个Web模块

选择菜单“编辑 | 添加一个Web模块...”,添加一个空的Web模块myweb.war。可以看到,在E:\\deploy目录下,myweb.war目录建立,且里面有一个最简单的WEB-INF\\web.xml文件。myweb.war现在是一个空的Web模块,里面没有任何Web组件。先在WEB-INF\\classes下建立目录hello\\webc,然后在里面编写JavaBean类MyWebC.java,然后编译这个文件到当前目录。如采用命令行方式编译可这样:

E:\\deploy\\newEar\\myweb.war\\hello\\webc>javac

-classpath %CLASSPATH%;E:\\deploy\\newEar\\myejb.jar *.java

编译好JavaBean类后,再在myweb.war目录中编写一个JSP文件index.jsp。 到此为止,Web模块的内容已经写好了。

第七步,部署到Apusic应用服务器(AAS)

在部署工具中选择菜单“服务器 | 部署到Apusic应用服务器”,在部署工具中会弹出窗口显示部署的过程,在AAS的控制台窗口也可看到如下信息:

2003-08-22 10:25:32 信息 [con.err] Processing EJB module myejb.jar 2003-08-22 10:25:32 信息 [service.EJB] EJB home 'ejb/HelloBean' 已注册。 2003-08-22 10:25:32 信息 [application.newEar] EJB模块 'myejb.jar'成功装载。 2003-08-22 10:25:32 信息 [application.newEar] Web模块 'myweb.war'成功装载。 2003-08-22 10:25:32 信息 [application.newEar] 成功启动 表明应用newEar已成功部署。 第八步,访问应用

打开浏览器,在地址栏输入地址 http://localhost:6888/myweb,按回车,可以看到显示结果:

第九步,修改EJB

Apusic应用服务器无需EJBGen,即不需要生成Stub类等EJB外围代码,所有的EJB实现类和Stub类都是在运行时动态生成的。

修改HelloBean.java中的getHello()方法,把 public String getHello() { return \} 改为

public String getHello() {

return \}

再重新编译HelloBean.java(可采用第五步介绍的方法)。 第十步,重新部署,再次访问应用

重复第七、第八步的动作,即在部署工具中选择菜单“服务器 | 部署到Apusic应用服务器”,重新部署完成以后再在浏览器中按“刷新”按钮,可以看到EJB修改后新的结果:

可以看到,在Apusic应用服务器上开发J2EE应用是很方便的,只需写程序-->编译-->部署-->访问,程序员被从大量繁琐的工作中解脱出来,只需关注和程序有关的事。

注意:

修改EJB类和接口,在部署工具中重新执行“部署”命令,然后直接通过浏览器访问,要求被修改的类不在系统的CLASSPATH中,如果系统的CLASSPATH中含有被修改的类,则被修改后的类不能动态地重新被Apusic服务器加载,需要重起服务器才能看到EJB被修改后的结果。

3.2 对已有的J2EE应用进行配置修改

对于一个已有的应用(EAR,WAR,EJB-Jar),可以通过在部署工具中指定应用的位置,让部署工具打开应用,部署工具会读取应用中的部署描述信息,以部署工具特有的方式显示在部署工具的界面中,用户可以在部署工具中生成新的部署描述信息或修改原有的部署描述信息。

4 部署工具功能详解

4.1 界面说明

4.1.1 菜单

4.1.2 工具条

新建J2EE应用。与“文件”菜单中“新建J2EE应用...”功能相同。快捷键是Ctrl+N。 打开J2EE应用。与“文件”菜单中“打开J2EE应用...”功能相同。可打开目录或打包文

件,快捷键是Ctrl+D。

保存J2EE应用及部署描述信息。与“文件”菜单中的\保存\功能相同。快捷键是Ctrl+S。 重新装载J2EE应用。与“文件”菜单中的\重新装载\功能相同。

添加一个Web模块。与“编辑”菜单中的“添加一个Web模块...”功能相同。

添加一个EJB模块。与“编辑”菜单中的“添加一个EJB模块...”功能相同。 添加一个EJB。与“编辑”菜单中的“添加一个EJB...”功能相同。

添加一个Application Client模块。与“编辑”菜单中的“添加一个Application Client模

块...”功能相同。

登录到Apusic应用服务器。与“服务器”菜单中的“登录到Apusic服务器...”功能相同。 查看已部署的应用。与“服务器”菜单中的“查看已部署的应用”功能相同。

部署到Apusic应用服务器。与“服务器”菜单中的“部署到Apusic应用服务器”功能相

同。快捷键是F5。

查看帮助文档。与“帮助”菜单中的“帮助文档”功能相同。快捷键是F1。

4.1.3 总体界面结构

4.2 应用管理类功能

这一类功能有: ? 新建J2EE应用;

? 打开J2EE应用(包括目录和文件形式的应用); ? 添加一个Web模块; ? 添加一个EJB模块; ? 添加一个EJB;

? 添加一个Application Client模块; ? 删除(J2EE模块,组件); ? 把目录形式的应用打包成文件形式。 4.2.1 新建J2EE应用

新建的J2EE应用都是以目录形式存在的,在开发阶段,没必要使用打包形式的.ear文件(或.jar文件,.war文件),开发者可以方便地在目录中对文件进行修改、调试,到最后发布的时候再打包成.ear文件(或.jar文件,.war文件)。选择菜单“文件 | 新建J2EE应用...”,或工具栏按钮

,打开新建J2EE应用对话框。

按照图中所填的项,则按“确定”后,会在硬盘中建立如下结构:

4.2.2 打开J2EE应用

选择菜单“文件 | 打开J2EE应用...”,或工具条按钮录形式或打包形式J2EE应用,即可打开进行配置。

,在弹出的对话框中指定目

4.2.3 添加一个Web模块

选择菜单“编辑 | 添加一个Web模块...”,或工具条按钮框。

,弹出添加Web模块对话

添加Web模块分为三类: ? 添加一个新的空Web模块。

只建立基本的Web模块结构,即只生成一个基本的WEB-INF/web.xml文件。模块的内容是空的,需要进一步添加内容(html,JSP/JavaBean/Servlet等)

? 添加一个目录形式的Web模块。

指定一个已经存在的目录形式的Web模块,加到当前的EAR中。 ? 添加一个zip文件形式的Web模块。

指定一个已经存在的.war文件形式的Web模块,加到当前的EAR中。

Web模块名称,表示新添加的模块的名字,如果不是以.war结尾,部署工具会自动在指定的名字后面加上\。

4.2.4 添加一个EJB模块

选择菜单“编辑 | 添加一个EJB-Jar模块...”,或工具条按钮对话框。

,弹出添加EJB模块

添加EJB模块分为三类: ? 添加一个新的空EJB模块。

只建立基本的EJB模块结构,即只生成一个基本的META-INF/ejb-jar.xml文件。模块的内容是空的,需要进一步添加EJB等。

? 添加一个目录形式的EJB模块。

指定一个已经存在的目录形式的EJB模块,加到当前的EAR中。 ? 添加一个zip文件形式的EJB模块

指定一个已经存在的.jar文件形式的EJB模块,加到当前的EAR中。

Web模块名称,表示新添加的模块的名字,如果不是以.jar结尾,部署工具会自动在指定的名字后面加上\。

4.2.5 添加一个EJB

选择菜单“编辑 | 添加一个EJB...”,或工具条按钮添加一个EJB一般要经过四步。

,弹出添加EJB向导对话框。

第一步选择EJB放到哪一个EJB模块里面。可以输入一个新的EJB模块的名称,也可以选择一个已经有的EJB模块的名称。

第二步,告诉部署工具你要添加的EJB都包含哪些类文件。

第三步,正确设置EJB的各种属性,部署工具会根据你指定的EJB的类文件进行判断,为你填好一些属性,请检查正确性,如不正确,则填入正确的值。

第四步,部署工具会根据你指定的类文件为你找出你在代码中指定的环境变量及各种引用(不一定是所有的),请检查正确性,如不正确,请把不正确的项删除掉。

完成以上步骤后,按“完成”按钮,则EJB已经添加到你指定的EJB模块中了。

4.2.6 添加一个Application Client模块

选择菜单“编辑 | 添加一个Application Client模块...”,或工具条按钮添加Application Client模块对话框。

,弹出

添加Application Client模块分为四类: ? 添加一个新的空Application Client模块。

只建立基本的Application Client模块结构,即只生成一个基本的

META-INF/application-client.xml文件和一个基本的META-INF/MANIFEST.MF文件。模块的内容是空的,需要进一步添加需要的类等。

? 指定一个目录作为要生成的Application Client模块。

指定一个已经存在的目录形式的Application Client模块,加到当前的EAR中。 ? 指定一个已有的JAR文件作为要生成的Application Client模块。

指定一个已经存在的.jar文件形式的Application Client模块,加到当前的EAR中。 Application Client模块的名称,表示新添加的模块的名字,如果不是以.jar结尾,部署工具会自动在指定的名字后面加上\。

? 指定构成Application Client模块的class文件。

指定Application Client模块有那些类组成,部署工具会用你指定的这些类来构建Application Client模块。

4.2.7 删除(J2EE模块,组件)

选择菜单“编辑 | 删除”,或在应用结构树中要删除的节点上按鼠标右键,在弹出的菜单上选择“删除”,在确认要删除后,相应的J2EE模块或组件即被删除。

4.2.8 打包成ear文件(.jar文件,.war文件)

本功能只对目录形式的应用才可用。

当开发完成时,可以用该命令由应用目录生成应用的打包文件。

选择菜单“工具|打包成ear(jar,war)文件...”,可启动一个对话框,指导用户完成打包。

4.3. 应用配置类功能

这一类功能数量众多,部署工具界面中的大部分都属于这一类功能,它们的直接动作就是使部署工具生成XML部署描述文件的各个要素。

这类功能可分为几大类: ? 对EAR的配置; ? 对Web模块的配置; ? 对EJB模块的配置; ? 对EJB的配置;

? 对Application Client模块的配置; ? 对MailSession的配置。

关于部署配置的原理解释,可参照有关文档。

4.3.1 对EAR的配置

基本设置

当用户点击选中EAR结构树中的EAR节点后,部署描述信息配置区显示EAR基本设置界面,如下图:

1. 应用名称:即应用结构树中EAR节点的显示名称。 2. EAR存储位置:EAR的实际位置的绝对路径。

3. 图标:可以指定应用的图标,以便其他工具使用。目前,部署工具的节点图标是固

定的,不使用用户提供的图标。图标文件可以是.gif或者.jpg文件。小图标是16×16像素的,大图标是32×32像素的。 4. 描述:对应用的描述信息。 部署设置

1. 使用的虚拟主机名称:用户使用指定的虚拟主机名称来访问Apusic服务器时,可以

访问到此应用。也就是说:如果您要将多个虚拟主机名称映射到同一个Apusic服务器,则在部署时需要指定当前应用要部署到哪一个虚拟主机上。 2. 应用的基本上下文路径:指定该应用所有Web资源都遵守的访问前缀。 安全角色映射

由于需要从Apusic服务器取得服务器中的用户/组的列表,所以,在进行角色映射之前必须已经登录Apusic服务器。

在窗口中选定某一角色后,按“添加”或“删除”按钮,进行角色与Apusic用户/组的映射。 部署描述文件浏览

在EAR结构树中选中EAR节点,在右边部署描述信息配置区选取application.xml选项卡或apusic-application.xml选项卡,可以浏览application.xml文件和apusic-application.xml文件。

4.3.2 对Web模块的配置

基本设置

当用户点击选中EAR结构树中的一个Web节点后,部署描述信息配置区显示Web模块基本设置界面,如下图:

上下文根路径表示web模块的访问前缀,比如上下文根路径是“web”,则访问Web模块里面的资源用http://hostaddress:port/web/。

会话超时时间,设置用户对此Web模块中资源访问的会话超时时间。 Web模块中的子项配置

Web模块中包括如下子项的配置: ? Servlet

Servlet名称是指为一个servlet类或者一个jsp页面起一个便于识别的名称。 Servlet映射是指为一个servlet命名分配一个或多个URI,以方便用户的访问。 Servlet列表对话框中列出Web模块中所有的servlet,如上图,用户可以在此浏览所有servlet的主要设置。如果需要了解servlet的详细信息或者要更改servlet设置,可以双击表格中的一项弹出servlet属性对话框,或者选中一项后,点击\编辑\按钮,弹出Servlet属性对话框。

对于一个servlet,至少需要指定它的名称、类名或JSP文件名。如果几个servlet在启动时有先后次序的依赖关系,必须为它们设定启动顺序,若不需要考虑顺序可设为-1。

如果需要更改servlet类或jsp文件名,可以点击Servlet类名或Jsp文件名下面的\选择\按钮,弹出类名和jsp文件列表(如下图),选择您需要的类或者jsp文件,点击\确定\即可。

如果servlet需要初始参数,可以在“初始参数设置”选项页的参数表中添加或删除参数。

一个Servlet的URL映射可以有多个。URL中可以使用*号通配符。

Servlet内可以定义角色引用(role-ref),也就是说,在Servlet代码中使用的别名,它对应与web模块中定义的角色(角色链接role-link)。

可以在servlet的部署描述中使用run-as元素来定义一个run-as身份。此run-as身份可适用于整个servlet的所有方法。 对于被检测过的具有访问Web资源集合访问权限的用户身份,定义一个servlet的run-as身份对此用户身份没有任何影响。只有当此Servlet对应用中的EJB组件进行方法调用时才使用run-as身份所定义建立的身份。

? 上下文参数

填入参数名、参数值和参数说明。 ? 过滤器(Filter) 过滤器的说明请参见开发文档。

按“添加”按钮,弹出如下对话框,

添加一个Filter必须要指定的项是Filter名称和Filter类名,如果该Filter有初始参数,还要指定初始参数。

? 过滤器与URL或Servlet的映射

有关过滤器与URL或Servlet的映射的说明请参见开发文档。

按“上移”、“下移”按钮改变多个Filter的调用顺序,按“添加”按钮,弹出如下对话框,

指定Filter与哪个URL模式或Servlet匹配。 ? 侦听器(Listener )

有关侦听器的说明请参见开发文档。

按“添加”按钮添加新的Listener, 按“上移”、“下移”按钮改变多个Listener的调用顺序。 ? MIME类型映射

一个MIME类型映射包括扩展名和MIME类型两个元素。

? 欢迎文件

? 出错页面

对于Web模块中可能出现的错误代码和异常,可以在此界面中设置对应的出错页面。 ? JSP标记库 (Taglib)

在上图中,部署者定义了一个Taglib,其URI为myTagLib,实际存放位置在/WEB-INF/taglibs/myTagLib.tld。 定义此Taglib后,本Web模块中的JSP页面在使用此Taglib时,只需要指定TaglibURI等于myTagLib即可,即:<%@taglib uri=\prefix=\,而不必在URI中写完整的路径,如上例中的/WEB-INF/taglibs/myTagLib.tld。

关于Taglib的更多信息请参考Apusic开发文档。

? 资源环境引用

资源环境引用指定目标操作环境中与资源关联的受管理的对象(比如JMS目的地)的逻辑名称。有关资源环境引用的详细说明,可参见Apusic开发文档。

? 资源引用

资源引用的全称叫资源管理者连接工厂引用,在J2EE 1.3中资源引用做了限制,仅表示对数据源、JMS连接工厂等面向连接的资源的引用,而对其他资源如队列、主题等对象的引用要通过资源环境应用来描述。

资源引用的类型有5种,javax.sql.DataSource资源管理者连接工厂类型用来获得JDBC连接,javax.mail.Session类型用来获得JavaMail连接,

Javax.jms.QueueConnectionFactory和javax.jms.TopicConnectionFactory类型用来获得JMS连接,java.net.URL类型用来获得URL连接。

资源引用的认证类型有两种,Container和Application,Container表示由容器根据部署者提供的角色匹配信息来获得与资源管理者的连接,而不需在调用资源管理者连接工厂的方法是提供与安全有关的参数;Application表示在EJB程序中用编程的方式指定与资源管理者连接所需的信息。

Bean提供者可以控制从资源管理者连接工厂获得的连接的共享性质。缺省情况下,对一个资源管理者的连接是可与同一应用中处于同一事务环境下使用同一资源的其他EJB共享的。

有关资源引用的详细说明可参见Apusic开发文档。 ? 安全角色

Web模块中的某些资源只允许授权的用户访问,因此我们需要按照用户的类型定义角色。 在安全角色定义对话框定义安全角色,用于访问受安全约束的Web资源。

角色定义完之后,需要把角色映射到相应的Apusic用户或组。 ? 安全约束设置

安全约束用来宣布对某些Web内容的保护。新建一个安全约束,弹出如下对话框:

用户数据约束 - 描述了客户服务器传输层的要求,传输保证的选项有三个:不要求,完整和保密。“不要求”即是以普通HTTP方式传输,“完整”表示防止在传输过程中内容被篡改,“保密”表示在传输过程中防止信息被读取。

Web资源集合 - 是一系列URL模式和HTTP方法的集合,这个集合是整个Web应用中Web资源及其上应用的HTTP方法的子集,它描述一个被保护的资源的集合。Web资源集合是安全约束中必须要定义的内容,即一个安全约束中至少要定义一个Web资源集合。添加一个Web资源集合的界面如下:

HTTP方法若不指定,则安全约束应用到所有的HTTP方法。URL模式指定哪些Web资源受到安全约束。

授权约束 - 是一个由安全角色组成的集合。只有在这个集合中的角色才能访问安全约束中定义的Web资源集合。如果授权约束中没有指定安全角色,则没有任何用户能访问定义在这个安全约束中的Web资源。

? 安全认证方式

一个Web客户端能通过以下几种机制之一认证用户登录Web服务器。认证方式有四种: BASIC: 需要指定域名(realm name)。 DIGEST: 需要指定域名(realm name)。

FORM: 需要指定域名(realm name)、登录页面和出错页面。 CLIENT-CERT: 不需要指定其他参数,要求用户拥有一个公钥证书。

? 环境变量设置

环境变量是可以在程序代码中引用且可以在部署时改变的变量值。有关环境变量的详细说明请参见Apusic开发文档。

? EJB引用

在EJB引用设置界面可以管理所有EJB引用的部署设置。

EJB引用的Home接口类名、Remote接口类名和JNDI名称不能为空。 EJB链接的下拉列表中列出了应用中具有远程接口的所有EJB,选择了其中的一项,则类型、Home接口类、Remote接口类、JNDI名称会自动填好。EJB链接的内容也可以为空。

关于被引用的EJB的JNDI名称,可参考查看应用中所有的JNDI名称。 有关EJB引用的详细说明,可参见Apusic开发文档。 ? ? EJB本地引用

在EJB本地引用设置界面可以管理所有EJB本地引用的部署设置。

EJB本地引用的本地Home接口类名、本地接口类名和本地JNDI名称不能为空。 EJB链接的下拉列表中列出了应用中具有本地接口的所有EJB,选择了其中的一项,则类型、本地Home接口类、本地接口类、本地JNDI名称会自动填好。EJB链接的内容也可以为空。

关于被引用的本地EJB的本地JNDI名称,可参考查看应用中所有的JNDI名称。 可参考Apusic开发文档中对EJB引用的说明。 模块内容管理

通过Web模块的内容管理界面,可以向Web模块中添加文件和添加类servlets(.class)。两者的区别是:

“添加文件”需要指定向哪个目录中添加。

而“添加类”,如果添加的是.class文件,部署工具会把类文件放在WEB-INF/classes目录下,如果没有这个目录,会自动创建;如果添加的是.jar文件,部署工具会把类文件放在WEB-INF/lib目录下,如果没有这个目录,会自动创建。

在某一目录上单击鼠标右键,会弹出菜单可以新建目录。

如果需要向某个目录添加文件,可以从系统的文件管理器直接拖放到指定的目录即可,也可以使用右边的\添加文件\按钮,需要先选中此目录,然后点击\添加文件\或者\添加类\弹出用于选择添加文件的对话框,如下图:

如果想保留要添加的文件的适当目录层次信息,可以指定适当的目录层次的起点,在上图中,目录层次的起点为D:\\navy\\deploy_handbook,则添加的文件的目录层次从这个目录算起(不含这个目录),自动在目的目录中建起原来文件的目录层次。

在文件树中选择要添加的文件或者目录,点击\添加\按钮,这些文件将被显示在\要添加的文件\列表中。同样,如果列表中的某个文件是不需要添加的,您可以选中它,点击\删除\按钮即可。

点击\确定\可以完成添加,可以看到选择的文件已被添加到Web模块中。 部署描述文件浏览

在应用结构树中选中一个Web节点,在右边部署描述信息配置区选取web.xml选项卡,可以浏览web.xml文件。

4.3.3 对EJB模块的配置

基本设置

当用户点击选中EAR结构树中的一个EJB模块节点后,部署描述信息配置区显示EJB模块基本设置界面,如下图:

CMP数据源JNDI名所指定的数据源是EJB模块中所有CMP实体EJB所使用的数据源。 角色定义

EJB组件中的某些方法可能只允许授权用户访问,因此,利用角色的概念,可以指定某些方法只允许特定的角色访问。有关安全角色的详细说明,可参见Apusic开发文档。然后再把角色和Apusic服务器中的用户和组进行映射。

当用户点击选中应用结构树中的一个EJB模块节点下面的字节点“安全角色”后,在部署描述信息配置区会出现该模块中所有安全角色的列表,在这里,可以添加、删除、修改EJB模块中的角色。如下图:

EJB关系设置

当用户点击选中应用结构树中的一个EJB模块节点下面的“EJB关系”后,在部署描述信息配置区会显示该EJB模块中所有EJB关系的列表,可以添加、删除、修改EJB模块中的关系。选择EJB关系节点下面的具体某一EJB关系子结点或双击EJB关系列表中的一个关系会进入EJB模块CMP2.0关系设置界面。或按“添加”按钮,会弹出关系设定窗口。

添加一个新的关系,首先要设置关系的基本属性,包括关系名、角色名、多重性、容器管理关系域(CMR)的等设置。

1)EJB关系名:给EJB关系起的名称,此项必须填写。然后为参与关系的两个角色A和B命名。

2)EJB名称:表示关系角色属于哪一个EJB。在EJB名称的下拉框中分别选择角色A和角色B对应的EJB。

3)容器管理关系域的域名:容器管理关系域体现了关系的方向性,在A方设置了容器管理关系域,则表示有从A到B的导航关系,若B也设置了容器管理关系域,则表示也存在从B到A的导航关系,这样我们说关系是双向的,否则,关系是单向的。若只是A端设置容器管理关系域,B端没有设置,则我们说该关系是由A到B的单向关系,若只是B端设置了容器管理关系域,A端没有设置,则我们说该关系是由B到A的单向关系。关系的双方,至少要有一方设置了容器管理关系域。

4)容器管理关系域的域类型:当容器管理关系域?不为空,且关系的对方的多重性为Many时,必须选择一个值。目前可选的值有java.util.Collection和java.util.Set。

5)多重性:关系的多重性包括One to One,One to Many,Many to Many,与方向性联合起来,共包括以下七种多重性关系:

? 双向一对一:可以在任何一方选择级联删除。角色双方都应设置容器管理关系域指

向对方。由于多重性为一,不需要设置域类型。

? 单向一对一:只有一个角色包含对方的容器管理关系域,可以在关系域所指向的角

色设置级联删除。同样不需要设置域类型。

? 双向一对多:只能在多方设置级联删除。角色双方都应设置容器管理关系域指向对

方。一方应该域类型为java.util.Collection或java.util.Set。

? 单向一对多:只能在多方设置级联删除。一方应设置指向多方的容器管理关系域,

并设置域类型为java.util.Collection或java.util.Set。

? 单向多对一:只能在多方设置级联删除。多方应设置指向一方的容器管理关系域。

不需要设置域类型。

? 双向多对多:不能设置级联删除。双方都应该设置指向对方的容器管理关系域,并

设置域类型为java.util.Collection或java.util.Set。

? 单向多对多:不能设置级联删除。其中一方设置指向对方的容器管理关系域,并设

置域类型为java.util.Collection或java.util.Set。

6)辅助表名:当关系类型是Many to Many或单向One to Many时,必须有辅助表的辅助来表示关系,在下拉列表框中选择一个表后,会在“域-外键映射”的外键列的下拉编辑框内列出该表的所有列。

7)数据源:表示当前EJB模块所使用的CMP数据源,为模块中所有实体EJB所共用。 8)获取表信息:数据源右边的“获取表信息”按钮按下之后,会连接到数据库,并且会在“辅助表名”下拉列表框的下拉列表中列出数据库当前用户可以访问到的所有表,如果“辅助表”中有表名存在,那么它的列名在“主键域-外键”映射配置表格中的“外键”栏的下拉列表框中会列出。如果原来没有表名存在,那么现在可以很方便的选择一个,选完之后,

它的列名在“主键域-外键”映射配置表格中的“外键”栏的下拉列表框中会立即列出。注意配置数据源允许当前用户远程访问。

注意:

小技巧:对于不需要辅助表的关系,当需要配置“主键域-外键”映射时,也可以在“辅助表名”下拉列表框中选择数据库中你所需要的表,它的列名会在“主键域-外键”映射配置表格中的“外键”栏的下拉列表框中列出,这样你可以在这个下拉列表框中选择你所要的列,而无需手工输入,以方便你的配置,只是,配置完成之后,可别忘了把辅助表重新设置为空,因为你现在配置的这个关系本来不需要辅助表的。

9)“主键域-外键”映射:每个关系角色代表一个EJB,这个EJB中构成主键的域与关系对方EJB的数据库表中相应的外键之间的映射,就是“主键域-外键映射”。该项内容表示在EJB的数据库表中,与EJB“主键域”对应的主键与其他表中(可能是关系另一方EJB的数据库表,也可能是辅助表)的外键的对应关系。注意,主键可能有一个或一个以上的字段,这时,外键也必须一个或一个以上,其数量与主键相同。

对于不同的多重性关系,“主键域-外键”映射的设置分为两种情况分别讲述:需要辅助表和不需要辅助表。

? 需要辅助表的情况

多对多(包括单向多对多和双向多对多)和单向一对多的关系需要辅助表。Apusic应用服务器规定,在单向一对多的情况下,“多”方的数据库表中并无指向“一”方的外键,关系双方的联系需要在辅助表中体现。

首先选择数据源并获取表信息,从辅助表名的下拉列表中选择已经存在的辅助表。 在“主键域-外键”映射的表格中分别选择EJB域和辅助表中对应的列。“EJB域”选择这个Entity Bean的主键域,这个(些)域与该EJB的数据库表的主键对应,“外键”选择辅助表中指向该Entity Bean数据库表的外键。对于需要辅助表的情况,关系双方都需要设置“主键域-外键”的映射。

? 需要辅助表的情况

一对一(双向一对一、单向一对一)、双向一对多和单向多对一不需要辅助表。对于每种多重性和方向性的组合,“主键域-外键”映射的设置有所不同,下面分别讲述。

1.双向一对一:在角色双方都需要进行“主键域-外键”映射。双方的数据库表中都含有指向对方的外键。“EJB域”为EntityBean的主键域,这个(些)域与该EJB的数据库表的主键对应,“外键”为另一个角色的EntityBean数据库表指向这个EntityBean数据库表的外键。

2.单向一对一:需要在没有设置容器管理关系域的一方设置“主键域-外键”映射。设置了容器管理关系域的一方的EJB数据库表中含有指向另一端的外键。“EJB域”为EntityBean的主键域,这个(些)域与该EJB的数据库表的主键对应,“外键”为另一个角色的EntityBean数据库表指向这个EntityBean数据库表的外键。

3.双向一对多:需要在“一”方设置“主键域-外键”映射。“多”方的数据库表中含有指向“一”方的外键。“EJB域”为“一”方Entity Bean的主键域,这个(些)域与该EJB的数据库表的主键对应,“外键”为“多”方Entity Bean数据库表中指向“一”方EntityBean数据库表的外键。

4.单向多对一:需要在“一”方设置“主键域-外键”映射。“多”方的数据库表中含有指向“一”方的外键。只是“多”方设置了容器管理关系域,“一”方没有设置容器管理关系域。“EJB域”为“一”方Entity Bean的主键域,这个(些)域与该EJB的数据库表的主键对应,“外键”为“多”方Entity Bean数据库表中指向“一”方EntityBean数据库表的外键。

对于不需要辅助表的情况,“主键域-外键”映射在哪一端设置的问题,根据以上几种情况,可以总结出一个共同的特征,就是一定要设置在外键所在的表的另一端,举个例子,假如角色A的数据库表有外键指向角色B,则“主键域-外键”映射要设置在B端,正如单向一对多中所讲的。

如上所述,就在Apusic应用服务器上配置好了Entity Bean之间的关系。如果在配置关系时Entity Bean的数据库表并不存在,可以选择自动建表,那么几乎可以不需要作任何设置就能够部署了。自动建表适合于对数据库的表结构要求不是很严格的情况。对于自动建表的情况, 只需填上EJB关系名、多重性、EJB名称、容器管理关系域,其他的内容如果不填,Apusic应用服务器会按照自己的命名规则自动生成表和字段的名称,如果填上了自己的配置,Apusic应用服务器会按照你填的名称生成表和字段名。

有关CMP2.0关系的更多信息可参见Apusic开发文档。

有关CMP2.0关系的例子,请参见Apusic应用服务器安装目录中的

docs/samples/bibliography目录。可用部署工具打开这个目录中的已经生成好了的cmpsamples.ear,看一看其中的关系是如何配置的。

模块内容管理

通过EJB模块的内容管理界面,可以向EJB模块中添加文件。 在某一目录上单击鼠标右键,会弹出菜单可以新建目录。

如果需要向某个目录添加文件,可以从系统的文件管理器直接拖放到指定的目录即可,也可以使用右边的\添加文件\按钮,需要先选中此目录,然后点击“添加文件”按钮弹出用于选择添加文件的对话框, 具体可参考Web模块内容管理。

部署描述文件浏览

在应用结构树中选中一个EJB模块节点,在右边部署描述信息配置区选取ejb-jar.xml选项卡,可以浏览ejb-jar.xml文件。