`
957803796_1
  • 浏览: 120125 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

WEBLOGIC服务器管理

 
阅读更多
1 WebLogic服务器管理概述
本章将介绍WebLogic服务器的管理工具,内容如下:
ü 域、管理服务器以及受管理的服务器
ü 启动管理控制台
ü 运行时对象与配置对象
ü 对日志消息的集中访问
BEA WebLogic Server™ 包含了许多互相关联的资源。对这些资源的管理包括下列任务:服务器的启动及终止,服务器以及连接池的负载平衡,资源配置的监控,诊断并修改问题,监控并评估系统性能,分发Web应用、EJB以及其它资源。
WebLogic服务器提供了一个健壮的基于Web的工具——管理控制台,它是执行上述任务的主要工具。通过管理控制台,你可以访问 WebLogic 管理服务。 管理服务实现了Sun的Java管理扩展标准(JMX),它是 WebLogic资源管理的基础。
你可以用管理控制台来配置资源的属性,分发应用及组件,监控资源的使用情况(如服务器负载,Java虚拟机的内存使用情况以及数据库连接池的负载),查看日志消息,终止服务器,以及执行其它管理任务。
作为一个单元来管理的并相互关联的一组WebLogic服务器资源被称为域。一个域可以包含一或多个WebLogic服务器,还可以包含WebLogic服务器集群。
域的配置使用扩展标记语言(XML)定义。install_dir/config/domain_name目录中的config.xml文件定义了域的配置,install_dir是WebLogic Server软件的安装目录。
域是一个完备的管理单元。向域里分发应用的时候,该应用的各组成部分只能分发到域之内的服务器上。如果域中包含集群,那么集群中的所有服务器都必须属于同一个域。
J2EE应用是一个组件集合,这些组件被组织成一个部署单元(例如EAR,WAR, 或JAR文件)。应用所需要的各种组件——EJBs或Web应用,服务器或集群,JDBC连接池等等都定义在一个域配置中。将这些资源组合在一个单一的、完备的域中使我们可以以统一的方式来看待或访问这些相互关联的资源。
运行管理服务的WebLogic服务器称为管理服务器。管理服务集中管理并监控域的所有资源。如果要对某个域执行管理操作,该域的管理服务器必须处于运行状态。
一个包含多个WebLogic服务器的域只能有一个管理服务器,其它服务器称为受管服务器。每个WebLogic受管服务器都会在启动时从管理服务器得到各自的属性配置。
管理服务器和WebLogic受管服务器启动时都运行webLogic.Server类。没有作为受管服务器启动的WebLogic服务器就是管理服务器。
在生产环境中,系统的典型配置是这样的:应用及业务逻辑组件被分发在多个受管服务器上,而管理服务器则负责配置及监控受管服务器。管理服务器的作用是配置与监控受管服务器。如果管理服务器宕机了,部署在受管服务器上的应用不受影响,可以继续处理客户端的请求;这种情况下,当管理服务器被重启后,可以重新获得对活动域的控制(详细内容,参见“受管服务器运行时重启管理服务器”中的内容)。
把应用或应用组件分散到一组受管服务器上能带来一些好处。将EJB以及其它组件分布到一组服务器上可以保证主应用的可用性。如果不同的组件完成不同的功能可以提高系统的性能,例如将数据库访问与帐单事务分在不同的受管服务器上处理。象EJB这种可以实现各种功能的组件或应用是可以被隔离开的,从而使它的可用性不依赖于其它组件的状态。多个应用可以部署在一个域中。
当管理服务器使用这样的配置启动以后,我们说该域是活动(active)的。在管理服务器运行期间,只有管理服务器才可以修改配置文件。管理控制台及命令行管理工具提供了访问管理服务器的手段,你可以通过它们来修改域的配置。一个域被激活后,可以通过管理控制台监控或配置整个域的资源。
配置存储库(configuration repository)还保存了其它非活动的配置文件,你可以通过管理终端来编辑这些文件。配置存储库由位于/config目录下的一系列子目录构成。任何域都是由位于一个与该域同名的子目录下的config.xml唯一定义的。你可以通过管理控制台在启动时出现的欢迎页面上的Configuation链接来访问非活动的配置文件。
管理控制台是一个Web应用,它使用JSP来访问管理服务器所管理的资源。
管理服务器启动以后(见“启动与终止WebLogic服务器”),在浏览器中使用以下URL启动管理控制台。
http://hostname:port/console
其中hostname为管理服务器终端的名字或IP地址,而port则为管理控制台用来监听请求的端口(缺省为7001)。如果你是用安全套接层(SSL)来启动管理服务器,那么必须在http后面加上s,如下所示。
https://hostname:port/console
如果浏览器被配置为使用代理服务器来发送请求,要将浏览器配置改为不使用代理服务器。如果管理服务器与浏览器位于同一台机器上,那么你要确保发送给localhost以及127.0.0.1的请求没有被发送给代理服务器。
管理控制台的左窗格包含了一个树形结构,你可以通过这棵树来浏览数据表、配置页面、监控页面,或者是访问日志文件。在树中选择一个项目(即用鼠标左点项目),就可以显示某种类型的资源的相关数据或者显示某个资源的配置页面以及监控页面。树的最左边的节点是一些文件夹,如果文件夹里包含有叶子节点,那么你可以点击其左边的加号来展开树并访问叶子节点。
实体表(某特定类型的资源的数据表)是可以定制的,这可以通过减少或增加显示不同属性的列来实现。你也可以点击表格上部的“Customize this table”链接对它进行定制。表中的每一列都对应于被选中一个属性。
启动管理控制台需要输入口令。第一次可以使用与启动管理服务器相同的用户名和口令来启动管理控制台,然后你可以使用管理控制台来创建一组具有管理权限的用户,此后这些用户就可以通过管理控制台来执行管理工作了。
管理服务器中有许多类似于JavaBean的Management Beans(MBeans)对象。Mbeans遵循Sun的Java管理扩展标准(JMX)。这些对象提供了对域资源的管理访问。
管理服务器包含了配置Mbeans与运行时Mbeans。管理Mbeans提供了配置属性的SET(写)与GET(读)访问。
运行时Mbeans提供了域资源信息的快照,例如当前HTTP会话的信息与JDBC连接池的负载信息。如果域的某个资源(例如Web应用)被实例化,那么服务器会创建一个Mbeans的实例来收集这个资源的信息。
当你从管理控制台访问某一资源的监控页面时,管理控制台执行GET操作获取当前的属性值。
管理服务使域资源的属性可以被动态修改,即使WebLogic服务器正在运行,也可以修改属性。许多属性改变不需要重启服务器就能生效。这时,修改后的属性不仅表示当前属性值,还会被保存到配置文件中。(有关配置WebLogic服务器的更多信息,请参见“配置WebLogic服务器与集群”中的内容。)
除了基于Web的管理控制台外,WebLogic服务器还提供了命令行工具来访问域资源配置及监控属性。可以用命令行工具创建script,使系统的管理自动化。(请参见“WebLogic域管理命令”)
通过管理服务器提供的域日志,你可以集中地访问所有服务器的关键系统消息。通过JMX提供的基本功能,消息可以转发到订阅该消息的实体。订阅实体通过设置过滤器来选择感兴趣的消息。本地服务器在启动时发向其它网络实体的信息称为一个布告。JMX布告使域内所有服务器的关键日志消息都被转发给管理服务器。在WebLogic受管服务器启动时,管理服务器会进行注册以便接受关键日志消息。这些消息被存储在域日志中。管理服务器向域里的每一个WebLogic服务器注册一个域日志过滤器来选择需要转发的消息。你可以通过管理控制台改变域日志过滤器,查看域日志以及查看本地服务器日志。(详细内容,请参见“使用日志消息管理WebLogic服务器”)
启动与终止WebLogic服务器
本章将介绍以下内容:
ü WebLogic管理服务器与WebLogic受管服务器
ü 启动WebLogic管理服务器
ü 将一个WebLogic受管服务器加到域中
ü 启动WebLogic受管服务器
ü 从老版本WebLogic服务器升级
ü 通过管理控制台终止WebLogic服务器
ü 受管服务器暂停和恢复
ü 将WebLogic服务器设置为Windows服务
ü 注册启动类与终止类
WebLogic管理服务器与WebLogic受管服务器
一个WebLogic域由多个WebLogic服务器组成,其中必须有一个管理服务器,该域中的其它WebLogic服务器被称为受管服务器。你可以将服务器启动为WebLogic管理服务器或WebLogic受管服务器。
管理服务器是WebLogic服务器的缺省角色。因此如果域中只有一个WebLogic服务器,那么该服务器的角色就是管理服务器。在一个多服务器的域中,只有当服务器在启动时被要求从一个运行着的管理服务器获得配置时才会成为受管服务器。
管理服务器控制对WebLogic域配置的访问以及提供诸如监控及日志消息浏览等功能。用户通过管理控制台来访问管理服务器所提供的管理服务。
WebLogic受管服务器在启动时会从管理服务器获得它的配置。因此启动一个多服务器的域只需要两个步骤:先启动管理服务器,然后启动受管服务器。
注意:受管服务器的版本必须与管理服务器的版本相同。
在WebLogic启动时,标准日志子系统还不能用于日志记录。因此,任何在启动时发生的错误都会输出到stdOut以及一个特殊的启动日志文件——servername-startup.log文件中(其中servername是服务器的名字)。如果启动成功,那么该日志中的最后一条消息会指向本地服务器的日志文件所在的位置。有关WebLogic服务器的日志子系统的更多信息,请参见“利用日志消息管理WebLogic服务器”。
启动WebLogic管理服务器
启动WebLogic管理服务器有以下多种方式:
ü 从命令行启动
启动WebLogic服务器的命令可以手工输入,也可以把启动命令写在一个脚本中,从而避免每次启动服务器时都要重输命令。有关WebLogic服务器提供的脚本示例的详细信息,请参见“使用脚本启动WebLogic受管服务器”中的内容。
ü 从Start菜单启动WebLogic服务器(只用于Windows)
ü 如果你将WebLogic服务器安装为一个Windows服务,那么在计算机启动时WebLogic服务器将自动启动。
WebLogic服务器启动时的口令使用
安装WebLogic的过程中,会要求你输入一个用于WebLogic启动的口令。如果你是用脚本来启动管理服务器与受管服务器,那么应该在脚本中将口令加入命令参数(请参见“从命令行启动WebLogic管理服务器”)。如果启动服务器的脚本没有将口令指定为命令行参数,又没有password.ini文件,那么在启动时系统会提示你输入口令。
从Start菜单启动WebLogic管理服务器
如果WebLogic服务器是通过BEA安装程序安装的,那么你可以使用Windows启动菜单中的WebLogic Server快捷方式启动WebLogic管理服务器。选择:
Start-> Programs-> BEA WebLogic E-Business Platform-> Weblogic Server Version -> Start Default Server
其中version是指WebLogic服务器软件的版本号
调用Start菜单中的WebLogic Server快捷方式实际上就是启动了startWebLogic.cmd脚本(该脚本位于install_dir/config/domain_name目录下,其中domain_name是指域的名字,install_dir是指WebLogic服务器软件的安装目录)。
启动与终止Windows服务形式的WebLogic服务器
如果把WebLogic安装成Windows服务,那么WebLogic服务器会在计算机启动时自动启动。执行startWebLogic.cmd脚本会将WebLogic服务器启动为管理服务器。参见“从命令行启动WebLogic管理服务器”中的内容。
要使WebLogic服务器作为Windows服务运行,需要在安装时设定。有关安装及删除Windows服务形式的WebLogic服务器,请参见“WebLogic服务器设置为Windows服务”。
你可以按以下步骤从服务控制面板启动或终止WebLogic服务器:
1.选择Start->Settings->Control Panel(编者注:对应中文windows就是开始->设置->控制面板->管理工具)
2.双击服务控制面板,这样便打开了服务控制面板
3.在服务控制面板中找到WebLogic服务器。如果WebLogic已经启动,你可以使用Stop按扭来终止WebLogic服务器。如果WebLogic已经终止,那么Start按扭就可以被用来启动WebLogic服务器。
Windows服务有三种模式:自动,手动与禁用。你可以通过Startup按钮来选择其中一种模式。
因为WebLogic服务器是一个Java应用,因此与其它Java应用一样,你可以使用Java命令来启动WebLogic服务器。启动WebLogic服务器的参数非常长,因此如果要从命令行来启动它,那么你必须输入一长串的参数,这是非常烦人的。为了保证启动命令的正确性,BEA建议你将命令写入到一个脚本中,然后用这个脚本来启动WebLogic服务器。
以下参数是用Java命令行启动WebLogic管理服务器所必需的:
ü Java堆内存的最大与最小值
例如,你想使用缺省的64M堆内存来启动WebLogic服务器,那么你就应该使用java –ms 64m 与–mx 64选项来启动服务器。
上述参数值会影响WebLogic服务器的性能,上面所提供的值只是一个缺省值。在生产环境中,你应该仔细考虑应用及环境所要使用的堆内存的大小。
ü 设置java –classpath选项
该选项的最简要的设置可以参见“设置类路径选项”
ü 指定服务器的名字
域的配置通过服务器名字指定。在命令行中通过以下参数来指定服务器的名字:
-Dweblogic.Name=Servername
缺省值为myserver。
ü 提供用户名与口令
缺省用户为system,口令为安装时所输入的口令。要将WebLogic管理服务器启动为某一特定用户,那么命令行应该使用以下参数:
-DwebLogic.management.username=username
使用以下参数给出该用户的口令:
-DwebLogic.management.password=password
ü 如果你不是从WebLogic根目录启动WebLogic服务器,那么需要指定WebLogic根目录的位置。
域的安全资源以及配置存储库(缺省为/config目录)位于WebLogic根目录下。你可以用以下参数在命令行中指定WebLogic的主目录:
-Dweblogic.RootDirectory=path
其中path是主目录的路径。如果命令行中没有指定该属性,那么当前目录就被设置为该属性的动态值。
ü 如果要使用SSL协议,那么在启动时需要把私钥密码传递给服务器以便服务器可以对SSL私钥文件解密。在命令行中用以下参数来传递SSL私钥口令:
-Dweblogic.pkpassword=pkpassword
其中pkpassword是SSL私钥密码。
ü 在命令行中使用以下参数可以在启动管理服务器时指定域配置文件的名字:
-Dweblogic.Domain=domain_name
其中domain_name是域的名称。用来启动域的配置文件保存在同名子目录下。
配置存储库由/config目录下的域组成。配置存储库可能包含多个域配置。每个域分别位于一个子目录中,子目录的名字与域的同名。指定domain_name时,实际指定的是这个子目录的名字。所指定的子目录包含了一个XML配置文件(config.xml)以及对应域的安全资源(见下面的例子)。域的配置由config.xml文件指定。
图1.1 – 配置存储库中域目录中的内容
启动管理服务器所使用的域配置使这个域成为活动域。
ü 在命令行中还可以指定WebLogic配置属性的值。所指定的值成为属性的运行时值。而保存在永久配置中的值将被忽略。在命令行中设置WebLogic属性的值采用以下格式:
-Dweblogic.attribute=value
设置类路径选项:
以下参数必须包含在java命令行的classpath选项中
ü /weblogic/lib/weblogic_sp.jar
ü /weblogic/lib/weblogic.jar
ü WebLogic服务器还包含一个名为Cloudscape的数据库系统。Cloudscape数据库系统是纯Java的数据库管理系统。如果你想使用这个DBMS,那么CLASSPATH还应该包含:
/weblogic/samples/eval/cloudscape/lib/cloudscape.jar
ü 如果使用WebLogic Enterprise Connectivity,那么类路径中还应该包含:
/weblogic/lib/poolorb.jar
其中weblogic指WebLogic服务器的安装目录。
WebLogic软件提供了一个用于启动WebLogic服务器的脚本示例。你可以根据环境及应用的需要对该脚本做适当的修改。启动管理服务器与启动受管服务器使用不同的脚本。启动管理服务器的脚本为startWebLogic.sh(UNIX环境)与startWebLogic.cmd(Windows环境)。这些脚本位于域配置子目录下。
使用WebLogic软件所提供的脚本示例时,应注意以下问题:
ü 类路径的设置与目录名称
ü 将变量JAVA_HOME的值改为JDK所在的目录
ü UNIX用户还要修改示例脚本文件的权限,以使该文件可以被执行。例如
chmod +x startAdminWebLogic.sh
在生产环境中,我们建议将包含关键商业逻辑的应用分发在受管服务器中。这种情况下,管理服务器所起的作用只是配置与监控受管服务器。因此,在这种配置下,即使管理服务器不可用,运行在受管服务器中的应用仍然可以继续处理客户端请求。
管理服务器在启动时,会复制一份用来启动活动域的配置文件。所复制的文件被保存为:
install_dir/config/domain_name/config.xml.booted
其中install_dir指WebLogic服务器软件所在的目录。只有当管理服务器成功启动并可以处理请求时,它才会创建config.xml.booted文件。
你应该对这个文件进行备份,它可以帮助你从被更改过的活动配置回退到以前的配置。
如果在受管服务器运行时,管理服务器发生失败,你不需要重启受管服务器来恢复对域的管理。如何恢复对活动域的管理取决于是否可以在同台机器上启动管理服务器。
在受管服务器正在运行的情况下重启管理服务器时,如果让管理服务器执行寻找操作,那么管理服务器会寻找到所有正在运行的受管服务器。要让管理服务器执行寻找受管服务器的操作,需要在启动管理服务器的命令行中使用以下参数:
-Dweblogic.management.discover=true
该属性的缺省值为false。域配置目录中的running-managed-servers.xml文件列出了该管理服务器能识别出的受管服务器。如果管理服务器被指示在启动时执行寻找操作,那么它将使用这个列表来检查运行着的受管服务器。
重启管理服务器不会改变受管服务器的运行时配置。因此如果你修改了那些只能静态配置的属性,那么只有重启受管服务器才能使更改生效。管理服务器的发现操作不会使管理服务器监控受管服务器或者是更改动态配置属性的运行时值。
如果机器崩溃导致你无法在先前运行管理服务器的机器上重启管理服务器,你可以按照以下步骤来恢复对受管服务器的管理。
1.将另一台机器的主机名设为先前管理服务器所在服务器的主机名。
2.在这台将作为管理服务器的新机器上安装WebLogic服务器软件(如果该机器上没有安装WebLogic软件的话)
3.先前用来启动管理服务器的机器中的/config目录(the configuation repository)必须可以被新机器使用。/config目录可以通过备份介质获得也可以通过NFS mount获得。该目录下包含用来启动活动域的配置文件(config.xml)以及安装在/applications目录下的应用与组件。
4.在命令行中加入以下参数来重启新机器中的管理服务器
-Dweblogic.management.discover=true
使用上述参数会强制管理服务器去检测正在运行的受管服务器。
将WebLogic受管服务器加入到域
在运行管理服务器之前,你必须在域的配置文件中添加该服务器的条目。步骤如下
1.启动域中的管理服务器
3.在管理控制台中为服务器所在的机器创建一个条目(Machines->Create a new machine, Servers->Create a new server)(如果该服务器与管理服务器在不同的机器上)
有关服务器配置的更多内容,请参见“配置WebLogic服务器集群”中的内容。
启动WebLogic受管服务器
在把WebLogic受管服务器加入到配置中以后(见“将受管服务器加入到域中”),你可以用java命令行启动受管服务器。启动受管服务器的命令可以手工输入,也可以编写成脚本以避免每次重启服务器时重复输入相同的内容。有关WebLogic所提供的脚本示例请参见“用脚本启动WebLogic受管服务器”中的内容。
受管服务器与管理服务器启动参数的主要区别在受管服务器需要一个用来识别管理服务器位置的参数,受管服务器通过这个参数从管理服务器获取配置。如果命令中没有这个参数,那么WebLogic服务器将启动为管理服务器。
以下是启动WebLogic受管服务器所必须的参数:
ü 指定Java堆的最大内存与最小内存
例如,可以为WebLogic服务器分配64M Java堆内存,这是一个默认值。相应的选项为:java –ms64与 –mx64。
这两个参数的值对WebLogic服务器的性能有很大影响。在生成环境中,你应该谨慎考虑适合于应用与环境的值。
ü 设置java –classpath选项
该选项的最基本设置请参见“设置类路径选项”中的内容
ü 指定服务器的名字
当WebLogic受管服务器从管理服务器请求自己的配置信息时,管理服务器通过服务器名来识别该受管服务器,这样管理服务器就可以将合适的配置信息传递给受管服务器。因此,在启动受管服务器时,你必须设置服务器名。你可以在启动WebLogic受管服务器的命令中使用以下参数:
-Dweblogic.Name=servername
ü 提供用户名与口令
缺省的用户为System,System用户的口令是在安装时指定的。要用其它用户来启动WebLogic受管服务器,那么在命令行中使用以下参数:
-Dweblogic.management.password=password
有关如何使用口令的内容,请参见“在启动WebLogic服务器时使用口令”。
ü 如果要使用SSL协议,那么在启动时需要传入私有密钥口令以便服务器能够对SSL私钥文件进行解密。在启动服务器的命令中使用以下参数可以将SSL私有密钥传递给服务器。
-Dweblogic.pkpassword=pkpassword
其中pkppassword指的是私有密钥口令
ü 指定管理服务器的主机名与监听端口
在启动受管服务器时,必须指定管理服务器的主机名与监听端口,因为受管服务器需要从管理服务器获得配置信息。你可以在启动受管服务器的命令行中使用以下参数:
-Dweblogic.management.server=host:port
-Dweblogic.management.server=http://host:port
其中host是管理服务器所在机器的名字或IP地址,port是管理服务器的监听端口。缺省情况下,该监听端口为7001
如果使用SSL与管理服务器通信,那么管理服务器必须指定为:
-Dweblogic.management.server=https://host:port
如果管理服务器与受管服务器的通信采用SSL协议,那么你应该在管理服务器中启用SSL。详细内容请参见“安全管理”。
注意:如果WebLogic服务器在启动时没有指定管理服务器的位置,那么该WebLogic服务器将启动为管理服务器。
注意:因为受管服务器从管理服务器获得其配置,因此所指定的管理服务器必须与受管服务器在同一个域中。
ü 你可以在命令行中指定WebLogic配置属性的值。由这种方式设置的值将成为该属性的运行时值,保存在永久配置中的值将被忽略。在命令行中指定WebLogic属性值使用以下形式:
-Dweblogic.attribute=value
WebLogic提供了用来启动WebLogic服务器的脚本示例。你可以根据实际运行环境与应用的情况修改脚本示例。启动管理服务器与受管服务器的脚本是不一样的。启动受管服务器的脚本为startMangagedWebLogic.sh(Unix)与startManagedWebLogic.cmd(Windows)。这些脚本位于域的配置子目录中。
使用脚本示例时应注意以下事项:
ü 路径的设置与目录名称
ü 将变量JAVA_HOME的值设置为JDK所在的目录
ü UNIX用户还应修改示例脚本的权限,使该文件成为可执行文件。例如:
chmod +x startManagedWebLogic.sh
以下是用脚本启动受管服务器的两种方式:
ü 如果已经设置了SERVER_NAME与ADMIN_URL环境变量,调用启动脚本时就不需要提供这两个参数的值了。SERVER_NAME变量应该设为要启动的WebLogic受管服务器的名字。ADMIN_URL设置为管理服务器所在机器的主机名及其监听端口(缺省为7001)。例如
set SERVER_NAME=bigguy
set ADMIN_SERVER=peach:7001
startManagedWebLogic
ü 你可以在调用启动脚本的命令中传入受管服务器的名字与管理服务器的URL。
startManagedWebLogic server_name admin:url
其中server_name是要启动的受管服务器的名字,admin_url可以是http://host:port 或者是https://host:port,其中host是指管理服务器所在机器的主机名或者是IP地址, port是管理服务器的监听端口。
从老版本WebLogic服务器升级
如果你想用老版本的启动脚本来启动WebLogic 6.0 服务器软件,那么你需要对该脚本作一些修改。以下是WebLogic6.0与以前版本的主要不同点:
ü 动态类装载
在启动以前版本的WebLogic服务器时,需要设置两种类路径(Class Path)
1.Java系统类路径
2.WebLogic类路径
WebLogic类路径属性用于动态类装载的配置。6.0版本的WebLogic不再使用WebLogic类路径属性,同时对Java系统路径也做了修改。因此,启动老版本WebLogic软件的脚本需要做相应的修改才能用来启动WebLogic 6.0 服务器。在这个版本中,需要动态装载的类由应用负责设置,这可以通过应用的XML描述符文件指定类的位置来实现。
有关Java类路径设置的信息,请参见“设置Classpath选项”。
ü 命令中不需要指定许可证文件或Policy文件所在的位置
ü 管理服务器与受管服务器的区别是在这个版本才出现的。如果你想将WebLogic服务器启动为受管服务器,那么在启动时,需要有指向一个正在运行着的管理服务器的URL。
ü 启动WebLogic受管服务器使用新的启动脚本——startManagedWebLogic.cmd(Windows)与startManagedWebLogic.sh(UNIX),而原来的startWebLogic.sh与startWebLogic.cmd则用来启动管理服务器。
要终止一个WebLogic服务器:
ü 在管理控制台的域树上(位于左边窗格),选择要停止的服务器
ü 选择Monitoring->General标签页,点“Shutdown this server”链接
你可以用以下命令停止WebLogic服务器:
java weblogic.Admin -url host:port SHUTDOWN -username adminname -password password
其中:
host是运行WebLogic服务器的主机名或IP地址。
port是WebLogic服务器的监听端口(缺省为7001)。
adminname指的是具有WebLogic服务器管理员权限的用户,缺省为system。
password指的是adminname用户的口令。
你可以通过管理控制台暂停一个WebLogic受管服务器,此时,WebLogic受管服务器只接受来自管理服务器的请求。这种情况的典型应用是将一个WebLogic服务器作为另一台服务器的“热”备份运行。该备份服务器将一直保持暂停状态,直到你让它处理请求为止。
注意:被暂停的WebLogic服务器只是不响应HTTP请求,而Java应用与RMI调用没有被暂停。
要暂停一个WebLogic受管服务器:
ü 在管理控制台的域树上(位于左边的窗格),选择你要暂停的服务器。
ü 在Monitoring->General标签页上,选择“Suspend this server”链接。
要使受管服务器恢复对客户端请求的处理:
ü 在管理控制台的域树上,选择需要恢复的服务器。
ü 在Monitoring->General标签页上,选择Resume this server链接
将WebLogic服务器设置为Windows服务
WebLogic服务器可以作为Windows服务运行。如果你将WebLogic安装为Windows服务,那么,在启动计算机时,系统会调用启动脚本startWeblogic.cmd而启动WebLogic服务器。WebLogic服务器是启动为管理服务器还是受管服务器取决于调用WebLogic服务器的java命令中的参数设置。具体内容请参见“通过命令行启动WebLogic受管服务器以及WebLogic管理服务器”。
要使WebLogic服务器以Windows服务的形式运行或者不再将其运行为Windows服务,你首先要有管理员级权限。要将WebLogic服务器作为Windows服务启动,需要:
1. 找到weblogic/config/mydomain目录(其中weblogic是安装WebLogic服务器的目录,mydomain是与你所在的域对应的子目录)。
2.执行installNTService.cmd脚本。
删除Windows服务形式的WebLogic服务器
删除Windows服务形式的WebLogic的步骤如下:
1.定位到weblogic/config/mydomain目录(其中weblogic是安装WebLogic服务器的目录,而mydomain是域配置所在的子目录)。
2.执行uninstallNTService.cmd脚本
你也可以从Windows的启动菜单中卸载WebLogic服务。
更改安装成Windows服务的服务器口令
如果你将缺省服务器安装为Windows服务,那么创建服务会用到安装WebLogic软件时键入的口令。如果要更改这个口令,你应该:
1.使用uninstallNTService.cmd脚本来卸载作为Windows服务的WebLogic服务器(该脚本位于install_dir/config/domain_name目录下,其中install_dir是安装WebLogic产品的目录)。
2.installNTservice.cmd脚本包含了以下命令:
rem *** 安装服务
“C:/bea/wlserver6.0/bin/beasvc” -install -svcname:myserver
-javahome:”C:/bea/jdk130” -execdir:”C:/bea/wlserver6.0”
-extrapath:”C/bea/wlserver6.0/bin” -cmdline:
%CMDLINE%
在上述命令后加上以下命令:
-password:”your_password”
其中your_password是新口令
3.执行更改后的installNTservice.cmd脚本。这将使用更新的口令创建一个新服务
你可能想在WebLogic启动或正常关闭时执行某些任务,那么WebLogic所提供的启动类与终止类就是实现这些任务的一种机制。启动类是在WebLogic服务器启动或重启时自动装载并执行的Java程序,启动类在所有的服务器初始化任务都完成后才会被装载及执行。
终止类的工作原理与启动类相同。当你通过管理控制台或者是使用weblogic.admin shutdown命令来终止WebLogic服务器时,终止类会自动装载并执行。
要使WebLogic服务器使用启动类或终止类,你必须通过管理控制台注册这些类。
注册启动类或终止类的步骤如下:
1.通过管理控制台的Domain树(位于左窗格)访问Startup & Shutdown表。在这个表中创建启动类与终止类的条目。
2.在Configuration标签页中,为所添加的终止及启动类提供名字及其它必要的参数。
详细信息,请参见管理控制台在线帮助以下部分的内容:
ü 启动类
ü 终止类
本章将介绍以下内容:
ü 节点管理器(Node Manager)概述
ü 配置与启动节点管理器
ü 受管服务器的远程启动与Killing
节点管理器是一个Java应用程序。借助该应用,你可以从管理控制台远程地启动或kill WebLogic受管服务器。节点管理器是单独的一个Java应用,随同WebLogic服务器软件供应。
你可以通过管理控制台来结束受管服务器,另一种方式是用节点管理器kill远程受管服务器。当远程服务器被hung或没有响应时,就需要杀掉远程服务器进程。
为了能远程启动受管服务器,首先要在受管服务器所在的机器上配置并运行节点管理器。一个节点管理器进行可以负责一台机器上所有受管服务器的远程启动与killing。为了保证节点管理器的可用性,应该把节点管理器配置为UNIX机器的守护程序或Windows NT机器的Windowns NT服务。这保证了机器上的管理服务器可以用来启动受管服务器。
如果一台机器中运行了节点管理服务器,那么当它获得管理服务器的请求后,可以启动或杀掉这台机器上所安装配置的任何受管服务器。节点管理器与管理服务器之间的通信采用安全套接字层(Secure Socket Layer)。
WebLogic服务器在启动时,会将各种启动与错误消息打印到STDOUT或STDERROR中。节点管理器将这些信息保存在节点管理器日志目录中的文件里,这些消息同时会显示在管理控制台的右窗格中。
缺省情况下,节点管理器的日志文件保存在节点管理器被启动时所在的那个目录中。节点管理器为每个由它启动的受管服务器创建一个日志文件子目录。
节点管理器与管理服务器之间的所有通信都使用安全套接层以提供身份认证与加密。同时还用客户端验证保证节点管理器与管理服务器之间的所有通信都使用双向认证。为了进一步提高安全性,节点管理器还保存了一个可靠主机的列表。节点管理器只接受这些主机上的管理服务器所发出的命令。因此你需要为节点管理服务器编辑一个可靠主机列表文件,在文件中为每个可以向节点管理器发出命令的管理服务器所在主机加上一行。该主机列表文件的名字为nodemanager.host,安装在/config目录中。缺省情况下,该文件包括以下两个条目:
localhost
127.0.0.1
在典型的生成环境中,节点管理器与管理服务器不会运行在同一主机中。因此,应该编辑该可靠主机文件,使它只包含可以启动或killing本机受管服务器的管理服务器所在机器的主机名或IP地址。可靠主机文件的每个条目由一行构成,列出了管理服务器所在机器的DNS主机名或IP地址。
有关数字证书与安全套接层的更多信息,请参见“安全管理”中的内容。
启动节点管理器之前,首先应该保证JAVA_HOME环境变量指向了JDK的根目录。节点管理器需要用到JDK。以下是一个Window NT中的例子:
set JAVA_HOME=D:/bea/jdk130
节点管理器JDK版本的要求与WebLogic服务器的JDK版本要求一样。
类路径必须作为Java命令行的选项或者作为一个环境变量来设置。下面(在Window NT中)是一个将类路径设置为一个环境变量的例子。
set CLASSPATH=.;./lib/weblogic_sp.jar;./lib/weblogic.jar
启动节点管理器的命令为:
java weblogic.nodemanager.NodeManager
命令行参数
应该用以下参数指定节点管理器所在机器的IP地址或主机名:
-Dweblogic.nodemanager.listenAddress=address
节点管理器监听管理服务器请求的缺省端口号为5555,你可以用以下启动参数设置监听端口号:
-Dweblogic.nodemanager.listenPort=port
节点管理器为它所负责的每个受管服务器创建日志文件。缺省情况下,这些子目录位于NodeManagerLogs目录中,你可以用以下启动参数改变目录的位置:
-Dweblogic.nodemanager.saveFilesDirectory=path
节点管理器使用安全套接层与管理服务器进行通信。因此启动节点管理器时,必须指定一个数字证书。应该用以下参数指定数字证书所在的位置:
-Dweblogic.nodemanager.certificateFile=path_to_cert
如果在可靠主机文件中使用的是主机名而不是IP地址,那么应该包括以下启动参数:
-Dweblogic.nodemanager.reverseDnsEnabled=true
缺省情况下,DNS是禁用的。
可以用以下参数指定可靠主机文件所在的位置:
-Dweblogic.nodemanager.trustedHosts=path
其中path是指文件nodemanager.hosts所在的位置。
类路径选项
节点管理器要用到一些WebLogic服务器同样也要使用的Java类。在启动管理服务器时,-classpath选项中包含以下值:
ü /weblogic/lib/weblogic_sp.jar
ü /weblogic/lib/weblogic.jar
为了让管理服务器能够使用节点管理器来启动或结束WebLogic受管服务器,需要完成一些事情。你可以使用WebLogic管理控制台来完成这些任务。
步骤1:创建一个机器配置条目
你应该在域配置中每个安装了受管服务器的机器创建一个条目,步骤如下
1.运行管理服务器,调用管理控制台(如果还没有被运行起来)
2.在左窗格中选择Machines节点以显示机器表格
3.选择表上部的Create a new Machine链接(或Create a new UNIX Machine)。
4.填写这个机器的信息并点Apply按钮创建一个新的机器条目。
步骤2:配置每个机器的节点管理器
对于每个要使用节点管理器的机器,应该相应地改变这个机器的配置条目:
1.在管理控制台中,选择Machines->machine_name->Node Manager。其中machine_name是运行节点管理器的机器的名字。
2.填写Node Manager标签页的以下字段:
Listen Address:监听管理服务器请求的节点管理器所在机器的IP地址或主机名。该监听地址为你在启动节点管理器时所指定的地址。
Listen Port:该字段的值必须与你在启动节点管理器时所指定的端口号一样。
管理服务器用来与该节点管理器会话的证书。默认证书为democert。在生成环境中,建议你换一个证书。
3.点Apply按钮。
步骤3:配置受管服务器的启动信息
如果要用节点管理器启动WebLogic受管服务器,那么应该为它提供启动受管服务器所需要的启动参数与选项。步骤如下:
1.在管理控制台中,选择server_name->Configuration->start其中server_name是受管服务器的名字。
2.输入受管服务器启动所需要的类路径
Classpath选项中至少应该指定以下内容:
/weblogic/lib/weblogic_sp.jar
/weblogic/lib/weblogic.jar
该选项可能还需包含启动受管服务器所用到的JDK的根目录。有关设置类路径的更多信息,可以参见“启动与终止WebLogic服务器”中的内容。
3.在Arguments字段中输入启动命令所需要的参数。
例如,你想设置Java堆内存的最大最小值。可以使用-ms64m与-mx64m选项将默认的65M java堆内存指定给WebLogic服务器。
不需要指定服务器的名字,也不需要指定用户名与口令
远程启动与Killing受管服务器
如果在受管服务器所在的机器中运行了节点管理器,可以按以下步骤启动受管服务器:
1.启动管理控制台(如果它还没有运行起来)
2.在导航树(位于左窗格)中右点服务器的名字
3.选择Start this server…
在启动管理服务器时,通常打印到STDOUT与STDERROR的消息会显示在管理控制台的由窗格中。这些消息同时被写到节点管理器的日志文件中。
终止受管服务器的方式也一样:
1.右点左窗格中受管服务器的名字
2.选kill this server
ü
3 配置WebLogic服务器与集群
本章将介绍以下内容:
ü 服务器与集群配置概述
ü 管理服务器的角色
ü 启动管理控制台
ü 动态配置的原理
ü 服务器的配置任务列表
ü 集群的配置任务列表
ü 创建一个新的域
一个域的WebLogic服务器与集群的永久配置保存在一个XML配置文件中,你可通过以下途径改变这个文件:
ü 通过管理控制台。管理控制台是用来管理与监控域配置的一个图形用户界面。这是改变或监控域配置的主要方式。
ü 使用WebLogic服务器所提供的配置应用编程接口,以编程的方式修改配置属性。
ü 通过行WebLogic服务器的命令行工具访问域资源的属性。这主要是为那些希望通过脚本自动管理域资源的用户提供的。
无论你使用上述方式的哪一种,在修改域的配置之前首先要运行管理服务器。
管理服务器是运行管理服务的WebLogic服务器。管理服务提供了WebLogic服务器功能,同时还提供了管理域所需要的功能。
缺省情况下,WebLogic服务器的实例会成为管理服务器。当管理服务器启动时,它会从WEBLOGIC_HOME目录的子目录Config目录中装载配置文件。与该管理服务器关联的每一个域在config目录下都有同名子目录。域的配置文件就存放在同名子目录的config.xml文件中。缺省情况下,管理服务器在启动时,首先会在缺省子目录下查找配置文件(config.xml),缺省子目录的名字为mydomain。
管理服务器启动后,会创建名为config.xml.booted的配置文件备份并将它保存在相应的域目录下。如果在服务器的生命周期中,config.xml文件遭到破坏(当然这种情况极为少见),你就可以将配置恢复到该备份文件中的配置。
一个域可能只有一个WebLogic服务器,这个服务器将是管理服务器。
在生产环境中,域由一个管理服务器与多个WebLogic服务器组成。在启动这个域的WebLogic服务器时,首先必须先启动管理服务器,其它服务器启动时,会被命令从管理服务器获得配置信息。这样,管理服务器就成为整个域的配置控制中心。一个域只能有一个活动的管理服务器,只有运行的管理服务器能够修改配置文件。
图3.1 – WebLogic服务器的配置
访问管理服务器的主要途径是管理控制台。打开管理控制台的步骤如下:
http://host:port/console
URL中的host是管理服务器所在机器的主机名或IP地址。port是管理服务器监听请求的端口(缺省为7001)。
系统提示你输入用户名与口令。输入你的用户名与口令。系统会进行身份验证与权限检查,它依据用户数据库来验证用户号与口令。
如果通过了身份验证并被确认可以使用管理控制台,那么管理控制台将显示为系统管理员分配给你的访问模式:或者是只读模式,或者是读/写模式。
WebLogic服务器允许动态(即在运行时)改变域资源的配置属性,大多数情况下,不需要重启WebLogic服务器就能使修改生效。属性值的改变会立即反映到当前正在运行的属性值中,也会被作为永久值保存在XML配置文件中。
当然也会有例外。例如,如果你改变了WebLogic服务器的监听端口。新设置的端口只有等到下次重启时才生效。这种情况下,属性值的改变体现在保存属性值的XML文件中,当前的运行时配置值不同于属性文件中的值。
当属性的永久值与运行时的值不同时,管理控制台用图标表示这种情形,指示服务器需要重启才能使该值生效。
管理控制台会对用户修改的属性值进行有效验证。所支持的错误有越界错误与数据类型不匹配错误。在这两种情况下,都会弹出错误信息提示你属性值设置有误。
在管理控制台启动后,如果有其它进程使用了分配给管理服务器的监听端口,那么应该删除这个进程。如果不能删除这个进程的话,那么必须编辑Config.XML文件修改管理服务器的监听端口。有关编辑Config.XML文件的更多信息,请参见“配置参考”。
在规划集群配置时,应该牢记以下关于网络环境与集群配置的限制。
1.首先,集群中的WebLogic主机必须使用静态IP地址。动态IP地址分配不能用于集群环境。如果服务器位于防火墙后面,而客户机位于防火墙前面,那么服务器必须有公共的静态IP地址,只有这样,客户端才能访问服务器。
2. 集群中的所有WebLogic服务器必须位于同一个局域网,并且必须是IP广播可到达的。
3.集群中的所有WebLogic服务器必须使用相同的版本。
配置集群中的服务器,使它们支持所提供的服务。
ü 对于使用了JDBC连接的EJB,所有分发了某EJB的服务器必须具有相同的分发与持久化配置。也就是说所有服务器都应该有相同的JDBC配置。
ü 所有分发了servlet的主机必须维护一组具有相同ACL的servlets。
ü 如果客户端应用直接使用JDBC连接池,那么你必须为每个WebLogic服务器创建相同的连接池(并具有相同的ACL)。这意味着集群所使用的连接池应该可以在所有的机器上创建。例如,一台运行WebLogic的NT服务器配置了连接Microsoft SQL Server数据库的连接池,那么一个包含非Windows机器(即不支持Microsoft SQL Server连接的机器)的集群不能使用这个连接池。
其它配置细节可能会因不同的集群成员而不同。例如,一台Solaris服务器可以比一台小的NT工作站处理更多的登录请求。这种差异是可以接受的。因此,正如这里所给出的例子,对于那些与性能相关的属性,你可以根据每个集群成员的特点来配置不同的值,只要所有成员的服务配置相同即可。因此,集群中的WebLogic服务器在所有与WebLogic服务、类文件以及外部资源(例如数据库)相关的方面具有相同的配置。
可以通过管理控制台进行以下服务器配置:
ü 通过管理控制台的Server节点配置单独的服务器。可以配置的属性包括名字,监听端口与IP地址。
ü 通过管理控制台的Server节点克隆一个服务器。克隆的服务器保存了原来服务器的属性值,你可以使用Server节点中的Configuration配置新服务器的名字。
ü 使用管理控制台的Server节点来删除一个服务器。点击要删除的服务器的图标,将弹出一个删除服务器的确认对话框,点击对话框中的Yes按钮将删除服务器。
ü 使用管理控制台的Server节点查看一个服务器的日志。点击要查看的服务器,点击Monitoring标签页。点击View Server Log连结,便可以在管理控制台的右窗格查看服务器日志。
ü 使用管理控制台的Server节点查看一个服务器的JNDI树。点击所要查看的服务器,然后点击Monitoring标签页,点击该页面上View JNDI Tree连接,该服务器JNDI树的信息便显示在管理控制台的右窗格中。
ü 使用管理控制台的Server节点查看服务器的执行队列。点击所要查看的服务器,然后点击View JNDI Tree连接,然后查看管理控制台右边窗格里的表格中的内容。
ü 使用管理控制台的Server节点查看server sockets。点击所要查看的服务器,点击View Sockets连接,然后查看管理控制台右边窗格里的表格中的内容。
ü 使用管理控制台的Server节点查看服务器连接。点击所要查看的服务器,点击View Connections连接,然后查看管理控制台右边窗格里的表格中的内容。
ü 使用管理控制台的Server节点进行强制垃圾收集。点击要监控的服务器,点击JVM标签页,点击页面上的Force Garbage Collection连接。将弹出是否要进行垃圾收集的确认对话框。
ü 通过管理控制台的Server节点监控服务器的安全。点击要监控的服务器,点击Monitoring标签页,点击Security标签页。将显示安全信息。
ü 通过管理控制台的Server节点查看服务器的版本。点击要查看的服务器,点击Version标签页,将显示服务器的版本信息。
ü 通过管理控制台的Server节点监控服务器集群。点击要监控的服务器,点击Cluster标签页,将显示该服务器的集群数据。
ü 通过管理控制台的Server节点来分发EJB。点击需要分发EJBs的服务器,点击需要分发的EJB并使用移动控件将它移到被选列中。点击Apply来保存你的选择。
ü 通过管理控制台的Server节点来监控分发在某一服务器上的所有EJB。点击需要监控的服务器,点击Monitor All EJB Deployments连接来显示EJB分发表。
ü 通过管理控制台的Server节点将web应用组件分发在某一服务器上。选择要分发web应用的服务器。选择需要分发的web应用,然后通过移动控件将它移到被选列中。点击Apply来保存你的选择。
ü 通过管理控制台的Server节点来监控某一服务器上的所有web应用组件。点击web应用所在的服务器,然后点击Monitor All Web Applications连接来显示Web Application Deployments表。
ü 通过管理控制台的Server节点在服务器上分发启动与终止类。点击需要分发启动类的服务器,然后点击需要分发的启动类并将它移到被选列中。点击Apply来保存你的选择。使用Shutdown Class控件来分发终止类的过程与此相同。
ü 通过管理控制台的Server节点来分配web服务器。点击一个用来分发web应用的服务器。显示在右窗格的对话框包含了与该实例相关的标签页。在Availble列中点击一到多个需要分发到该服务器的web应用,然后使用移动控件将它们移动到Chosen列中。点击Apply来保存上述选择。
ü 通过管理控制台的Server节点为服务器分配JDBC连接池。Click a server for web-server assignment。在Available列中点击一到多个JDBC连接池,并通过移动控件将所选择的JDBC连接池移到Chosen列。点击Apply来保存你所做的分配。
ü 通过管理控制台的Server节点监控某一服务器的JDBC连接池。点及一个需要监控的连接池所在的服务器。点Monitor All JDBC Connection Pools on This Server链接。分配给该服务器的所有连接池都显示在右窗格中的JDBC连接池表格中。
ü 通过管理控制台的Server节点为一个服务器分配WLEC连接池。点击需要分配WLEC连接池的服务器。在Available列中选择一个或多个要分配的WLEC连接池,使用移动控件将所选择的WLEC连接池移动到Chosen列。
ü 通过管理控制台的Server节点监控某一服务器上的所有WLEC连接池。选择一个需要监控连接池的服务器。点Monitor All WLEC Connection Pools on This Server链接,所有分配给这台服务器的连接池显示在右窗格中的WLEC Connection Pools表格中。
ü 通过管理控制台的Server节点为一台服务器分配JMS服务器,连接工厂,以及消息收信方。点击一个需要分配JMS的服务器,从Available列中选择需要分配给这个服务器的JMS服务器,然后点移动组件把所选择的JMS服务器移到Chosen列。使用JMS Connection Factories组件以及JMS Destination组件按照分配JMS服务器的步骤为服务器分配连接工厂与消息收信方。
ü 通过管理控制台的Server节点为一台服务器分配XML registries。选择要分配XML registry的服务器,从XML Registry下拉列表中选择一个registry。点Apply保存设置。
ü 通过管理控制台的Server节点分配邮件会话。选择一个要分配邮件会话的服务器。从Available列中选择要分配给服务器的邮件会话,使用移动控件把所选择的移动会话移动到Chosen列中。点Apply按钮保存设置。
ü 通过管理控制台为服务器分配文件T3s。选择一个要分配文件T3的服务器。从Available列中选择要分配给服务器的文件T3s,使用移动控件把所选择的文件T3s移动到Chosen列。点Apply按钮保存设置。
通过管理控制台可以进行以下集群配置:
ü 通过管理控制台的Cluster节点配置集群服务器。可以配置的属性包括Cluster Name, Cluster ListenPort以及集群中的服务器名。
ü 通过管理控制台的Cluster节点克隆一个集群。克隆的服务器与原服务器具有相同的属性设置,包含同样的服务器。新集群的名字在Server节点中的Configuration部分设置。
ü 通过管理控制台的Cluster节点监控集群中的服务器。选择需要监控的集群,点Monitor Server Participating in This Cluster链接。该集群中的所有服务器显示在右窗格中的服务器表格中。
ü 通过管理控制台的Cluster节点为集群分配服务器。选择需要分配服务器的集群,从Available列中选择要分配的服务器,使用移动控件把所选的服务器移到Chosen列中。点Apply按钮保存设置。
ü 通过管理控制台的Cluster节点删除集群。选择Delete图标,删除一个集群,右窗格中显示一个删除确认对话框,点Yes确认你的删除请求。
本节说明如何创建一个新的域。所有WebLogic域的配置信息都保存在/config目录的配置存储库中。每个域在/config目录下都有一个同名子目录。
安装WebLogic服务器时,建议你对缺省的/mydomain配置目录进行备份保存在一个zip文件中。并保存该zip文件的一个备份。/mydomain目录包含了域配置的基本组件,例如fileRealm.properties文件与配置文件。
以下是新建一个域的步骤:
1. 启动一个已存在的域(例如缺省的mydomain域)中的管理服务器。
2. 使用以下URI调用管理控制台。
http://hostname:port/console
其中hostname是管理服务器的主机名,port是管理服务器的监听端口(缺省为7001)。
3. 选择mydomain->Create或编辑其它域
这将显示domains表
4. 选择Default->Create a new Domain
输入新域的名字并点Create
5. 从左窗格的域列表中选择一个新域,使它成为当前域。
6. 为新建的域创建一个Administration Server条目。
选择Servers->Create a new Server
输入新建管理服务器的名字,然后点Create
7. 管理控制台会在/configure目录下创建一个与新建域同名的子目录,并在这个子目录中创建一个配置文件config.xml。然后使用shell命令或使用Windows的浏览器在域目录下创建一个/application子目录。
8. 将管理控制台应用复制到新建的/applications目录。即把位于mydomain域的/applications目录中的console.war文件复制到新建的/applications目录。
9. 缺省的mydomain目录中包含启动WebLogic服务器的脚本。在windows中,启动WebLogic服务器的脚本为startWebLogic与startManagedWeblogic.cmd,在UNIX中为startWebLogic.sh与startManagedWebLogic.sh。把这些启动脚本复制到新的域目录中。
10.你可以在文本编辑器中编辑上述启动脚本。缺省情况下,域的名字设置为:
-Dweblogic.Domain=mydomain
用新建域的名字代替mydomain
管理服务器的名字缺省设置为:
-Dweblogic.Name=MyServer
用新建管理服务器的名字代替上面的Myserver。
11.启动脚本的最后是一个cd命令:
cd config/mydomain
使用新建域的子目录名替换上面的mydomain。启动脚本还包含下面一行:
echo startWebLogic.cmd must be run from the config/mydomain directory
用新建域的名字替换上面的mydomain
12.把缺省域目录中的SerializedSystemIni.dat文件复制到新建的域目录中。如果还没有复制这个文件,千万别启动新建的管理服务器。
13.如果在安装时创建了password.ini文件,还必须把mydomain目录中的password.ini文件复制到新建域的子目录中。
完成上述步骤后,就可以启动新建域的管理服务器了。监控WebLogic域
本章主要介绍对WebLogic域的监控,包括以下内容:
ü 概述
ü 监控服务器
ü 监控JDBC连接池
ü 管理控制台的Monitoring页面一览表
通过管理控制台,你可以对WebLogic域的性能以及运行状况进行监控。在管理控制台中,你可以查看到WebLogic资源的状态与统计数字,例如服务器、HTTP、JTA子系统、JNDI、安全性、CORBA连接池、EJB、JDBC与JMS等资源。
监控信息显示在管理控制台的右窗格中。在左窗格的域层次树上,选择一个容器或子系统或者是容器的某一实体,相关的监控信息便显示在管理控制台的右窗格中。
管理控制台提供了三种监控信息页面:
ü 某一实体的Monitoring标签页(例如JDBC连接池实例或服务器的性能)
ü 某一实体类型的数据表(例如WebLogic服务器表)
ü 域日志与本地服务器日志视图。有关日志消息的详细内容,请参见“通过日志消息管理WebLogic服务器”中的内容。
管理控制台从管理服务器获得有关域资源的信息。管理服务器包含了Management Beans(MBeans)。Mbeans基于Sun的Java管理扩展标准(JMX),它提供了对域资源的管理访问策略。
管理服务器包含两种Mbeans:配置Mbeans与运行时Mbeans.配置Mbeans用于域的配置,运行时Mbeans则提供了诸如JVM内存资源使用状况以及WebLogic服务器状态等资源的信息快照。当域中的某一资源实例化时(例如Web应用),相应地就会创建一个Mbeans实例来收集该资源的信息。
在通过管理控制台访问某一资源的Monitoring页面时,管理服务器执行Get操作来获得该资源的当前属性值。
以下部分的内容描述了部分用来管理WebLogic域的Monitoring页面。我们以这些页面为例简要说明管理控制台所提供的监控功能。
你可以通过服务器表格以及单个服务器的监控标签页来监控WebLogic服务器。服务器表格提供了域中所有服务器的状态摘要信息。如果服务器只将其部分日志消息上传到域日志中,那么通过本地服务器的日志来修复故障或研究事件将是非常有用的。
有关日志文件以及日志子系统的更多内容,请参见“使用日志消息管理WebLogic服务器”。
每个WebLogic服务器的监控标签页都包含了该服务器的监控数据。通过Logging标签页可以访问服务器的本地日志(即保存在运行服务器的机器上的日志)
Monitoring->General标签页显示了服务器的当前状态。从这个标签页,你还可以访问JNDI树、Execute Queues表、Active Sockets表以及Connections表。Execute Queues表包含了有关性能的信息,如挂起时间最长的请求以及当前被起的请求数量。
你可以通过Monitoring->General标签页来终止或暂停服务器。暂停的服务器只能接收管理服务器的请求,客户的请求被忽略。
Monitoring->Performance标签页以图形的方式描述了有关JVM内存堆使用状况、请求对象与等待请求的实时数据。通过该页面,你还可以强制JVM对内存堆执行垃圾收集。
图4-1 服务性能图
Java堆中存放了Java对象(可以是活动对象也可以是死亡对象)。正常情况下,因为JVM会自动进行垃圾收集,因此不需要你手工处理。当JVM的内存要用光时,它会停止所有执行应并使用垃圾收集算法来释放不在被应用使用的空间。
另一方面,程序员在调试应用时可能会执行强制性垃圾收集。手工执行垃圾收集非常有用,例如,可以用来测试JVM内存泄漏。
Monitoring->Cluster标签页提供了集群的信息(例如集群中有多少服务器处于活动状态)。
Monitoring->Security标签页包含了以下信息:无效登录的统计信息,被锁用户的统计信息与开启用户的统计信息。
Monitoring->JMS标签页提供了有关JMS服务器与连接的统计信息。在该页,你可以链接到活动JMS连接表格以及活动JMS服务器表格。通过这些表格,你可以监控诸如当前总会话数等属性。
Monitoring->JTA标签页提供了Java事务子系统的统计信息,如有关事务与所有回滚的统计信息。从该页面,你还可以链接到按资源或名字所选择的事务列表以及in-flight事务表格。
监控JDBC连接池
通过管理控制台,你可以对Java数据库连接(JDBC)子系统实行监控。在JDBC连接池的Monitoring标签页面上,你可以了解到有关连接池中的实例的统计信息。正如管理控制台的其它实体表,你可以定制该统计信息表,选择需要显示的属性。
许多属性提供了有关管理客户端数据库请求的重要信息。
Waiters Hight字段指明了最多有多少客户等待数据库连接。Waiters字段告诉你当前有多少客户正在等待连接。Connections Hight字段给出最大的并发连接数。Wait Seconds Hight字段显示了客户等待数据库连接的最长时间。通过这些属性,你可以判断当前的配置在响应用户请求方面是否有效。
如果Connections High字段的值近似于Maximum Capacity字段的值(该值在Configuration Connection标签页中设置),那么有必要考虑增加Maximum Capacity字段的值(即最大的并发连接数)。如果Waiters Hight字段的值显示用户必须经过长时间等待才能获得数据库连接,那么应该增加连接池的大小。
Shrink Period字段用来指定JDBC子系统在连接池开始进行缩减时所要等待的时间。当JDBC子系统要减小连接池的大小时,那么数据库连接将被释放。因为创建数据库连接非常消耗资源和时间,因此如果密集的客户端请求阵歇性地出现,那么比较短的收缩周期将意味数据库连接要不断地被重新创建,从而导致性能的下降。
下表列出了管理控制台中所有的表格以及监控标签页面。
表4-1 Monitoring页面一览表
页面
页面的路径
监控的数据
Monitoring标签页面
一般的服务器信息
服务器名字-> Monitoring -> General
服务器的状态以及activation time
服务器性能
服务器名字-> Monitoring -> Performance
请求吞吐量、JVM的内存使用以及等候请求的实时图表
集群的统计信息
服务器名字-> Monitoring -> Cluster
有关集群的统计信息,如集群中活动服务器的数量、sent and received fragments
服务器的安全信息
服务器名字-> Monitoring -> Security
无效的登录数量以及所有被锁定的用户数与未锁定的用户数
服务器的版本信息
Servername -> Monitoring -> Version
JDK, WebLogic以及操作系统的版本信息
集群
Clusters -> clustername -> Monitoring
集群的相关统计信息,如the number of alive servers and sent and received fragments
实体表
服务器
Servers
服务器的相关数据,例如内存使用、启动时间、状态、cluster participation,无效登录、堆的状态、套接字的数量and total restarts
执行队列
Servername -> Monitoring -> General -> Monitor Execute Queues on this server
请求吞吐量、JVM内存使用状况以及等待请求等信息的实时显示
执行套接字
Servername -> Monitoring -> General -> Monitor Active Sockets on this server
活动套接字的协议及其它属性
连接
Servername -> Monitoring -> General -> Monitor Connections on this server
连接的相关数据,如连接时间、远程地址、所发送的字节数与接收到的字节数
集群
Clusters
缺省的负载算法以及多点传送地址的相关数据
Transactions By Name
Servername -> Monitoring -> JTA -> Monitor Transactions by Name on this server
按名字所组织的事务的相关数据
Transaction By Resource
Servername -> Monitoring -> JTA -> Monitor Transactions by Name on this server
按资源所组织的事务的相关数据
活动事务
Servername -> Monitoring -> JTA -> Monitor In-flight Transactions on this server
该服务器中有关活动事务的数据
机器
Machines
机器的地址以及其它属性
应用
Applications
应用列表
EJB的分发
Deployments -> EJB
各个EJB的URL、应用名字及其它属性
Web应用
Deployments -> Web Applications
Web应用的URL以及它的缺省Servlet等属性
活动的Web应用
Deployments -> Web Applications -> appname -> Monitoring -> Monitor all instances of appname
Data about deployed copies of this Web application
Web应用的Servlets
Deployments -> Web Applications -> appname -> Monitoring -> Monitor all servlets for this Web Application
有关Web应用的统计数据,如最大池容量以及最长的执行时间
启动类与终止类
Deployments -> Startup & Shutdown
经过注册的启动类与终止类列表
JDBC连接池
Services -> JDBC -> Connection Pools
JDBC连接池的初始容量、容量增量及其它属性
JDBC 多池
Services -> JDBC -> Multipools
JDBC多池的负载平衡及其它属性
JDBC数据源
Services -> JDBC -> Data Sources
JDBC数据源的Pool名、JNDI名字以及其它属性
JDBC Tx 数据源
Services -> JDBC -> Tx Data Sources
JDBC Tx数据源的Pool名字、JNDI名字以及其它属性
JMS Connection Factories
Services -> JMS -> Connection Factories
JMS connection factories的JNDI名字,客户号,缺省优先级及其它属性
JMS 模板
Services -> JMS -> Templates
JMS模板的有关数据
JMS收信方关键字
Services -> JMS -> Desination Keys
JMS收信方的关键字类型与其它属性
JMS 存储器
Services -> JMS -> Stores
JMS存储器的描述信息
JMS服务器
Services -> JMS -> Servers
JMS服务器的有关信息
活动JMS服务
Services -> JMS -> Servers -> Monitor all Active JMS Services
连接的上限及其它活动JMS服务的有关数据
活动JMS服务器
Services -> JMS ->Servers -> Monitor all instances
有关会话与消息挂起的统计信息以及其它数据。
活动JMS 收信方
Services -> JMS ->Servers -> Monitor all Active JMS Destinations
活动JMS收信方的使用者、所收到的消息及其它属性。
活动JMS会话池
Services -> JMS -> Servers -> Monitor all Active JMS Session Pools
使用者数量的上限及其它属性
JMS 收信方
Services -> JMS -> jmsservername -> Destinations
JNDI名字及其它数据
JMS会话池
Services -> JMS -> jmsservername -> Session Pools
JMS会话池的肯定应答模式、会话的最大量及其它属性
XML 注册记录
Services -> XML -> XML Registries
DocumentBuilderFactories以及SAXPArserFactories列表
WLEC 连接池
Services -> WLEC -> WLEC Connection Pools
WebLogic企业域的名字、失败转移地址、最大最小容量以及其它信息
Jolt连接池
Services -> Jolt
Jolt连接池的失败转移地址、连接池的最大与最小容量以及其它信息
活动Jolt连接池
Service-> Jolt->joltconnectionpoolname->Monitoring -> Monitor all active pools
Jolt连接池的最大实例数、当前连接及其它实例数据
虚拟主机
ServiceVirtual Hosts
虚拟主机的格式、日志文件及其它属性
邮件会话
Service -> Mail
邮件会话的名字与虚拟列表
文件T3
Services -> File T3
文件的名字与路径
用户
Securit ->Users
用户列表
Security ->Groups
组列表
访问控制列表
Security->ACLs
ACL列表
缓存域
Security->Caching Realms
缓存域列表
Security->Realms
对域的描述
域日志过滤器
Domain Log Filters
Servers on which the filter is registered以及用于过滤消息的属性
本章将介绍以下内容:
ü 日志子系统概述
ü 本地服务器日志文件
ü 消息属性
ü 消息目录
ü 消息的严重级别
ü 浏览日志文件
ü 创建域日志的过滤器
日志消息是管理系统的一个非常有用的工具。通过日志可以发现问题,跟踪错误来源,及时了解系统性能。WebLogic服务器产生的日志消息被保存在两个地方:
ü WebLogic服务器组件子系统产生的消息保存在本地文件中,即该文件位于运行服务器的机器上。如果一台机器上同时运行了若干个WebLogic服务器,那么每一个服务器都有自己的日志文件。分发在WebLogic服务器上的应用可以将它所产生的消息保存在服务器的本地日志文件中。
ü 此外,一部分本地日志消息还被存储在由管理服务器维护的域日志文件中。
嵌在WebLogic服务器的JMX(Java管理扩展)程序,会把WebLogic服务器产生的日志消息传送到管理服务器。如果本地WebLogic服务器主动将消息发送到其它实体,用JMX的术语来说,这就是“布告”。
在WebLogic服务器启动时,管理控制台的消息处理器会向该服务器注册以便接收来自该服务器的日志消息。在注册过程中,本地服务器将使用一个可以被用户修改的过滤器选择要转发到管理服务器的日志消息。这些消息被收集在域日志中。
一般而言,只有最重要的日志消息(由“Message severity”决定)才会从本地服务器转发到域日志中。域日志提供了域的一个总体视图,同时又能使你聚焦在那些最为关键的消息上。
你可以通过管理控制台来更改日志消息过滤器,这一过程是动态的,即不需要重启本地服务器,更新即可生效。(参见“创建日志过滤器”中的内容)。
开发人员可以用定制的消息处理器向WebLogic服务器注册并通过JMX布告接收日志消息
老版本的WebLogic服务器在日志文件达到最大长度时会创建一个新的日志文件。这种自动创建日志文件的机制被称为日志回旋(Log Rotation)。在6.0版本中,你可以选择日志回旋的方式:(1)基于时间,(2)基于文件大小。在管理控制台中按以下步骤配置日志回旋:
1.在管理控制台的左窗格,选择一个服务器。
2.在右窗格,选择Configuration->Logging。
3.在Rotation Type字段中,选择时间或长度。
如果该字段的值为none,那么日志不进行回旋。如果选择基于时间的日志回旋,那么新日志文件按指定的时间间隔(由File Time Span指定)被创建。
缺省情况下,本地服务器的日志文件名为servername.log(其中servername指服务器的名字)。日志文件位于WebLogic服务器所在的目录。日志文件的名字可以在Configuration->Logging页面中设置。
File Count字段的值指定回旋日志文件的最大数量。如果日志文件的数量数达到这个数目,那么每次发生日志文件回旋时,最老的日志文件将被删除。日志文件按照创建的先后被命名为filenamennnnn,其中filename是在configuratin->Logging页面中设置的日志文件名。例如:webLogic.log00007
本地服务器日志包含所有被记录的日志消息。
在配置本地服务器日志时,你可以指定哪些日志消息将被输出到标准输出中。通过指定所要记录的日志的最低严重性级别,可以把一些不太严重的消息排除在外。也可以设置是否将调试消息输出到标准输出。
在WebLogic服务器启动时,如果还未完成初始化就发生了错误,那么这些错误将输出到标准输出以及名字为weblogic-startup.log的本地服务器启动日志文件中。如果启动成功,那么启动日志文件的最后一条消息将指向记录普通日志信息的本地服务器日志文件。
使用WebLogic日志功能的Java客户端也会产生日志消息,但是这些客户端所产生的消息不能被转发到域日志中。要配置客户端的日志属性,可以在命令行中使用以下参数:
-Dweblogic.log.attribute=value
其中,attribute可以是任何LogMBean属性。缺省情况下,客户端的日志消息不会记录在日志文件中,而是输出到标准输出。
在日志文件中,每条消息的第一行都以####开始,紧跟其后是消息头。消息头说明了消息的运行时上下文。每个消息属性都包含在尖括号对中。
如果是异常消息,那么消息体后面是异常的堆栈形迹。如果消息不在事务上下文中,属性Transaction ID的尖括号对仍然会有,只是没有事务号而已。
以下是一个日志消息的例子:
####<Jun 2, 2000 10:23:02 AM PDT> <Info> <SSL> <bigbox> <myServer>
<SSLListenThread> <harry> <> <004500> <Using exportable strength SSL>
这个例子包含以下消息属性:ThreadID, UserID, Transaction ID, Message ID, 以及Message Text。
注意:客户端记录的日志消息没有Server Name与Thread ID属性
日志文件中的每条消息都定义了下表所列出的属性。通过消息号,消息还可以关联Message Catalog的其它属性 (例如,Probable Cause与Recommended Action)。
属性
描述
时间戳
消息产生的日期与时间,格式因地区设置而异。
严重级别
指消息事件的重要性或严重程度见“消息的严重级别”
子系统
该属性指出了该消息是WebLogic服务器的哪个子系统产生的。例如:EJB, RMI与JMS
服务器名
机器名
线程号
事务号
这四个属性定义了该消息的来源。如果消息位于事务上下文中,那么就具有事务号属性。注意:Java客户端所产生的日志消息没有服务器名以及线程号属性。
用户号
在产生该消息时,安全上下文中的用户
消息号
唯一性的六位标识符。小于499999的消息号保留给WebLogic服务器系统消息
消息文字
对于WebLogic服务器消息,该属性的内容是由系统消息目录所定义的短描述(见“消息目录”),对于其它消息,该属性的内容由程序开发者指定。
除了保存在日志消息中的那些信息外,WebLogic服务器系统组件(或者是用户编写的代码)产生的消息另外还包含了其它预定义的信息,这些信息被保存在消息目录中。下表描述了保存在消息目录中的属性:
属性
描述
消息体
对消息产生时的环境的简短的文字性描述。与消息的消息文字属性相同
消息细节
对消息产生时的环境的更详尽的描述
可能原因
解释记录该消息的原因。以及产生该消息的可能原因
建议
管理员对解决或避免引起该消息的问题建议
你可以在管理控制台的日志视图查看上述属性
WebLogic服务器消息具有一个称作“严重级别”的属性。该属性反映了消息所报告的事件或系统状态的重要性或者可能对用户的潜在冲击
下表描述了被定义的各类严重性。下表按严重程度列出了各种严重情形,其中Energency的严重级别最高
严重级别
缺省情况下是否发送到域日志
含义
报告
用于报告普通操作
警告
发生了可疑的操作或配置,但对普通操作没有影响
错误
发生了用户操作。系统或应用不需要中断服务就可以处理该错误
注意
发生了可疑的错误或配置,可能不会影响服务器的正常操作
严重
发生了系统或服务错误。系统可以恢复但是可能会造成瞬间或永久性的服务性能降低
警报
某个服务不能使用,系统的其它部分还能正常工作。不可能进行自动恢复;管理员需要立即采取措施解决问题
危急
服务器不能使用,该严重级别表明了发生服务器系统失败,情况十分危机。
严重级别为调试的消息是一个特殊的情形。调试消息不会发送到域日志。调试消息包含了有关应用与服务器的详细信息。这些消息只有在应用是以调试模式运行时才会产生。
管理控制台提供了以下日志查看功能:
ü 查看任一服务器的本地日志文件
ü 查看域日志文件
无论是查看域日志还是本地服务器日志,你都可以
ü 按照产生时间、用户号、子系统、消息严重级别或者是消息的短描述选择所要查看的消息
ü 查看被记录的消息,或对日志消息进行查找
ü 选择要显示在管理控制台的消息属性及其排列顺序
你可以从管理控制台访问域日志与本地服务器日志。有关这些任务的具体操作参见控制台的在线帮助:
ü 查看域日志(viewing the Domain Log)
ü 查看本地服务器日志(Viewing the Local Server Log)
缺省情况下,被WebLogic服务器转发到域日志的日志消息是本地消息日志的子集。过滤器决定了要把哪些日志消息发送到域日志,你可以对过滤器进行配置,这样就可以根据消息的严重级别、产生消息的子系统或者是用户号来选择要转发的日志消息。(调试消息属特殊情况,它不能被转发到域日志)你可以创建一个过滤器也可以更改域日志过滤器表中的过滤器。从Domain Monitoring标签页可以访问域日志过滤器表。有关创建域日志的详细内容参见管理控制台的在线帮助。
本章将介绍如何在WebLogic服务器上分发应用程序以及应用组件,内容如下
ü 分发格式
ü 通过管理控制台分发应用
ü 动态分发
J2EE应用可以以企业应用包(Enterprise Application Archive,简称为EAR)的形式或者是展开目录格式的形式部署到WebLogic服务器上。
如果以展开格式的形式部署J2EE应用,那么我们建议你在此格式中只包含Web应用组件。如果是以包的形式部署J2EE应用,我们建议所有应用组件都采用包的形式。
一个组件可以被打包在EJB包(JAR)文件中,也可以在Web应用包(Web Application Archive,简称为WAR)文件中,或者是资源适配器包(Resource Adaptor Archive,简称为RAR)文件中。
有关Web应用的更多信息,请参见“配置WebLogic服务器Web组件”中的内容。
有关资源适配器组件的信息,可以参见“管理WebLogic J2EE连接器构架”中的内容。
你可以通过管理控制台安装或分发应用或应用的组件(例如EJB JAR文件)并且将应用组件的实例分发到目标WebLogic服务器上。步骤如下:
步骤1:配置与分发应用
1.选择Deployments->Application调用applications表格.
2.点击Configure a new Application链接调用Create a new Application页面。
3.填写以下字段
应用的名字
应用(EAR文件)所在的路径
应用是否已经被部署到WebLogic服务器上了
4.点Create按钮创建一个新的条目
当你用管理控制台分发应用(或应用组件)时,管理服务器会在为应用在域配置文件中(/config/domain_name/config.xml)加上与被分发的应用或应用组件加上一个相应的条目。同时,管理服务器还会创建用以配置及监控该应用或应用组件的JMX Management Beans(MBeans)。
步骤2:分发应用组件
可以在WebLogic服务器中分发以下三种类型的应用组件:Web应用组件,EJBs与资源连接器组件。
注意:如果把应用组件(如EJBs或WAR文件)分发到集群中的受管服务器上,那么必须保证集群中的所有成员服务器都部署了同样的应用组件。为此,你可以选择集群作为分发的目标。
部署Web应用组件
以下是将Web应用部署到受管服务器上的步骤:
1.选择Deployments->Web Applications调用Web Applications表
2.点击Configure a new Web Application链接调用Create a new WebApp Component配置页面
3.填写以下字段:
组件的配置条目的名字
指向该组件的统一资源标识符(URI)
WAR文件的路径,或者是展开格式的Web应用所在目录的路径
选择分发顺序。该顺序指定了服务器启动时Web应用的分发顺序。(见分发顺序)
指出应用是否已经被部署了
4.点击Create按钮创建一个新的组件条目
5.选择组件的部署目标是受管服务器还是集群。点Targets->Servers将组件部署到目标服务器上。点Targets->Clusters将组件部署到目标集群上。
6.Available字段列出了受管服务器(如果选择Targets->Clusters则列出集群)。使用箭头按钮将它们移到Chosen字段,这样便选择了要部署该Web组件的目标服务器。点Apply使你的设置生效。
有关配置Web应用的更多信息,请参见“配置WebLogic服务器的Web组件”中的内容。
部署EJB组件
以下是把EJBs部署到受管服务器上的步骤:
1.选择Deployments->EJB调用EJB Deployment表格
2.点击Configure a new EJB链接调用Create a new EJB Component页面
3.填写以下字段:
该组件的配置条目的名字
指向该组件的统一资源标识符(Uniform Resource Identifier,简称为URI)
JAR文件的路径
选择分发顺序。它决定了服务器启动时,该EJB被分发的顺序。
指出是否已经部署了该组件
4.点Create创建一个新的组件条目
5.选择组件的部署目标是受管服务器还是集群。点Targets->Servers将组件部署到目标服务器上。点Targets->Clusters将组件部署到目标集群上。
6.Available字段列出了受管服务器(如果选择Targets->Clusters则列出集群)。使用箭头按钮将它们移到Chosen字段,这样便选择了要部署该EJB的目标服务器。点Apply使你的设置生效。
部署资源适配器组件
以下是把EJBs部署到受管服务器上的步骤:
1.选择Deployments->Connectors调用EJB Deployment表格
2.点击Configure a new Connector Component链接调用Create a new Connector Component页面
3.填写以下字段:
该组件的配置条目的名字
指向该组件的统一资源标识符(Uniform Resource Identifier,简称为URI)
RAR文件的路径
选择分发顺序。它决定了服务器启动时,该资源连接器被分发的顺序。(见“分发顺序”中的内容)
指出是否已经部署了该组件
4.点Create创建一个新的组件条目
5.选择组件的部署目标是受管服务器还是集群。点Targets->Servers将组件部署到目标服务器上。点Targets->Clusters将组件部署到目标集群上。
6.Available字段列出了受管服务器(如果选择Targets->Clusters则列出集群)。使用箭头按钮将它们移到Chosen字段,这样便选择了要部署该EJB的目标服务器。点Apply使你的设置生效。
有关资源连接器的更多信息,可以参考“管理WebLogic J2EE连接器构架”中的内容。
如果一个应用或应用组件(如一个EAR或WAR文件,或EJB JAR文件)被部署到一个特定的WebLogic服务器上,那么管理控制台将调用一个文件分发servlet将文件复制到目标服务器的/config/domain_name/applications/ wlnotdelete目录中。
对于同一类型的组件,例如EJBs,你可以指定WebLogic服务器在启动时部署这些组件的顺序。你在部署组件时,为Deployment Order字段所指定的整数是该组件相对于其它同类型组件的优先级,例如各EJB的部署顺序。分发顺序为0的组件是同类型组件中最先部署的组件。
但是,各种组件类型之间的分发顺序不受用户所定义的同类型分发顺序所影响。WebLogic在启动时,按以下顺序启动各类型的组件:
1.JDBC连接池
2.JDBC多池
3.JDBC数据源
4.JDBC Tx数据源
5.JMS连接工厂
6.JMS服务器
7.连接器组件
8.EJB组件
9.Web应用组件
自动分发(Auto-deployment)能够快速地在管理服务器上部署应用。但我们只建议你在开发环境中使用这种分发方式来测试应用。不建议你在生产环境或受管服务器上使用使用自动分发。
如果目标WebLogic服务器域启用了自动分发,当应用被复制到WebLogic管理服务器的/config/domain_name/applications目录时,管理服务器会自动检测到新应用并自动部署该应用(如果管理服务器是运行着的)。(子目录domain_name是启动管理服务器时所使用的WebLogic服务器域。 )如果在你把应用复制到/applications目录时,WebLogic服务器没有被运行,那么当WebLogic服务器启动时将分发这个应用。
缺省情况下,自动部署是启用的。
自动分发选项是否开启决定了应用的分发有两种方式:
ü 如果启用了自动分发选项,那么在把应用复制到管理服务器的/config/domain_name/applications目录下后,应用会自动分发到管理服务器上。
ü 如果禁用了自动分发选项,你必须在这个应用的Configuration标签页上指明要分发该应用,那么所安装的这个应用才会被分发。
3、将应用组件(或者是Web应用组件与EJB)的实例分发在受管服务器上
当应用被安装到管理服务器上(/config/domain_name/applications目录)之后,就可以将应用的组件分发到WebLogic受管服务器上。
在管理控制台中,打开目标服务器的Deployments->EJB(见图6-3)或Deployments->Web Applications标签页,选择需要分发的应用组件。
或者通过组件的Targets 标签页面来选择要分发应用组件的目标服务器。
图5.1 – 某一服务器的Deployment->EJB标签页
如果要把应用组件(例如EJBs或WAR文件)分发到集群中的受管服务器中,那么就必须保证集群中的所有受管服务器都分发了该应用组件,选择集群作为分发目标就可以确保这一点。
当你将应用拷贝到WebLogic管理服务器的/config/domain_name/applications目录时(子目录domain_name是指要分发应用的WebLogic域的名字),如果目标WebLogic服务器域启用了自动分发并且运行了管理服务器,那么管理服务器将会检测到新应用并自动分发该应用。这种分发应用的方式被称为动态分发。如果在把应用复制到/applications目录下时没有运行WebLogic服务器,那么应用将在WebLogic服务器重新启动时分发。
缺省情况下,自动分发是启用的。如果禁用了自动分发,那么仍然可以通过管理控制台来手工分发应用组件,这种分发应用的方式被称为静态分发。
缺省情况下,自动分发是启用的。
要确定是否启用了自动分发选项,可以进入管理控制台的域应用设置页面(domain_name->Configuration->Applications),在这个页面上可以设置自动分发是否启用以及设置WebLogic服务器检查新应用的时间间隔。缺省情况下,如果启用了自动部署,那么管理服务器每3秒种检查/applications目录的变化。
自动分发的应用或应用组件可以采用展开目录格式或者EAR文件、WAR文件以及JAR文件等格式。
以下是自动分发展开式应用的步骤:
1.展开式应用的目录名应该与应用的上下文路径相同。
2.把应用复制到/config/domain_name/applications子目录下,其中。Domain_name是要部署应用的目标域。如果启用了自动分发,那么该应用被自动部署。
被自动分发的应用或应用组件可以在服务器运行的情况下动态地重新分发。因此可以不需要停止并重启WebLogic管理服务器,就能对应用或应用组件进行更新。如果要动态地重新部署一个应用或应用组件,只需要用更新后的文件覆盖/applications目录下的相应文件。
该功能对于开发人员很有用。开发人员只需要将更新后的文件复制到/applications目录下,服务器就会进行相应的更新。
展开式应用的自动重分发
你可以动态地重新分发分发展开式应用或应用组件。如果所分发的应用是展开格式,那么管理服务器会周期性地检查展开式应用目录中的REDEPLOY文件。如果该文件的时间戳改变了,那么管理服务器会自动地重新分发这个应用。
如果要更新展开式应用目录中的文件,按以下步骤:
1.第一次分发展开式应用时,在该应用所在的目录下创建一个名字为REDEPLOY的空文件
2.用更新后的应用文件覆盖目录下的相应文件。
3.复制完文件后,改变这个目录下的REDEPLOY文件的时间戳
当管理服务器发现该文件的时间戳改变了,它会自动分发展开式应用目录下的内容。
6 配置WebLogic服务器的Web组件
本章将介绍Web组件的配置,主要内容如下:
ü 概述
ü HTTP参数
ü 配置监听端口
ü Web应用
ü 配置虚拟主机
ü WebLogic服务器如何解析HTTP请求
ü 设置HTTP访问日志
ü 防止“POST拒绝服务”攻击
ü 设置WebLogic服务器的HTTP Tunneling
ü 用本地 I/O提供静态文件服务
除了可以部署动态的、基于Java的分布式应用外,WebLogic服务器还是一个具有完整功能的Web服务器,它可以处理高流量的Web站点,提供HTML文件、图像文件、servlets以及JSP等静态页面服务。WebLogic服务器支持HTTP 1.1标准。
HTTP参数
你可以通过管理控制台配置每一个WebLogic服务器实例(或每个虚拟主机)的以下HTTP参数。
ü Default Web Application
缺省应用处理不能被其它Web应用解析的请求。访问缺省应用的URI不需要包含上下文路径(Web应用的上下文通常是Web应用的名字)。
ü Post Timeout Seconds
WebLogic服务器在相邻两次接收HTTP POST数据之间的等待时间,该参数被用来防止采用POST方法使服务器超载的“拒绝服务”攻击。
ü Max Post Time
限制了WebLogic服务器用于接收POST数据的时间
ü MAX Post Size
该参数限制了WebLogic服务器对每个请求所能接收的POST数据量(以字节为单位)。如果超出了该限制,将引发MaxPostSizeExceeded异常
ü Enable Keep Alive
启用或禁用持久的HTTP连接。如果浏览器使用HTTP 1.1协议,那么该参数一般是开启的。
ü Connection timeout
WebLogic服务器在关闭非活动的HTTP连接之前所等待的时间
ü HTTPS Duration
WebLogic服务器在关闭非活动的HTTPS(安全套接层或SSL)连接之前所等待的时间。
ü HTTP Access Logging
你可以禁用或启用HTTP访问日志,并且可以设置访问日志的回旋参数,如日志旋回的方式及时间。详细内容,请参见本章“设置HTTP访问日志”中的内容。
有关设置上述参数的详细信息,请参见以下网页的“虚拟主机”部分:
http://e-docs.bea.com/wls/docs60/ConsoleHelp/virtualhost.html.
你可以指定WebLogic服务器监听HTTP请求的端口。尽管可以指定任何有效的监听端口,但是如果把WebLogic服务器的监听端口设为80,那么当你访问Web应用的资源时,你就可以省略HTTP请求中的端口号。例如,当你使用80端口作为监听端口时,你就可以采用以下形式的URI:
http://hostname/myfile.html而不是
http://hostname:portnumber/myfile.html
普通请求与安全(使用SSL)请求分别使用不同的监听端口。你可以通过管理控制台的Servers节点的Configuration/Gereral标签页定义普通的监听端口,在Configuration/SSL标签页中定义SSL监听端口。
Web应用
HTTP以及Web服务的部署遵照Sun MicroSystems的Servlet2.2标准。该标准定义Web 应用作为组合各种基于Web应用的组件的标准。这些组件可以是JSP页面,HTTP servlets以及诸如HTML页面与图象文件等静态资源。Web应用可以访问外部资源,例如EJBs与JSP标记库。一个服务器可以分发任意多个Web应用。当你从Web应用请求资源时,一般都要在请求的URI中包含该应用的名字。
详细内容,以下页面的Assembling and Configuring Web Applications:
http://e-docs.bea.com/wls/docs61/webapp/index.html.
Web应用与集群
Web应用可以部署到WebLogic服务器组成的集群中。当用户请求Web应用的资源时,那么请求会被引导到集群中的一个服务器上。如果应用使用了会话对象,那么会话应该复制到集群中的所有节点上。有多种方式复制会话。
详细内容,参见以下页面的“Using WebLogic Server Clusters”部分:
http://e-docs.bea.com/wls/docs60/cluster/index.html.
域中的每个服务器或虚拟主机都有一个特殊的Web应用——缺省Web应用。任何不能被其它Web应用所解析的请求将由缺省应用来处理。与一般Web应用不同的是,指向缺省Web应用的URI不需要包含应用的名字。部署在服务器或虚拟主机上的任何Web应用都可以声明为缺省Web应用。(稍后,我们将讨论“部署 Web应用”)。有关虚拟主机的更多信息,请参见本章“配置虚拟主机”中的内容。
如果没有声明缺省的Web应用,那么WebLogic服务器启动时时会自动创建一个缺省Web应用。所创建的缺省Web应用的名字为DefaultWebApp_servername,其中servername是服务器的名字;如果是虚拟主机,那么将被命名为DefaultWebApp_VirtualHostName
如果没有正确分发所声明的缺省Web应用,那么当请求缺省Web应用的资源时,用户将接收到HTTP 400错误消息,同时日志中将记录这一错误消息。
例如,如果有一个名字为shopping的Web应用,那么应该用以下URI访问该Web应用的cart.jsp页面:
http://host:port/shopping/cart.jsp
但是,如果你将该Web应用声明为缺省Web应用,那么你就可以用以下URI访问cart.jsp:
http://host:port/cart.jsp
(其中host是运行WebLogic服务器的机器的主机名,port是WebLogic服务器监听请求的端口)。
以下是用管理控制台为服务器或虚拟主机指定缺省Web应用的步骤:
1.在左窗格中,点击Web Appliction节点
2.选择你的Web应用
3.在右窗格中,点Targets标签页
4.选择Servers标签页,将服务器(或虚拟主机)移到chosen列。 (选择Clusters标签页面,将集群移动到Chosen列中,可以使集群中所有的服务器作为设置的目标)。
5.点击Apply按钮
6.点击左窗格中的Servers(或虚拟主机)节点
7.选择合适的服务器或虚拟主机
8.点击右窗格中的General标签页面。
9.选择HTTP标签页面
10.从Default Web Application下拉列表中选择一个Web应用
11.点击Apply按钮
12.如果要为多个受管服务器指定缺省Web应用,那么对每个受管服务器重复上述步骤
通过配置虚拟主机,你可以定义服务器或集群所响应的主机名。虚拟主机就是通过DNS将一个WebLogic服务器或集群的IP地址映射到一个或多个主机名并且指定用哪个虚拟主机来服务哪个Web应用。如果在集群中使用虚拟主机,那么负载平衡能够以最有效的方式使用硬件系统,即使是某一DNS主机名比其它DNS主机名处理更多的请求。
例如,你可以指定一个名字为books的Web应用响应对虚拟主机名www.books.com的请求,这些请求将由WebLogic服务器A,B,C来处理,而一个名字为cars的Web应用将响应对虚拟主机名www.autos.com的请求,这些请求将由WebLogic服务器D,E来处理。你可以根据应用以及Web服务器的需要来组合使用虚拟主机、WebLogic服务器、集群与Web应用。
每个虚拟主机都可以定义自己的HTTP参数与HTTP访问日志。为虚拟主机设置的这些参数会覆盖服务器的这些参相应数设置。你可以指定任意数量的虚拟主机。
当把服务器或集群作为虚拟主机的目标时,虚拟主机被激活。以集群为目标的虚拟主机会应用于集群中的所有服务器。
每个虚拟主机都可以指定自己的缺省Web应用。一个虚拟主机的缺省应用将处理所有不能为该虚拟主机的其它Web应用所解析的请求。
与其它Web应用不同的是,在访问缺省应用的资源时,URI不需要包含缺省应用的名字(即上下文路径)。
例如,有一个www.mystore.com虚拟主机名,该虚拟主机名以WebLogic服务器为目标。如果你在该服务器上部署了一个名为shopping的web应用,那么你可以要以下URI访问该应用的cart.jsp页面:
http://www.mystore.com/shopping/cart.jsp
如果,shopping应用被声明为虚拟主机www.mystore.com的缺省Web应用,那么访问cart.jsp页面的URI是:
http://www.mystore.com/cart.jsp
详细信息,请参见本章的“WebLogic服务器如何解析HTTP请求”
可以通过管理控制台来定义虚拟主机:
1.创建一个新的虚拟主机
a.在左窗格中点击Services节点,该节点被展开并显示一组服务。
b.点击Virtural Host节点。如果定义了虚拟主机,那么该节点将被展开并显示所有的虚拟主机
c.在右窗格中点击Create a New Virtual Host
d.输入新建虚拟主机的名字
e.输入虚拟主机名,一行一个。只有那些与虚拟主机名匹配的请求才会被虚拟主机的目标WebLogic服务器或WebLogic集群处理。
f.(可选步骤)为虚拟主机分配一个缺省Web应用。
g.点击Create按钮
2.定义日志与HTTP参数
a.(可选步骤)点击Logging标签页,填写HTTP访问日志属性(详细内容,请参见本章“设置HTTP访问日志”中的内容)
b.选择HTTP标签页,填写HTTP参数
3.定义虚拟主机的目标服务器
a.选择Targets标签页
b.选择Servers标签页,将列出可用服务器列表
c.选择available列中的一个服务器并用右箭头按钮将该服务器移到Chosen列中。
4.定义虚拟主机的目标集群(可选步骤)。在此之前先要定义一个WebLogic集群。详细内容,参见以下页面的“Using WebLogic Server Clusters”部分:
http://e-docs.bea.com/wls/docs60/cluster/index.html.
a.选择Targets标签页
b.选择Clusters标签页,该标签页上显示了一组可用的服务器集群。
c.选择Available列中的一个集群,用右箭头按钮将该服务器移到Chosen列中。集群中的所有服务器都将成为该虚拟主机的目标。
5.将Web应用部署到虚拟主机上。
a.点击左窗格中的Web Applications节点
b.选择要部署到虚拟主机上的Web应用
c.选择右窗格中的Targets标签页面
d.选择Virtual Hosts标签页面
e.选择Available列中的虚拟主机并用右箭头按钮将它移动到Chosen列中。
WebLogic服务器如何解析HTTP请求
当WebLogic服务器接到一个HTTP请求时,它对URL的各个部分进行解析,然后根据解析所得到的信息来确定由哪个Web应用或服务器处理该请求。以下的例子说明了WebLogic服务器如何解析对Web应用、虚拟主机、servlets、JSP以及静态页面的请求及响应。
注意:如果Web应用包含在企业应用中,那么Web应用可以有另一个名字,可以用这个名字可解析对Web应用的请求。有关这方面的更多内容,请参见以下页面的“Deploying WebApplications as Part of an Enterprise Application”:
http://e-docs.bea.com/wls/docs61/webapp/deployment.html#war-ear.
下表给出了一些示例URL以及WebLogic服务器所服务的文件。Index Directories Checked列指的是Index Directories属性,该属性决定当请求没有指定文件时是否要提供目录列表服务。该属性在管理控制台的Web Application节点的Configuration/Files标签页设置。
表8-1 WebLogic应用解析URL示例
URL
Index Directories Checked
响应的文件
http://host:port/apples
No
Apples web应用所定义的欢迎页面
http://host:port/apples
Yes
列出apples web应用的最顶层目录的子目录
http://host:port/oranges/naval
无关要紧
oranges应用中映射<url-pattern>为/naval的servlet。有关servlet映射还有一些需考虑的东西。详细内容,请参见以下页面的“Configuring Servlets”:
http://host:port/naval
无关要紧
Oranges应用中映射到<url-pattern>为/naval的servlet并且oranges是缺省的Web应用。详细内容,参见以下页面的“Configuring servlets”。
http://e-docs.bea.com/wls/docs61/webapp/components.html#configuring-servlets
http://host:port/apples/pie.jsp
无关要紧
Apples应用顶层目录中的pie.jsp文件
http://host:port
Yes
缺省Web应用顶层目录的目录列表
http://host:port
No
缺省Web应用的欢迎页面
http://host:port/apples/myfile.html
无关要紧
Apples应用顶层目录中的myfile.html文件
http://host:port/myfile.html
无关要紧
缺省Web应用顶层目录的myfile.html文件
http://host:port/apples/images/red.gif
无关要紧
Apples应用顶层目录的images子目录中的red.gif
http://host:port/myFile.html
apples应用没有定义myFile.html并且也没有定义缺省servlet
无关要紧
Error 404
详细内容,参见8-20页的“定制HTTP 错误响应”
http://www.fruit.com/
No
http://www.fruit.com/
Yes
http://www.fruit.com/oranges/myfile.html
无关要紧
详细内容参见以下页面的“Configuring Welcome Pages”
http://e-docs.bea.com/wls/docs61/webapp/components.html#welcom-pages
设置HTTP访问日志
WebLogic服务器可以把所有关于HTTP事务的日志保存到一个文本文件,该文本文件可以采用普通日志格式(common log format)或扩展日志格式(extended log format),缺省格式为遵循标准约定的普通日志格式。扩展日志格式可以定制要记录的信息。每个服务器或虚拟主机都可以定义自己的HTTP访问日志属性。
日志的回旋可以基于文件大小也可以基于时间间隔。当满足其中的一个条件时,当前访问日志被关闭,新的访问日志被创建。如果没有配置日志回旋,那么HTTP访问日志会无限增长。访问日志名中的数字部分随日志回旋而增长。每个Web服务器都定义了自己的HTTP访问日志。
有关使用管理控台设置HTTP访问日志的内容可以参见以下页面中的信息:
http://e-docs.bea.com/wls/docs60/ConsoleHelp/virtualhost.html:
1.如果设置了虚拟主机:
a.在左窗格中选择Services节点
b.选择Virtual hosts节点,该节点被展开并显示了一组虚拟主机
c.选择一个虚拟主机
如果还没有设置虚拟主机
a.选择左窗格中的Servers节点,该节点被展开并显示了一组服务器。
b.选择一个服务器
c.选择Logging标签页
d.选择HTTP标签页
2.选中Enable Logging复选框
3.输入日志文件的名字
4.从Format下拉列表中选择Common或Extended
5.选择Rotation类型:By Size类型还是By Date类型的
By Size:当日志文件的大小大于Log Buffer Size参数的值时发生日志回旋。
By Date:当时间间隔大于Rotation Period参数的数值时发生日志回旋。
6.如果日志回旋的类型为By Size,那么将the Max Log File Size K Bytes字段设置为所期望的日志文件的最大容量(以字节数为单位)
7.设置Flush Every参数。该参数设置了每隔多长时间访问日志进行日志条目的写操作。.
8.如果日志回旋的类型设置为By Date,那么把Rotate time参数设为日志文件进行第一次回旋的时间(该参数只对By Date类型的日志回旋有效),日期的格式使用java.text.SimpleDateFormat,即MM-dd-yyyy-k:mm:ss。详细内容请参见java.text.SimpleDateFormat类的javadocs文档。
9.如果日志回旋的类型设为By Date,那么将Rotation Period设置为日志回旋的时间间隔。
HTTP日志信息的缺省格式为普通日志格式普通日志格式由http://www.w3.org/Daemon/User/Config/Logging.html#common-logfile-format定义,它遵循以下模式:
host RFC931 auth_user [day/month/year:hour:minute:second UTC_offset] "request" status bytes
其中:
host
指远程客户端的DNS名字或IP地址
RFC931
任何由INDENTD 返回给客户端的消息;WebLogic服务器不支持用户标识
auth_user
如果远程客户发送了一个用于身份验证的用户号,那么就是指用户名,否则就为“-”
Day/month/year:hour:minute:second UTC_offset
日期、月份、年以及时间(使用24-小时格式)以及当地时间与GMT时间的时间差,它们被括在方括号中
“request
远程HTTP请求的第一行,被双引号括起
status
服务器返回的HTTP状态代码,如果服务器没有返回HTTP状态代码,则为“-”。
bytes
HTTP头中记录的内容长度(不包括HTTP头本身)。如果不可知,则为“-”
WebLogic服务器支持由W3C定义的1.0版本的扩展日志文件格式,这是一个正在形成的标准。目前WebLogic服务器遵循该标准的草案规范(www.w3.org/TR/WD-logfile.html)。请参见以下页面的“W3C Technical Reports and Publications”:
www.w3.org/pub/www/TR
当所记录的HTTP日志采用扩展日志格式时,可以指定记录哪些类型的信息以及按什么顺序排列信息。在管理控制台的HTTP标签页中,将Format属性设置为Extended,这样便启用了扩展日志格式。(请参见本章“用管理控制台设置HTTP访问日志”中的步骤4)。
日志文件所要记录的信息类型通过日志文件中的指令来指定。每条指令必须新起一行,以#符号开始指令。如果系统还没有日志文件,那么会新建一个包含缺省指令的日志文件。如果在服务器启动时,已经有日志文件了,那么这个日志文件头中必须包含合法指令。
创建Fields指令
日志文件的第一行必须是表明日志文件格式的指令,紧跟其后是Fields指令:
#Version: 1.0
#Fields: XXXX XXXX XXXX …
其中,每个XXXX描述要记录的数据字段。字段类型要么由简单的标识符来指定,要么采用W3C规范中的前缀标识符格式。以下是一个例子:
#Fields: date time cx-method cs-url
该指令要求服务器要记录每次HTTP访问的以下信息:事务的日期与时间,客户端请求方式以及请求的URI。字段之间用空格阁开。每条日志记录都新起一行。
注意:#Fields指令后面必须有一新行,这样第一条日志信息才不会与#Fields指令在同一行上
字段标识符
以下是所支持的标识符,这些标识符不需要前缀。
date
事务完成的日期,类型为W3C规范定义的<date>类型
time
事务完成的时间,类型为W3C规范定义的<time>类型
time-taken
事务花费的时间(以秒为单位),类型为W3C规范定义的<fixed>类型
bytes
传送的字节数,类型为<integer>
注意,WebLogic服务器不支持W3C规范中定义的cached字段。
以下是需要前缀的标识符,这些标识符不能单独使用。
与IP地址相关的字段:
这些字段给出了请求客户端或应答服务器的IP地址与监听端口。字段的类型为W3C规范定义的<address>类型。所支持的前缀有:
c-ip
客户端的IP地址
s-ip
服务器的IP地址
与DNS相关的字段
这些字段给出了客户端与服务器的域名。字段的类型为W3C规范定义的<name>类型。所支持的前缀有:
c-dns
客户端的域名
s-dns
被请求服务器的域名
sc-status
响应的状态代码。例如(404)表示状态为“文件没有找到”。该字段的类型为W3C规范所定义的<integer>类型
sc-comment
状态码的注释。例如,“文件没有找到”。该字段的类型为<type>类型
cs-method
请求方式,例如GET或POST。该字段的类型为W3C规范所定义的<name>类型
cs-uri
请求的完整URI。该字段的类型为W3C规范所定义的<uri>类型
cs-uri-stem
URI的主干部分(省略了查询)。该字段的类型为W3C规范所定义的<uri>类型
cs-uri-query
URI的查询部分。该字段的类型为W3C规范所定义的<uri>类型
定制字段标识符
扩展日志格式的HTTP访问日志可以使用用户定义的字段。要创建一个定制字段,你必须在扩展日志格式(即ELF格式)的日志文件中使用Fields指令来标识定制的字段,同时定义与该字段匹配的Java类以生成所需要的输出。你可以为每个字段创建一个Java类,也可以用一个Java类匹配多个字段。本文提供了这种Java类的代码示例。详细内容,请参见7-18页的“Java类与创建定制ELF字段”。
要创建一个定制字段,
1. 在Fields指令中包含该字段的名字,形式如下:
x-myCustomField
其中myCustomField为类的完整名字
有关Fields指令的详细信息,请参见7-12页的“创建Fields指令”
2. 创建一个与定制字段同名的Java类(例如myCustomField)。这个类定义了要记录自定制字段中的信息。该Java类必须实现以下接口:
weblogic.servlet.logging.CustomELFLogger
这个Java类必须实现logField()方法,该方法使用HttpAccountingInfo对象与FormatStringBuffer对象作为参数。
用HttpAccountingInfo对象访问HTTP请求与响应的数据,这些数据将被输出到所定制的字段中。它提供了许多Get方法来访问这些信息。Get方法的完整列表请参见7-15页的“HttpAcountingInfo对象的Get方法”。
用FormatStringBuffer类创建定制字段的内容。他提供了创建定制字段的合适的方法。有关这些方法的详细内容,请参见FomatStringBuffer类的Java文档。(见以下网页:http://e-docs.bea.com/wls/docs60/javadocs/weblogic/servlet/logging/FormatStringBuffer.html)
3. 编译Java类,并把它加到启动WebLogic服务器的CLASSPATH语句中。如果用脚本启动WebLogic服务器,那么要修改脚本中的CLASSPATH语句
注意:不要将这个类放在扩展格式的Web应用或企业应用中。
4. 对WebLogic服务器进行配置,让它使用扩展日志格式。详细内容,参见7-11页“使用扩展日志格式”。
注意:在编写定制字段的Java类时,务必不要在这个类中执行降低系统性能的代码(例如,访问DBMS,以及执行繁重的I/O或网络调用。)记住,对于每一个HTTP请求,系统都会相应地创建一条HTTP访问日志记录。
注意:如果要输出到多个字段,那么这些字段之间应该用制表符分隔开。有关字段分隔以及扩展日志格式的更多内容,请参见以下网页的“扩展日志格式”部分
HttpAccountingInfo对象的Get方法
以下方法返回与HTTP请求相关的数据。这些方法与javax.servlet.ServletRequest, javax.servlet.http.Http.ServletRequest以及javax.servlet.http.HttpServletResponse等类的方法相似。
这些方法在Java接口中定义,下表列出了这些方法以及从什么地方可以找到有关这些方法的信息。
表7-1 HttpAccountingInfo的Getter方法
HttpAccountingInfo
参考以下类中的相应方法
Object getAttribute
javax.servlet.ServletRequest
Enumeration getAttributeName()
javax.servlet.ServletRequest
String getCharacterEncoding()
javax.servlet.ServletRequest
Int getResponseContentLength()
Javax.servlet.servletResponse.setContentLength()
该方法返回响应的长度,该长度由setContentLenth()方法设置
String getResponseContentLength()
javax.servlet.ServletRequest
Strng getContentType();
javax.servlet.ServletRequest
Locale getLocale();
javax.servlet.ServletRequest
Enumeration getLocales();
javax.servlet.ServletRequest
String getParameter(String name);
javax.servlet.ServletRequest
Enumeration getParameterNames();
javax.servlet.ServletRequest
String[] getParameterValues(String name);
javax.servlet.ServletRequest
String getProtocol();
javax.servlet.ServletRequest
String getRemoteAddr();
javax.servlet.ServletRequest
String getRemoteHost();
javax.servlet.ServletRequest
String getScheme();
javax.servlet.ServletRequest
String getServerName();
javax.servlet.ServletRequest
int getServerPort();
javax.servlet.ServletRequest
boolean isSecure();
javax.servlet.ServletRequest
String getAuthType();
javax.servlet.http.Http.ServletRequest
HttpAccountingInfo Methods
javax.servlet.http.Http.ServletRequest
String getContextPath();
javax.servlet.http.Http.ServletRequest
Cookie[] getCookies();
javax.servlet.http.Http.ServletRequest
long getDateHeader(String name);
javax.servlet.http.Http.ServletRequest
String getHeader(String name);
javax.servlet.http.Http.ServletRequest
Enumeration getHeaderNames();
javax.servlet.http.Http.ServletRequest
Enumeration getHeaders(String name);
javax.servlet.http.Http.ServletRequest
int getIntHeader(String name);
javax.servlet.http.Http.ServletRequest
String getMethod();
javax.servlet.http.Http.ServletRequest
String getPathInfo();
javax.servlet.http.Http.ServletRequest
String getPathTranslated();
javax.servlet.http.Http.ServletRequest
String getQueryString();
javax.servlet.http.Http.ServletRequest
String getRemoteUser();
javax.servlet.http.Http.ServletRequest
String getRequestURI();
javax.servlet.http.Http.ServletRequest
String getRequestedSessionId();
javax.servlet.http.Http.ServletRequest
String getServletPath();
javax.servlet.http.Http.ServletRequest
Principal getUserPrincipal();
javax.servlet.http.Http.ServletRequest
boolean isRequestedSessionIdFromCookie();
javax.servlet.http.Http.ServletRequest
boolean isRequestedSessionIdFromURL();
javax.servlet.http.Http.ServletRequest
boolean isRequestedSessionIdFromUrl();
javax.servlet.http.Http.ServletRequest
boolean isRequestedSessionIdValid();
javax.servlet.http.Http.ServletRequest
String getFirstLine();
javax.servlet.http.Http.ServletRequest
HttpAccountingInfo Methods
返回HTTP请求的第一行。例如GET/index.html HTTP/1.0
long getInvokeTime();
返回查找servlet的service()方法所花费的方法,这个servlet的作用是把数据回写到客户端
int getResponseStatusCode();
javax.servlet.http.HttpServletResponse
String getResponseHeader(String name);
javax.servlet.http.HttpServletResponse
列表7-1 用于创建ELF字段的Java类
import weblogic.servlet.logging.CustomELFLogger;
import weblogic.servlet.logging.FormatStringBuffer;
import weblogic.servlet.logging.HttpAccountingInfo;
/* This example outputs the User-Agent field into a
custom field called MyCustomField
*/
public class MyCustomField implements CustomELFLogger{
public void logField(HttpAccountingInfo metrics,
FormatStringBuffer buff) {
buff.appendValueOrDash(metrics.getHeader("User-Agent"));
}
}
防止“POST拒绝服务”攻击
拒绝服务工具是通过假冒请求造成服务器过载的一种恶意攻击。这种攻击类型通常采用HTTP的POST方法发送大量数据。在WebLogic服务器中,你可以通过设置三个属性来防止这种攻击。这三个属性可以在管理控制台的Servers或virtural hosts节点下设置。如果为一个虚拟主机定义了这些属性,那么所设置的值将覆盖Servers节点中的设置
PostTimeoutSecs
通过这个属性,你可以限制WebLogic服务器接收HTTP POST数据段之间的等待时间
MaxPostTimeSecs
限制WebLogic服务器用于接收POST数据的时间。如果触发了该限制,那么将会引发PostTimeoutException异常并将以下信息发送到服务器日志中。
Post time exceeded MaxPostTimeSecs
MaxPostSize
限制每个请求中的POST数据量。当请求中的POST数据量超过该限制时,将引发MaxPostSizeExceeded异常并将以下信息发送到服务器日志中。
POST size exceeded the parameter MaxPostSize
同时向客户端返回HTTP 413错误代码
如果客户端使用了监听模式,那么它将得到这个信息。如果没有采用监听模式,则断开连接。
设置WebLogic服务器的HTTP隧道
如果你只能采用HTTP协议连接WebLogic服务器与Java客户端,那么可以用HTTP隧道功能来模拟有状态的套接字连接。HTTP隧道通常被用来穿越安全防火墙的HTTP端口。HTTP是一种无状态协议,因此WebLogic服务器所提供的隧道功能使得连接看上去象是一个T3连接。但比起标准的套接字连接,这会造成性能的下降。
配置HTTP隧道连接
当使用HTTP协议时,客户端只能发送请求,然后接收服务器的响应。服务器不能主动地与客户端通信,并且HTTP协议是无状态的,这就意味这服务器与客户端之间不可能发生连续的双向连接。
WebLogic HTTP隧道通过HTTP协议模拟T3Connection协议,从而克服上述限制。有两个属性与隧道连接的性能有关。这两个属性可以通过管理控制台的Servers部分的Configuration标签页的Tunning标签页来设置。大多数情况下,你应该使用这两个属性的缺省值,除非你对在处理连接问题方面非常有经验。服务器通过这些属性来决定一个客户端连接是否有效以及客户端是否是活动的。
Enable Tunneling
启用或禁用HTTP隧道。缺省情况下,HTTP隧道是被禁用的
Tunneling Ping
在建立HTTP隧道连接时,客户端会自动地向服务器发一个请求,使服务器可以主动响应客户端。客户端可以在请求中包含指示,无论客户端应用是否需要与服务器进行通信。如果服务器没有在由该属性所设置的时间内响应客户端,那么它就会主动地给客户端一个响应,客户端接收该响应并立即发送另一个请求。
缺省值为45秒;有效的范围为20至900秒
Tunning Timeout
在继上次客户端请求之后,如果在该属性所指定的时间内,客户端还没有发出新的请求,那么服务器就认为客户端已经死了并结束该HTTP隧道连接。在服务器响应客户端请求时,它会按该属性所指定的时间间隔来检测继上一次请求后所过去的时间。
缺省值为40秒,有效范围为10至900秒
建立客户端与WebLogic服务器之间的连接
如果客户端要与WebLogic服务器建立HTTP隧道连接,那么只需要URL中指定HTTP协议。例如:
Hashtable env = new Hashtable();
env.put(Context.PROVIDER_URL, "http://wlhost:80");
Context ctx = new InitialContext(env);
客户端会在HTTP协议后面附加一个特殊标签,这样WebLogic服务器就知道这是一个隧道连接而不是普通的HTTP请求,这些都是自动的,你的应用不需要做额外的工作。
客户端必须在URL中指定端口号,即便是使用80端口。尽管WebLogic服务器可以在任何端口监听HTTP请求,但一般使用80端口,因为通常只有该端口才能穿越防火墙。
你可以在管理控制台的Servers节点的Network标签页配置WebLogic服务器的简听端口。
用本地I/O提供静态文件服务(只适用于Windows
当你在Windows NT/2000上运行WebLogic服务器,可以让WebLogic服务器通过本地操作系统调用Tramsmitfile来代替Java方法服务静态页面,例如HTML文件,文本文件以及图象文件。在服务较大的静态页面时,使用本地I/O会提高服务器的性能。
要使用本地I/O,那么需要在Web应用的分发描述符web.xml中增加两个I/O参数。参数weblogic.http.nativeIOEnabled应该设置为TRUE以启用本地I/O文件服务。参数weblogic.http.minimumNativeFileSize指定要用本地I/O进行服务的文件的最小长度。如果一个文件的长度大于该参数所设置的值,那么就会用本地I/O来服务该文件。如果没有指定该参数的值,那么默认为400个字节。
一般而言,对于较大的文件,使用本地I/O会提高服务的效率。但随着运行服务器的计算机的负载的增大,这种效益会消失。因此需要通过实验来寻求weblogic.http.minimumNativeFilesize参数的最佳值。
下面的例子演示了如何在web.xml中添加本地I/O的相关参数的配置。这些设置必须放在<distributable>元素与<servlet>元素之间。
<context-param>
<param-name>weblogic.http.nativeIOEnabled</param-name>
<param-value>TRUE</param-value>
</context-param>
<context-param>
<param-name>weblogic.http.minimumNativeFileSize</param-name>
<param-value>500</param-value>
</context-param>
有关编写分发描述符的详细内容,请参见以下页面的“Writing Web Application Deployment Descriptors”:
7 代理对另一个HTTP服务器的请求
如果把WebLogic服务器作为主Web服务器,通过配置,可以让它把请求委托给另一个HTTP服务器处理,例如Netscape Enterprise服务器,Apache或者是 Microsoft Internet Information 服务器。任何被代理的请求都会重定向到一个指定的URL。被代理的Web服务器可以位于其它机器上。我们一般基于请求的URL来决定把请求委托给哪个服务器处理。
HttpProxyServlet将HTTP请求重定向到代理URL上,然后通过WebLogic服务器将响应返回给浏览器。要使用代理功能,必须在Web应用中配置该功能,并把它分发到一个重定向请求的WebLogic服务器中。
要设置从服务器的代理:
1.在Web应用分发描述符(见“使用ProxyServet的web.xml示例”)注册代理servlet。Web应用必须是响应请求的服务器的缺省应用。代理servlet的类名为weblogic.t3.srvr.HttpProxyServlet。详细信息可以参见以下资源中的“分发与配置Web应用”
http://e-docs.bea.com/wls/docs60/adminguide/config_web_app.html
2. 定义ProxyServlet的初始化参数。<param-name>为redirectURL, <param-value>为从服务器的URL。
3. 在Web应用分发描述符web.xml中使用<servlet-mapping>元素把ProxyServlet映射到<url-pattern>。特别地,把文件扩展名映射到ProxyServlet,例如*.jsp,或*.html。
如果<url-pattern>设置为“/”,那么任何不能被WebLogic服务器所解析的请求都会委托给远程服务器处理。如果你只希望代理特定扩展名的文件,那么应该映射以下扩展:*.jsp, .html以及*.htm。
代理Servlet的分发描述符示例
以下是使用Proxy servlet的Web应用分发描述符示例。
表8-4 使用ProxyServlet的web.xml示例
<!-- DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 1.2//EN"
"file:///weblogic/dev/myserver/servlet2.2/WEB-INF/web-jar.dtd"
-->
<web-app>
<servlet>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>weblogic.t3.srvr.ProxyServlet</servlet-class>
<init-param>
<param-name>redirectURL</param-name>
<param-value>
tehama1:7736:7737|tehama2:7736:7737|tehama:7736:7737
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
8 代理对WebLogic集群的请求
本章将介绍如何代理对WebLogic集群的请求,主要有以下内容:
ü 概述
ü 设置HttpClusterServlet
ü HttpClusterServlet示例
HttpClusterServlet负责把请求从一个WebLogic服务器代理到WebLogic集群中的服务器成员,同时HttpClusterServlet还为代理的HTTP请求提供负载平衡与失败转移。有关servlets与WEbLogic集群的更多内容,可以参见以下页面的“理解HTTP会话状态复制”部分:
http://e-docs.bea.com/wls/docs60/cluster/servlet.html.
以下是使用HttpClusterServlet所需要的配置:
1.在WebLogic服务器的管理控制台配置一个代理HTTP请求的WebLogic服务器实例,该服务器实例负责把请求重定向到WebLogic服务器。
a. 新建一个域。
b. 在新建的域中新建一个应用
c. 在新建的域中新建一个服务器,或使用缺省的服务器
d. 把在步骤b中创建的Web应用设置为新建服务器的缺省Web应用。
2.在步骤1所创建的Web应用的分发描述符中注册HttpClusterServlet。(见本章的“HttpServlet的分发描述符示例”)。该Web应用必须是响应请求的服务器的缺省Web应用。相关信息参见第8章的“指定一个缺省Web应用”。
HttpClusterServlet的类名是weblogic.servlet.internal.HttpClusterServlet。HttpClusterServlet的分发描述符示例见下文
3. 定义HttpClusterServlet的初始化参数。初始化参数用web.xml的<init-param>元素定义。defaultServers参数是必须定义的,其它参数视需要而定。有关HttpClusterServlet的参数可以参见本章表10-1 “HttpClusterServlet Parameters”中的内容。
4.把代理servlet映射到一个<url-pattern>。特别地,映射要代理的文件扩展名,例如“*.jsp”或*.html。
如果<url-pattern>设置为“/”,那么任何不能被WebLogic服务器所解析的请求都将交给远程服务器处理。如果你只希望代理特定扩展名的文件,那么应该映射以下扩展名文件:*.jsp, .html以及*.htm。
设置URL模式的另一方式是:首先映射一个url模式,例如/foo,然后把pathTrim参数设置为foo,该设置的作用是把foo从被代理的URL中删除。
表10-1 HttpClusterServlet的参数
<param-name>
<param-value>
缺省值
defaultServlets
(必须设置该参数)一组代理请求的服务器,采用以下形式:hostname1:HTTP port1:HTTPS port1 | hostname2:HTTP port2:HTTPS port2
如果secureProxy参数设置为ON(见下面的secureProxy参数),那么HTTPS端口将在运行HttpClusterServlet的WebLogic服务器与集群的成员服务器之间使用SSL协议。即使把secureProxy参数设为OFF,你也必须定义HTTPS端口
None
secureProxy
ON/OFF。如果设置为ON,那么HTTPClusterServlet与WebLogic服务器集群成员之间的连接将使用SSL协议
OFF
DebugConfigInfo
ON/OFF。如果设置为on,那么在请求中加上一个请求参数?_WebLogicBridgeConfig就可以查询HttoClusterServlet的调试信息。因为安全性的原因,建议在生产环境中把该参数设置为OFF。
OFF
connectionTimeout
套接字等待读入数据的时间,单位为微秒。超时会引发java.io.InterruptedIOException异常
0(即没有限制)
numOfRetries
HttpClusterServlet重试一个失败连接的次数
5
PathTrim
从原始URL的开头部分裁减的字符串
None
TrimExt
从原始URL的最后裁减掉的文件扩展名
None
pathPrepend
在PathTrim被裁减后,在请求被代理到一个WebLogic服务器集群成员之前,附加在原始URL之前的字符串。
None
HttpClusterServlet的分发描述符示例
以下是使用HttpClusterServlet的Web应用分发描述符示例:
列表10-1使用HttpClusterServlet的web.xml示例
<!-- DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 1.2//EN"
"file:///weblogic/dev/myserver/servlet2.2/WEB-INF/web-jar.dtd"
-->
<web-app>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>
weblogic.servlet.internal.HttpClusterServlet
</servlet-class>
<init-param>
<param-name>defaultServers</param-name>
<param-value>
myserver1:7736:7737|myserver2:7736:7737|myserver:7736:7737
</param-value>
</init-param>
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
9
配置Web应用的安全性
通过验证,限制对Web应用中某些资源的访问或者在servlet中使用安全调用,你可以保护你的应用。WebLogic定义了几种安全域,有关安全域的讨论见以下资源的“安全基础知识”:
http://e-docs.bea.com/wls/docs60/security/concepts.html
注意,安全域为多个虚拟主机所共享。
设置对Web应用的授权
Web应用的验证在web.xml的<longin-config>元素中定义。用该元素定义安全域。安全域包含用户证书、验证方式与需要进行验证的资源所在的位置。有关设置安全域的更多内容,请参见以下资源中的“安全基础”部分。
要设置Web应用的安全验证:
1.选择一种验证方式。有以下几种选项
BASIC
BASIC验证通过Web浏览器显示一个用户名/口令对话框。然后依照安全域对用户名及口令进行验证。
FORM
基于表单的验证需要一个包含用户名与口令的HTML表单。该表单所返回的字段必须是j_username与j_password,表单的action属性必须设为j_security_check,以下是一个用FORM授权的HTML示例:
<form method=”POST” action=”j_security_check”>
<input type=”text” name=”j_username”>
<input type=”password” name=”j_password”>
</form>
产生该表单的资源可能是HTML页面、JSP或者是servlet。你必须用<form-login-page>元素定义产生该表单的资源。
会话对象在返回登录页面时创建。因此在验证通过后,从被服务的页面中调用session.isNew()方法,该方法将返回FALSE。
CLIENT-CERT
使用客户端验证对请求进行验证。详细内容,参见以下资源的“配置SSL协议”部分:
http://e-docs.bea.com/wls/docs60/adminguide/cnfgsec.html#cnfgsec015
2.如果选用FORM验证,那么还需要定义生成HTML页面的资源所在的位置与响应验证失败的资源。有关配置表单验证的详细信息,请参见以下网页中的“<login-config>”的内容:
http://e-docs.bea.com/wls/docs60/programming/web_xml.html#login –config.
3.定义用来验证的域。如果没有指定域,将使用缺省的WebLogic FileRealm域。详细内容,参见以下网页发“<login-config>”部分:
http://e-docs.bea.com/wls/docs60/programming/web_xml.html#login-config
多Web应用、Cookies与身份验证
缺省情况下,所有Web应用都使用一样的cookie名字(JSESSIONID)。无论你用何种验证方式,所有使用相同cookie名的应用对授权都采用单点签到的方式。即一旦一个用户验证通过后,那么该验证对于其它使用同样cookie名字的Web应用的请求也是有效的,用户不会被要求重新验证。
如果要对一个应用单独授权,那么应该为这个应用指定一个不同的cookie名字。该名字由weblogic.xml的<session-descriptor>元素中的CookieName参数定义。详细内容,参见以下网页“session-descriptor元素”中的内容:
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#session-descriptor.
限制对Web应用资源的访问
你可以对Web应用中的资源(servlets, JSPs, 或者HTML页面)应用安全约束。要使用安全约束,你应该:
1、定义一个角色,该角色对应于安全域里的一到多个准则(principal)。角色在web.xml中的<security-role>元素中定义(见http://e-docs.bea.com/wls/docs60/programming/)。然后在weblolgic.xml中,用<security-role-assignment>元素把这些角色映射到域中的准则(见http://e-docs.bea.com/wls/docs60 /programming/weblogic_xml.html#security-role-assignment) web_xml.html#security-role
2.用<web-resource-collection>元素的<url-pattern>子元素定义Web应用中需要实施安全限制的资源。<url-pattern>可以是一个目录、文件名或者是一个<servlet-mapping>
要对整个应用实施安全限制,那么应该用以下<url-pattern>:
<url-pattern>/*</url-pattern>
3、使用<web-resource-collection>元素中的<http-method>子元素定义需要应用安全限制的HTTP方法(Get或Post)
4、使用<user-data-constraint>元素中的<transport-guarantee>子元素设置客户端与服务器端的通信是否使用SSL。
列表8-6 资源限制示例
web.xml entries:
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureOrdersEast</web-resource-name>
<description>
Security constraint for resources in the orders/east directory
</description>
<url-pattern>/orders/east/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description>constraint for east coast sales</description>
<role-name>east</role-name>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<description>SSL not required</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
...
<security-role>
<description>east coast sales</description>
<role-name>east</role-name>
</security-role>
<security-role>
<description>managers</description>
<role-name>manager</role-name>
</security-role>
weblogic.xml中的条目:
<security-role-assignment>
<role-name>east</role-name>
<principal-name>tom</principal-name>
<principal-name>jane</principal-name>
<principal-name>javier</principal-name>
<principal-name>maria</principal-name>
</security-role-assignment>
<security-role-assignment>
<role-name> manager </role-name>
<principal-name>peter</principal-name>
<principal-name>georgia</principal-name>
</security-role-assignment>
在servlet中使用用户和角色
你可以在servlet中用javax.servlet.http.HttpServletRequest.isUserInRole (String role)方法访问用户与角色。字符串role对应于Web应用分发描述符的<security-role-ref>元素的<role-name>子元素所定义的名字,<secutity-role-ref>元素位于<servlet>声明中。<role-link>元素映射到Web应用分发描述符的<security-role>元素所定义的<role-name>元素。
例如
列表 8-7 安全角色映射示例
Servlet代码:
isUserInRole("manager");
web.xml 中的条目:
<servlet>
. . .
<role-name>manager</role-name>
<role-link>mgr</role-link>
...
</servlet>
<security-role>
<role-name>mgb</role-name>
</security-role>
weblogic.xml中的条目:
<security-role-assignment>
<role-name>mgr</role-name>
<principal-name>al</principal-name>
<principal-name>george</principal-name>
<principal-name>ralph</principal-name>
</security-role-ref>
配置Web应用的外部资源
在访问外部资源时,例如通过JNDI从Web应用访问数据源,你可以让代码中使用的JNDI名字映射到绑定在JNDI树中的实际名字。这种映射是通过web.xml以及Weblogic.xml分发描述符来实现的。这样当这些资源发生变化时,就不需要更新应用程序的代码。你应该为这些资源提供一个由代码使用的名字,即资源在JNDI树中所绑定的名字,以及资源的Java类型;并且还应该指出是否应该由servlet以编程的方式来处理该资源的安全性还是通过HTTP请求加密来保证资源的安全。
要配置外部资源:
1.在分发描述符中定义资源的名字、Java类型以及安全验证类型。有关编写分发描述符的内容请参见以下网页中的“引用外部资源”部分:
http://e-docs.bea.com/wls/docs60/programming/webappdeployment.html#resource-ref.
2.将资源名映射到JNDI名。有关编写分发描述符的内容请参见以下网页的“Map external resources ”部分:
http://e-docs.bea.com/wls/docs60/programming/webappdeployment.html#resource-description.
下面的例子假定你定义了一个名字为accountDataSource的资源。详细内容,参见以下页面的“JDBC数据源”部分:
http://e-docs.bea.com/wls/docs60/ConsoleHelp/jdbcdatasource.html.
表8-8 Example of Using a DataSource
Servlet代码:
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("myDataSource");
web.xml 中的设置:
<resource-ref>
...
<res-ref-name>myDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
...
</resource-ref>
weblogic.xml中的设置:
<resource-description>
<res-ref-name>myDataSource</res-ref-name>
<jndi-name>accountDataSource</jndi-name>
</resource-description>
在Web应用中引用EJBs
当Web应用要引用EJB时,你应该在web应用分发描述符中为所引用EJB的定义一个名字,这个名字应该与webloigc-ejb-jar.xml文件中所定义的EJB的JNDI名相同,然后你就可以在程序中用所定义的名字来引用EJB。
要在Web应用中使用EJB,需要进行以下配置:
1.在Web应用分发描述符的<ejb-ref>元素中定义EJB的引用名(程序用这个名字来查找EJB)、Java类名以及home接口与remote接口的类名。有关如何编写分发描述符的<ejb-ref>条目,参见以下页面的“引用EJB资源”部分:
http://e-docs.bea.com/wls/docs60/programming/webappdeployment.html#ejb-ref.
2.将在weblogic.xml的<ejb-reference-description>元素中所定义的引用名映射到weblogic-ejb-jar.xml文件中定义的JNDI名。关于如何编写分发描述符中的条目,你可以参见以下页面的“Map EJB resources”部分:
http://e-docs.bea.com/wls/docs60/programming/webappdeployment.html#ejb-reference-description.
如果Web应用是企业应用的组成部分,你可以用<ejb-link>元素通过名称来引用.ear文件中的EJB。
WebLogic服务器被缺省设置为处理会话跟踪,因此要使用会话跟踪,不需要配置任何以下将要提到的属性。但WebLogic服务器如何管理会话对于提升应用的性能非常关键。性能提升与以下因素有关:
ü 预期会有多少个用户访问一个servlet。
ü 会有多少个并发用户访问一个servlet。
ü 每个会话持续的时间
ü 为每个用户存储的数据量
HTTP会话属性
你可以在特定于WebLogic的分发描述符中配置HTTP会话属性,配置WebLogic服务器的会话跟踪。详细内容,参见以下网页的“定义会话参数”部分:
会话属性的完整列表可在以下网页获得:
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#session-descriptor.
你可以指定HTTP会话隔多长时间失效。在会话失效后,所有保存在会话中的数据都将丢失。以下两种方式可以配置会话失效的时间间隔。
TimeoutSecs属性在特定于WebLogic的分发描述符——weblogic.xml文件的<session-descriptor>元素中定义,属性值以秒为单位。你可以参见以下资源:
http://e-docs.bea.com/wls/ docs60/programming/ weblogic_xml.html #session-descriptor
也可以用Web应用分发描述符——web.xml文件中的<session-timeout>元素定义会话超时,以分钟为单位。该属性会覆盖在weblogic.xml的<session-descriptor>元素中所设置的<TimeoutSecs>属性。有关在web.xml中定义超时属性的内容可以参见以下资源:
http://e-docs.bea.com/wls/docs60/programming/web_xml.html#web_xml_session-config)
如果客户的浏览器支持cookies,那么WebLogic服务器将用Cookies来管理会话。
缺省情况下,WebLogic服务器把跟踪会话的cookies设置为暂态的,即浏览器关闭时,cookie丢失并且会话的生命期便被看作是结束了。这种行为是使用会话的精髓所在,推荐你以这种方式使用会话。
通过定义weblogic.xml中的有关属性,你可以配置cookies的方方面面。有关会话与cookie的属性的完整列表可以参见:
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#session-descriptor
有关如何编辑weblogic.xml的内容,可以参见以下资源的“定义会话参数”部分:
对于长效的客户端数据,应用程序应该通过HTTP servlet API创建自己的cookies,并且尽量让这个cookie与HTTP会话存在什么关联。应用程序可能要用cookie来实现用户从某一机器上的自动登录功能,这种情况下就需要创建一个长效的cookie。记住,该cookie只能由该用户的机器发送。如果该用户要从多台机器上访问,那么必须把数据保存在服务器端。
注意,浏览器cookie的生命周期与会话的生命周期没有直接的联系。如果,一个cookie先于它所关联的会话失效,那么该会话就成了孤儿。如果会话先于它所关联的cookie失效,那么servlet就找不到会话。此时,当getSession()方法被调用时,会创建一个新的会话。
持久会话有以下四种实现:
ü 内存(单服务器,不存在复制)
ü 文件系统
ü JDBC
ü 内存复制(在集群中的服务器之间)
这里只介绍前面三种实现;有关内存复制的方式参见以下资源的“HTTP会话状态的复制”部分:
http://e-docs.bea.com/wls/docs60/cluster/servlet.html
要通过文件系统、JDBC或者内存复制来实现持久会话,那么需要设置包括PersistentStoreType在内的一些属性。每种实现方式都有一组自己的属性。
在weblogic.xml中,以下属性设置保存在内存中的会话数量。只有在使用持久会话时,这些属性才是有效的
CacheSize
该属性限制了缓存在内存中的活动会话的数量。如果可能会有大量并发的活动会话,而又不希望活动会话占用太多的内存使得内存页面交换频繁发生而导致性能问题,那么可以通过这个属性来控制。当缓冲区满了时,最少使用的那些会话将被保存在持久存储设备中,当需要时,会话被自动地装载到缓冲区中。如果不使用持久会话,那么该属性被忽略,并且不限制内存中的会话数量。缺省情况下,缓存会话的数量为1024个,最小为16个,最大为Integer.MAX_Value个。一个空会话所使用的字节数少于100个字节,但随着数据的加入,它所使用的内存数量也虽之增加
SwapIntervalSecs
当内存中会话的数量达到cacheEntries界限时,服务器每隔多长时间把新近最少使用的会话保存到持久存储器中。
该属性缺省为10秒,最小为1秒,最大为604800秒(一个星期)。
InvalidationIntervalSecs
该属性设置了WebLogic服务器检查超时与失效会话并删除这些会话以释放内存空间的时间间隔。该属性值应该大于<session-timeout>元素中设置的值。该参数可以用来对WebLogic服务器的性能进行优化。
最小设置为1秒一次,最大设置为一星期一次(604800秒),缺省为60秒。
<session-timeout>在web.xml的<session-config>元素中设置,详细内容见以下资源:
http://e-docs.bea.com/wls/docs60/programming/web_xml.html#web_xml_session-config
如果要用基于内存的、单服务器的、非复制的方式来实现持久会话,那么应该把PersistentStoreType属性设置为memory。对于这种实现方式,所有的会话数据都保存在内存中。因此当你终止并重启WebLogic服务器时,所有的会话数据都将丢失。
要以基于文件存储的方式实现持久会话:
1.将PersistentStoreType属性设置为file
2.设置存储会话的目录。有关如何设置该目录的详细内容,请参见以下资源中的“PersistentStoreDir”部分:
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#persistentStroeDir
如果没有设置该属性,WebLogic服务器会创建一个临时目录保存会话。
如果在集群中,持久会话采用基于文件存储的实现方式,那么必须明确设置一个能被集群中所有成员访问的共享目录,而且你必须自己创建该目录。
要以基于JDBC的方式实现持久会话:
1.将PersistentStoreType属性设置为jdbc
2. 设置PersistentStorePool属性,该属性被设置为一个在控制台中定义的连接池。通过设置该属性,持久会话将使用JDBC连接池。
所使用的连接池必须是仅被用于JTS驱动器的JDBC连接。也就是说,一个被非JTS驱动器所使用的JDBC连接池不能用于会话的持久化。为保险起见,你应该为持久会话单独创建一个JDBC连接池。不过,持久会话可以与servlet持久会话以及EJB共用一个JDBC连接池,因为后两者都要用到JTS驱动器
有关设置数据库连接池的详细内容请参见以下资源的“管理JDBC连接”部分:
http://e-docs.bea.com/wls/docs60/adminguide/jdbc.html
总结一下:尽管servlet可以用非-JTS连接访问数据库,但是你不能在持久会话中使用该连接。
3.设置连接的ACL。只有那些有权限的用户才能使用该连接。有关设置数据库连接的详细内容,请参见以下资源的“管理数据库连接”部分:
http://e-docs.bea.com/wls/docs60/adminguide/jdbc.html.
4.创建一个名字为wl_servlet_sessions的数据库表。基于JDBC实现的持久会话要用到这个表。数据库连接池应该具有该表的读/写权限。下表列出了wl_servlet_sessions表的字段及其类型。
表8-4 wl_servlet_sessions
列名
类型
Wl_id
长度不超过100的可变字符串型。例如Oracle的VARCHAR2(100)。主键必须设置为wl_id + wl_context_path
Wl_context_path
长度不超过100的可变字符串型。例如Oracle的VARCHAR2(100)。该列是主键的组成部分
Wl_is_new
单字符型。例如,Oracle的 CHAR(1)
Wl_create_time
长度为20的数值型。例如,Oracle的NUMBER(20)
Wl_is_valid
单字符型。例如,Oracle的CHAR(1)
Wl_session_values
Large binary column。例如,Oracle的Long RAW类型
Wl_access_time
长度为20的数值型。例如,Oracle的NUMBER(20)
Wl_max_inactive_interval
整数型。例如Oracle的Integer类型。该列指的是两次客户端请求的最大时间间隔(单位为秒),超过该时间间隔会话就变为无效。如果该列的值为负数,表明会话永远不过期。
如果使用Oracle数据库管理系统,那么可以用以下SQL语句创建wl_servlet_session表。
create table wl_servlet_sessions
( wl_id VARCHAR2(100) NOT NULL,
wl_context_path VARCHAR2(100) NOT NULL,
wl_is_new CHAR(1),
wl_create_time NUMBER(20),
wl_is_valid CHAR(1),
wl_session_values LONG RAW,
wl_access_time NUMBER(20),
wl_max_inactive_interval INTEGER,
PRIMARY KEY (wl_id, wl_context_path) );
对上述SQL语句作一些改动,就可以用于其它数据库管理系统上。
注意:JDBCConnectionTimeoutSecs属性设置了JDBC持久会话在连接池中的连接装载数据失败前的最长等待时间。详细内容,参见以下网页:
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#JDBCConnectionTimeoutSecs)
使用URL重写
某些情况下,因为浏览器不支持cookies,从而不能用cookie来跟踪会话。在这种情况下,WebLogic服务器检测到浏览器不支持cookie时,它会自动起用URL重写来进行会话跟踪。URL 重写将会话号编写在页面的超级链接中,你的servlet把这个页面返回到浏览器。当用户点击页面上的链接时,WebLogic服务器从URL地址中抽取出会话号并在servlet调用getSession()方法时找到合适的HttpSession。
要在WebLogic中启用URL重写,需要在特定于WebLogic的分发描述符——weblogic.xml中把<session-descriptor>元素的URLRewritingEnabled属性设置为true(该属性的缺省值为true)。有关URLRewritingEnabled属性的信息,请参见以下网页中的内容:
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#URLRewritingEnabled
URL重写的编码指南
以下是在使用URL重写时如何在代码中处理URL的指导性规则:
ü 不要将URL直接输出到输出流中,就象下面这样:
out.println("<a href=/"/myshop/catalog.jsp/">catalog</a>");
而是应该使用HTTPServletResponse.encodeURL()方法。例如:
out.println("<a href=/"”+ response.encodeURL(“myshop/catalog.jsp”)+ “/">catalog</a>");
encodeURL()方法会确定是否要重写URL,如果需要重写,该方法会在URL中加上会话号。会话号附加在URL后并且以分号开头
ü 除了作为响应返回到Weblogic的URL外,还要对需要redirect的URL重编码。例如 :
if (session.isNew())
response.sendRedirect(response.encodeRedirectUrl(welcomeURL));
对于新建的会话,即使浏览器支持cookies,WebLogic服务器也会使用URL重写,因为服务器在第一次访问一个会话时,不能区分浏览器是否支持cookies。
ü 通过检测HttpServletRequest.isRequestedSessionIdFromCookie()方法返回的值,Servlet可以确定所会话号是否是来自于cookie。应用程序可以对此作出合适的响应,或者只是使用WebLogic服务器的URL重写。
URL重写与无线访问协议(WAP)
如果要编写WAP应用,那么就必须使用URL重写,因为WAP协议不支持cookies。而且某些WAP设备把URL的长度限制在128个字符(包括参数在内),从而限制了URL重写所能传送的数据量。要使参数能有更多的空间,你可以设置IDLength属性来限制WebLogic服务器随机产生的会话号的长度。有关该属性的详细内容,请参见以下网页中的内容
http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#IDLength
对于一个使用Post方法的表单,你可以设置处理该表单数据的字符集。通过在处理表单数据的URL中加上特定的“信号”字符(在 <form>标签的action属性中指定),应用程序就知道如何处理使用了特殊字符集的表单数据并且会将这些字符映射到Web应用分发描述符-web.xml中指定的编码方式。通常POST数据被看作是ASCII字符。如果要处理非ASCII码的POST数据,应该使用以下步骤:
1.在Web应用分发描述符(web.xml)的<distributable>元素与<servlet>元素之间增加<content-param>元素。在这个元素中,<param-name>中的内容是类名weblogic.httpd.inputCharse,后跟句点号与信号字符传。<param-value>中的内容是HTTP字符集的名字。在下面的这个例子中,字符串/rus/jo*映射到windows-1251字符集。
<context-param>
<param-name>weblogic.httpd.inputCharset./rus/jo*</param-name>
<param-value>windows-1251</param-value>
</context-param>
2.在需要发送数据的表单中使用信号字符串。例如:
<form action="http://some.host.com/myWebApp/rus/jo/index.html">
...
</form>
信号字符串应该在Web应用名(也被称为上下文路径,上面的例子中为myWebApp)与URL的其它部分之间。
有关Web应用分发描述符的详细内容,请参见以下网页的“上下文参数”部分:
本章将介绍如何配置Apache-WebLogic Server插件。主要有以下内容:
ü 概述
ü 平台支持
ü 安装库
ü 配置httpd.conf文件
ü Apache-WebLogic Server插件的配置参数
ü 使用SSL
ü 与SSL-Apache配置有关的问题
ü httpd.conf文件示例
ü 分发Apache-WebLogic Server插件
本章描述如何安装与配置Apache-Weblogic Server插件。该插件可以把Weblogic服务器的HTTP功能平滑地集成到Apache服务器中。因为可以透明地访问Weblogic Server的servlet引擎,从而增强了原有Apache服务器的功能。
插件用于这样一种环境中:Apache服务器提供静态页面的服务,而把文档树中的另一部分转交给工作在另一个进程也可能是在另一个主机中的Weblogic服务器。对于终端用户即浏览器而言,转交给webLogic服务器的HTTP请求是来自相同的源;后端的WebLogic Server是不可见的。因为WebLogic服务器的客户-服务器协议的HTTP-隧道部件可以在插件中运行,因此插件可以访问包括HTTP servlets在内的所有WebLogic Server服务。
Apache-WebLogic Server插件在Aparhe服务器中作为一个Apache模块运行。Apache Server在启动时会装载Apache模块,然后把HTTP请求交给被装载的Apache模块来处理。Apache模块类似于HTTP(Java) servlets,只是Apache模块是与平台相关的。Apache插件已经过测试,并且可以与Apache Server1.3.9一同使用。
Linux,Solaris与HPUX11等平台都支持Apache-WebLogic Server插件。该插件可以与Apache Server 1.3.9以及Apache Server 1.3.12一起使用。
在Solaris、Linux以及HPUX11平台上,Apache插件是一个共享对象(.so)。这些文件位于weblogic/lib目录中。
在Solaris上,Apache插件由weblogic/lib/solaris目录中的以下共享对象文件组成:
mod_wl.so
mod_wl_ssl.so
mod_wl_ssl_raven.so
在Linux上,Apache插件由weblogic/lib/linux目录中的以下共享对象文件组成:
mod_wl.so
mod_wl_ssl.so
mod_wl_ssl_raven.so
在HPUX11上,Apache插件由weblogic/lib/hpux11目录中的以下共享对象文件组成:
mod_wl.so
mod_wl_ssl.so
mod_wl.so是标准Apache(没有EAPI)共享对象。Mod_wl_ssl.so用于Apache+SSL/EAPI安装(Stronghole, modssl等)。Mod_wl_ssl_raven.so用在Apache+Raven安装。此时,需要mod_wl_ssl_raven.so,因为Raven使用了frontpage的补丁,使之与mod_wl_ssl.so不兼容。
上述二进制文件通过了C2Net的Stronghold/3.0 (Apache/1.3.12)以及Covalen的Raven/1.4.3 (Apache/1.3.12)认证。
安装后的Apache插件是一个Apache DSO(动态共享对象)。Apache对DSO的支持依赖于一个名为mod_so.c的模块,你必须在装载mod_wl.so之前先启用该模块。如果你用所提供的脚本在Solaris上安装Apache,那么mod_so.c已经启用。要确定是否启用了mod_so.c,运行以下命令:
APACHE_HOME/conf/http –l
该命令列出所有已启用的模块,如果其中包含了mod_so.c,那么安照本节末列出的六个步骤来完成Apache插件的安装。如果该命令没有列出mod-so.c,那么请按照相关说明用以下参数手工配置Apache:
./configure –prefix=<destination directory>
--enable-module=so
--enable-rule=SHARED_CORE
然后,根据Apache安装指南安装该产品。
安装完Apache并启用了mod_so.c后,你可以用一个名为apxs(Apache eXtenSion)的支持程序来安装Apache插件,该程序会在Apache源文件树之外构建DSO,并在httpd.conf文件中加入这样一个条目:addModule mod_so.c。以下是安装Apache_Weblogic Server插件的步骤:
1.进入weblogic/lib/PLATFORM目录,用以下命令激活weblogic_module:
APACHE_HOME/bin/apxs –i –a –n weblogic mod_wl.so
注意这是一个perl脚本,因此在运行该脚本前,先要安装Perl:
perl APACHE_HOME/bin/apxs –i –a –n weblogic mod_wl.so
2.该命令将把mod-wl.so文件复制到APACHE_HOME/libexec目录,并在httpd.conf文件的weblogic_module块添加了两条语句,同时激活了该模块。验证APACHE_HOME/conf/httpd.conf文件是否加入了以下行:
LoadModule weblogic_module
AddModule mod_weblogic.c
3.用以下命令验证APACHE_HOME/conf/httpd.conf 文件的语法是否正确:
APACHE——HOME/bin/apachect1 start
4.配置Apache的httpd.conf配置文件(下节将介绍该文件)
5.启动Weblogic服务器
6.启动Apache
安装完库后,需要修改httpd.conf文件来配置Apache插件。修改httpd.conf文件是为了通知Apache web服务器应该以Apache 模块的形式来装载插件的本地库。该配置文件位于APACHE_HOME/conf/目录中(APACHE_HOMES是安装Apache的根目录)。
在httpd.conf文件中添加设置WebLogic Apache插件的以下信息:
ü weblogic_module的配置信息(是由apxs工具所添加的):
LoadModule weblogic_module libexec/mod_wl.so
AddModule mod_weblogic.c(该行不总是被加上)
ü 确定由Apache插件交给WebLogic处理的HTTP请求类型。你可以通过URL或MIME文件扩展类型来转交该类型的请求。下面将讨论这些选项。
通过URL代理
如果用URL的形式转交HTTP请求,那么要使用位置块与SetHandler。SetHandler指出了Weblogic 模块的处理器,如下所示:
<location URL>
setHandler weblogic_handler
</Location>
例如:
<Location /weblogic>
SetHandler weblogic-handler
</Location>
<Location /servletimages>
SetHandler weblogic-handler
</Location>
通过这种方式,某些形式的URL被传递到WebLogic Server中进行语义分析。因为PathTrim设置为从URL中剥离/weblogic,因此转发到WebLogic服务器的URL为:
http://myenterprise.server.com:7001
注意,Apache-WebLogic 服务器插件不能将请求转发到multiple WebLogic Cluseter。但你可以通过多虚拟主机来实现相同的功能。与位置块中所指定的任何URL匹配的请求将被转发到同一集群中。
通过MIME文件类型代理
如果以MIMI文件扩展类型的方式转发HTTP请求,那么应该在IfModule块中加上MatchExpression语句。例如:
<IfModule>
MatchExpression *.jsp
...
</IfModule>
在MatchExpression语句可以包含多个表达式,表达式之间用逗号隔开。例如:
example:
<IfModule>
MatchExpression *.jsp,*.xyz
...
</IfModule>
Apache-WebLogic Server插件的参数
Apache的Weblogic模块识别以下参数。要改变Apache-WebLogic Server插件的属性,你应该把这些参数放在在IfModule中或包含在IfModule中的Weblogic.conf文件。
<IfModule mod_weblogic.c>
# Config file for Weblogic which defines the parameters
Include conf/weblogic.conf
</IfModule>
或者
<IfModule mod_weblogic.c>
# define your parameters here.
</IfModule>
注意一行只能包含一个参数,在参数与值列表之间不能使用‘=’。例如:
PARAM_1 value1
PARAM_2 value2
PARAM_3 value3
WebLogicHost domain name
必须使用该参数(如果是WebLogic集群,则应该用WebLogicCluster参数)。HTTP请求将递交到该WebLogic Server主机。
WebLogicPort port
必须使用该参数(如果是WebLogic集群,则应该使用WebLogicCluster参数)。WebLogic Server主机将在该端口监听WebLogic连接请求。
WebLogicCluster cluster list
必须使用该参数(如果你正在使用一个WebLogic集群),该参数列出了在集群中进行负载平衡的WebLogic服务器。集群列表是由冒号分割的host:port条目的一个列表。例如,
WebLogicCluster myweblogic.com:7001,
yourweblogic.com:6999,theirweblogic.com:6001
应该用该参数取代WebLogicHost与WebLogicPort参数。WebLogic Server将首先查找WebLogicCluster参数,如果没有找到该参数,它将寻找并使用WebLogicHost与WebLogicPort参数。
Aparche插件在所有可利用的集群成员中进行简单的负载平衡计算,然后将包含cookie的HTTP请求递交到集群中创建该cookie的服务器。
PathTrim string
要裁减掉的字符串,缺省为“weblogic”。
PathPrepend string
在去除了PathTrim字符串后并在请求被递交到WebLogic之前,将该字符串加到原始URL的前面。缺省为“”。
ConnectTimeoutSecs seconds
Weblogic模块进行WebLogic Server主机连接尝试的最大时间间隔,缺省为10秒,应该大于ConnectRetrysecs。如果超过了ConnectTimeoutSecs所指定的时间还未能连接上,那么将把HTTP 501/Service Unavailable回复发送到客户端。
ConnectRetrySecs seconds
该参数确定了在进行连接WebLogic Server主机尝试之间模块应该休眠的时间。缺省为2秒,该参数的值应该小于connectTimeoutSecs参数的值。在将HTTP503/Service Unavailable回复返回到客户端之前,Apache插件每ConnectRetruSecs会进行一次连接尝试。如果ConnectRetrySecs参数的值等于ConnectTimeoutSecs参数的值,那么只会进行一次连接尝试。
StatPath boolean
如果该参数设置为真,那么Apache-Weblogic Server插件会在把请求传递到WebLogic服务器之前检查翻译路径是否存在及其可读权限。
缺省值为false。如果文件不存在,那么把HTTP 404/Not found回复返
回到客户端。如果存在该文件,但是它的读权限不是设置为world-readable,那么将返回HTTP 403/Forbidden回复。在这两种情况下,Apache服务器处理这些回复的缺省机制是完成回复中提的内容。如果WebLogic Server servlet引擎以及Apache Server具有相同的文档根的话,将使用这个选项。
ErrorPage URL
你也可以创建自己的错误页面,当Apache服务器无法将请求递交给WebLogic服务器时,将显示这个页面。把URL设置为错误页面所在的位置。
使用SSL协议
使用安全套接层(SSL)协议可以保护WebLogic服务器代理插件以及Apache服务器之间的连接,保护在WebLogic服务器代理插件与Apache服务器之间所传输的数据的机密性与完整性。此外,使用SSL协议还可以让WebLogic服务器代理插件向Apache服务器进行自我身份验证,从而保证信息被传递到一个truested principal。
WebLogic服务器代理插件不会用传输协议(http或https)来确定代理插件与Apache插件之间的连接是否使用了SSL协议保护。要使用SSL协议,必须把使用代理插件的WebLogic服务器配置为使用SSL协议。WebLogic服务器插件代理使用WebLogic服务器监听SSL通信的端口与Apache服务器通信。
在WebLogic服务器代理插件使用SSL协议,必须在httpd.conf文件中指定以下参数:
SecureProxy ON/OFF
如果WebLogic服务器代理插件与Apache之间的通信采用SSL协议,那么这个参数应该设置为ON,该参数缺省为OFF。在定义这个参数之前,不要忘了先定义WebLogic服务器监听SSL请求的端口。
该参数可以在两个层次上定义:在主服务器配置或在虚拟主机配置中定义。如果没有在虚拟主机的配置中指定这个参数,那么它将从主服务器的配置中继承SSL配置。
TrustedCAFile=filename
数字证书所在的文件,该数字证书由可靠的证书管理机构发放并被WebLogic服务器插件使用。如果SecurityProxy参数设置为ON,那么必须设置这个参数。该参数没有缺省值。
文件名必须是数字证书文件的全路径文件名。
RequireSSLHostMatch TRUE/FALSE
该参数决定WebLogic服务器代理插件连接的主机名是否必须与连接代理插件的WebLogic服务器所使用的数字证书中的Subject Distinguished Name字段匹配。参数缺省为TRUE。
SSLHostMatchOID Integer
This parameter is the ASN.1 Object ID (OID) that identifies which field in theSubject Distinguished Name of the peer digital certificate is to be used toperform the host match comparison.缺省为22,对应于Subject Distinguished Name中的CommonName字段。Common OID有以下值:Sur Name—23,Common Name—22,Email—13,Organizational Unit—30,Organization—29,and Locality—26。
与SSL-Apache配置有关的问题
在Apache插件中使用SSL时,应该注意以下两个问题:
ü <Location>标签中必须使用PathTrim。以下的配置是不正确的:
<Location /weblogic>
SetHandler weblogic-handler
</Location>
<IfModule mod_weblogic.c>
WebLogicHost localhost
WebLogicPort 7001
PathTrim /weblogic
</IfModule>
以下才是正确的配置
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
</Location>
ü 指令对apache SSL不起作用。避免在apache SSL中使用以下设置:
<IfModule mod_weblogic.c>
MatchExpression *.jsp
Include weblogic.conf
</IfModule>
Httpd.conf文件示例
下面是一个httpd.conf文件的例子。你可以把它作为模板,然后在此基础上对该文件进行修改以与你的环境与服务器相适应。以#开始的行是注释行。请注意apache不区分大小写,apxs工具会自动添加LoadModule与AddModule行。
####################################################
APACHE-HOME/conf/httpd.conf file
####################################################
LoadModule weblogic_module libexec/mod_wl.so
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<Location /servletimages>
SetHandler weblogic-handler
PathTrim /something
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<IfModule mod_weblogic.c>
MatchExpression *.jsp
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
</IfModule>
# The following line is not always added:
AddModule mod_weblogic.c
当然,也可以不在httpd.conf文件中的location块中定义Weblogic参数,而是在weblogic.conf文件中定义Weblogic参数,该文件由httpd.conf文件的IfModule装载。你可以将以下的示例作为模板,然后针对你所使用的环境与服务器做适当的修改。以 ‘#’开始的行是注释。
使用WebLogic集群的例子
# These parameters are common for all URLs which are
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks. (Except WebLogicHost,
# WebLogicPort, WebLogicCluster, and CookieName.)
<IfModule mod_weblogic.c>
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
MatchExpression *.jsp
</IfModule>
####################################################
不使用WebLogic集群的例子
# These parameters are common for all URLs which are
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks (Except WebLogicHost,
# WebLogicPort, WebLogicCluster, and CookieName.)
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>
NameVirtualHost 172.17.8.1
<VirtualHost goldengate.domain1.com>
WebLogicCluster tehama1:4736,tehama2:4736,tehama:4736
PathTrim /x1
ConnectTimeoutSecs 30
</VirtualHost>
<VirtualHost goldengate.domain2.com>
WeblogicCluster green1:4736,green2:4736,green3:4736
PathTrim /y1
ConnectTimeoutSecs 20
</VirtualHost>
在你安装并配置了Apache-WebLogic Server插件后,按照以步骤进行分发与测试:
1.启动WebLogic服务器
2.如果Apache服务器已经运行,为了使新配置生效,必须重启Apache服务器
3.测试Apache插件:打开浏览器,并将URL设置为Apache服务器+ “/weblogic”,这将使用缺省的WebLogic HTTP servlet,如这个例子:
http://myenterprise.server.com/weblogic/
本章将介绍如何在Microsoft Internet Information Server中安装与配置WebLogic Server插件。通过插件,可以把WebLogic服务器的HTTP功能平滑地集成到Microsoft IIS中。通过WebLogic-to-IIS插件,客户端可以透明地访问WebLogic中的资源,从而增强了IIS的功能。
主要介绍以下内容:
ü 概述
ü 安装库
ü 更新IIS设置使代理可以代理到WebLogic
ü 创建iisproxy.ini文件
ü 使用SSL协议
ü 将servlets从IIS代理到WebLogic Server
ü 安装测试
如果要让IIS处理静态页面而把动态页面如HTTP Servlets与JSP交给WebLogic服务器处理,那么就需要用到IIS插件。WebLogic服务器可能运行在另一个进程,也可能是在另一主机上。但对于终端即浏览器用户而言,转交给WebLogic处理的HTTP请求与由IIS处理的请求都来自相同的服务器。运行在后端的WebLogic服务器是不可见的。WebLogic客户-服务器协议的HTTP隧道功能可以在插件中使用,因而也就提供了对所有WebLogic服务的访问,而不仅仅是HTTP servlets
通过把插件和WebLogic服务器的连接放在一个可重用的连接池中,可以使得WebLogic Server ISAPI插件具有极高的性能。ISAPI插件会自动保持插件与WebLogic服务器连接的活动状态。如果一个连接处于非活动状态的时间超过30秒,那么该连接将自动关闭。
有关兼容WebLogicISAPI插件的平台的最新信息,请见以下网站中的“平台支持”页面:
http://www.weblogic.com/platforms/index.html
在NT上,WebLogic ISAPI是作为一个动态链接库“iisproxy.dll”来分发的。该文件位于weblogic/bin目录下。
要安装ISAPI插件:
1.启动WebLogic服务器
2.启动IIS
3.按照下面的说明修改IIS设置
4.创建初始化文件
5.测试安装
更新IIS设置使请求转给WebLogic
要使用IIS能与webLogic服务器ISAPI一同工作,你需要做以下配置:
1. 将iisproxy.dll文件复制到一个可以被IIS所使用的目录中,而且该目录中应该包含iisporix.ini文件
2. 选择Microsoft IIS启动菜单,启动IIS服务管理器
3. 在服务管理器的左窗格中,选择你的web站点(缺省为“缺省Web站点”)。
4. 选工具栏中的“Play”(编者注:中文版应该为”启动项目”)箭头来启动站点
5. 在左窗格中,用鼠标右键点选你所选择的web站点,打开这个站点的属性设置。在Properties(属性)窗格中,选择Home Directory(编者注:中文版为”主目录”)标签,在Applications Setting(编者注:中文版为”应用程序设置”)部分点Configuration(编者注:中文版为”配置”)按钮。
6. 在App Mapping(应用程序映射)标签页中,点Add按钮选择要转交给WebLogic服务器处理的文件类型。
在对话框中,找到“iisproxy.dll”文件,缺省情况下,该文件位于WebLogic服务器产品的weblogic/bin目录下
7. 设置要委托给WebLogic服务器处理的文件类型的扩展名。
a. 不选”Script engine”(编者注:中文版为”脚本引擎”)复选框。
b. 不选“Check that file exists”(编者注:中文版为”检查文件是否存在”)复选框
c. 设定”Method exclusions”符合安装的安全惯例.
e. 完成上述步骤后,点OK按扭保存所做的设置,然后对每一种要交给WebLogic处理的文件类型都重复上述步骤。
注意与NSAPI插件不同的是,NSAPI可以基于目录结构提供文件服务,而ISAPI插件可以基于文件类型(文件扩展名)或者路径来提供文件服务。通常的配置是使IIS通过JSP扩展名来提供JSP页面服务。详细内容,你可以参见10-8页的“通过路径代理页面请求”
在配置完所有要代理的文件类型后,点OK按钮关闭Properties窗格
必须为iisproxy.dll创建一个.ini文件。WebLogic服务器会按照以下顺序来寻找iisproxy.ini文件。
1. iisproxy.dll所在的目录
2.被Windows注册表所引用的WebLogic服务器最新版本所在的目录。如果WebLogic服务器在这个目录下没有找到iisproxy.ini文件,那么它会在Windows注册表中所引用老WebLogic服务器版本所在的安装目录下查找iisproxy.ini文件。
3. C:/weblogic
我们建议你把该初始化文件放在与iisproxy.dll相同的目录中。
初始化文件包含了以下变量的设置,其形式为:名字=值
WebLogicHost=域名或者虚拟主机名
HTTP请求被转交到的WebLogic主机(或者是运行在WebLogic服务器中的Web服务器中所定义的虚拟主机名)。例如:WebLogicHost=localhost。
WebLogicPort=端口号
WebLogic主机监听WebLogic连接请求的端口。例如:WebLogicPort=7001。
WebLogiCluster=集群列表
一个集群中的所有WebLogic服务器列表。该列表是一组由逗号分隔开的host:port条目。例如:myweblogic.com:7001,yourweblogic.com:7001。
插件可以在集群的所有成员之间通过轮询算法实现简单的负载平衡。该列表是服务器以及插件维护动态集群列表的起始点。WebLogic服务器同插件一起根据新加入的、失败的与恢复了的集群成员来自动地更新集群列表。
此外,插件会把包含cookie的HTTP请求引导到最初创建该cookie的集群成员。
ConnectTimeoutSecs=秒数
插件对WebLogic服务器主机进行连接尝试的最大时间间隔。缺省为10秒。该属性值应该大于ConnectRetrySecs属性值。如果超过了ConnecTimeoutSecs属性所指定的时间,即使进行了适当次数连接尝试,还未能成功(见ConnectRetrySecs),那么将返回HTTP 503/Service Unavaiable给客户端。例如,ConnectTimeSecs=20。
ConnectRetrySecs=秒数
在两次连接尝试之间的时间间隔。缺省为2秒,该参数值应该不大于ConnectTimeoutSecs参数值。在将HTTO 503/Service UnavailableSecs返回给客户端之前,插件会做ConnectTimeoutSecs/ConnectRetrySecs次连接尝试。如果不想让插件重试,那么把ConnectRetrySecs设为与ConnectTimeoutSecs相等。例如,ConnectRetrySecs=5。
ErrorPage=url
你可以创建一个错误页面,当IIS不能把请求转交给WebLogic服务器时,它就用这个页面来响应请求。将url设为错误页面所在的位置。
CookieName=cname
如果你在WebLogic服务器中改变了会话cookie的名字,相应地要在iisproxy.ini文件中加上这个属性。WebLogic会话cookie在特定于WebLogic的分发描述符文件,weblogic.xml的<session-descriptor>元素中用CookieName属性定义(参见http://e-docs.bea.com/wls/docs60/programming/weblogic_xml.html#session-descriptor)
Debug ON/OFF/HFC/HTW/HFW/HTC/ALL
该属性设置了进行调试时的日志记录类型,不建议在生产系统中使用这些调试选项。
调试信息保存在c:/temp/wlproxy.log文件中
该参数的设置有以下选项(HFC, HTW, HFW以及HTC选项可以联合使用,选项之间用逗号隔开,例如“HFC, HTW”):
ON
只记录报告性消息与错误消息
OFF
不记录调试信息
HFC
记录来自客户端消息、报告性消息以及错误消息的消息头。
HTW
记录发送到WebLogic服务器消息的消息头,报告性消息以及错误消息
HFW
记录来自WebLogic服务器消息的消息头,报告性消息与错误消息
HTC
记录发送到客户端消息的消息头,报告性消息与错误消息
ALL
记录发送到客户端以及客户端发送的消息的头,发送到WebLogic服务器以及WebLogic服务器发送的消息的消息头,报告性消息,错误消息。
缺省值为“OFF”
DebugConfigInfo=ON/OFF
该参数的设置决定是否启用特殊查询参数“__WebLogicBridgeConfig”。用这个查询参数获得插件的配置参数。
例如,如果把DebugConfigInfo设置为ON,那么“__WebLogicBridgeConfig”查询参数被起用。发送一个如下的请求:
http://www.mywebserver.com:8000/weblogic/foo.jsp?__WebLogicBridgeConfig
插件会把配置信息返回到浏览器。注意这种情况下,不能连接到WebLogic服务器。
该参数只用在调试过程中,消息的输出格式随版本的变化而不同。处于安全性的考虑,建议你在生产系统中把该参数设置为OFF
DefaultFileName=filename
如果URI是“/”,那么缺省的文件名被附加在URL后面,这样可以防止WebLogic服务器的重定向。DefaultFileName应该设置为WebLogic服务器的缺省欢迎也面。如果DefaultFileName设置为welcom.html,那么下面的这个HTTP请求:“http://somehost/weblogic变为:
http://somehost/weblogic/welcome.html” 。只有当所有被重定向到的Web应用指定相同的欢迎页面,该参数才起作用。例如,把欢迎页面都设置为welcome.html
HungServerRecoverSecs =seconds
该参数定义了插件等待WebLogic服务器响应的时间。如果过了HungServerRecoverSecs时间,WebLogic服务器没有响应请求,插件就认为该服务器死了,并失败转移(fail over)到另一台服务器。该参数的最小设置为10,最大设置为600,缺省为300。
Idempotent =ON/OFF
这是一个URL级别的标志。缺省值为”ON”,这意味着如果服务器没有在HungServerRecoverSecs时间内响应,那么插件会进行失败转移。如果设置为”OFF”,插件不会进行失败转移。根据不同的URL或Mime类性,该参数可以有不同的设置。该参数应该设为一个比较大的值。如果是设置的值小于servlet的处理时间,就会得到意想不到的结果。
PathPrepend=string
在PathTrim被裁减(trim)之后,请求转交给WebLogic之前,加在原始URL之前的字符串。该参数的缺省值为””。
WlForwardPath=string
如果wlForwardPath设置为空,那么iis把所有请求交给iis.proxy处理。如果只转交某一特定字符串开头的请求,那么应该设置wlForwardPath参数。例如,把wlForwardPath设置为/weblogic,那么所有以/weblogic开头的请求都被转交给WebLogic服务器。该参数的缺省值为””。如果使用路径方式的请求代理,那么必须设置该参数。
MaxPostSize
如果内容的长度超过MaxPostSize,插件会返回一个错误消息。如果设置为-1,不会检查那么Post数据的长度。设置该参数可以防止通过发送大量数据使服务器超载的拒绝服务攻击。该参数的缺省值为-1。
ISAPI模块能够把那些在Internet Service Manager注册的代理文件类型的文件转交给WebLogic服务器处理。例如,你注册了”.jsp”类型代理,那么所有扩展名为”.jsp”的请求都将转交给WebLogic处理。
位于URL的服务器与端口部分后面的路径信息会直接传递给WebLogic。例如从IIS请求以下URL:“http://myiis.com:80/jspfiles/myfile.jsp” ,转交给WebLogic的URL变为:
http://WebLogic:7001/jspfiles/myfile.jsp
如果以路径的方式代理请求:
1.把iisforward.dll放在iisproxy.dll所在的目录中,并且在IIS中加入iisfoward.dll作为过滤器服务(WebSite “Properties” -"ISAPI Filters" tab -> “Add” the iisforward.dll)。
2.把.wlforward注册为由iisproxy.dll处理的一种特殊文件类型。
3.在iisproxy.ini文件中添加“wlForwardPath”属性。例如:WlForwardPath=/weblogic。
4.如果需要,在iisproxy.ini文件加入PathTrim参数。例如使用WlForwardPath=/weblogic, PathTrim=/weblogic对要转发到WebLogic服务器的请求URL进行裁减,因此/weblogic/session转变为/session。
5.如果用户希望直接用http://someroot.com/ 把请求转交给WebLogic服务器处理,那么还应该在iisproxy.ini文件中设置DefaultFileName参数。
6.如果要改变参数设置,特别是DefaultFileName, Debug, PathTrim, PathPrepend以及WlForwardPath参数,那么应该启动“IIS管理服务”(在控制窗格的services下)。
7.如果在iisproxy.ini文件中Debug参数设置为ON,那么会生成一个用于调试的”c:/tmp/iisfoward.log”文件。
.ini文件示例
这是一个不使用WebLogic集群情况下的iisproxy.ini文件示例。注释行以‘#’号开始。
# This file contains initialization name/value pairs
# for the IIS/WebLogic plug-in.
WebLogicHost=localhost
WebLogicPort=7001
ConnectTimeoutSecs=20
ConnectRetrySecs=2
下面是使用了weblogic集群情况下的iisproxy.ini文件示例。注释行以‘#’号开始。
# This file contains initialization name/value pairs
# for the IIS/WebLogic plug-in.
WebLogicCluster=myweblogic.com:7001,yourweblogic.com:7001
ConnectTimeoutSecs=20
ConnectRetrySecs=2
使用安全套接层(SSL)协议可以保护WebLogic服务器代理插件以及IIS服务器之间的连接,保护在WebLogic服务器代理插件与IIS服务器之间所传输的数据的机密性与完整性。此外,使用SSL协议还可以让WebLogic服务器代理插件向IIS服务器进行自我身份验证,从而保证信息被传递给可靠委托人(truested principal)。
WebLogic服务器代理插件不会用传输协议(http或https)来确定代理插件与IIS插件之间的连接是否使用了SSL协议保护。要使用SSL协议,必须把使用代理插件的WebLogic服务器配置为使用SSL协议。WebLogic服务器插件代理使用WebLogic服务器监听SSL通信的端口与IIS服务器通信。
在WebLogic服务器代理插件使用SSL协议,必须在iisproxy.ini文件中指定以下参数:
SecureProxy ON/OFF
如果WebLogic服务器代理插件与IIS之间的通信采用SSL协议,那么这个参数应该设置为ON,该参数缺省为OFF。在定义这个参数之前,不要忘了先定义WebLogic服务器监听SSL请求的端口。
该参数可以在两个层次上定义:在主服务器配置或在虚拟主机配置中定义。如果没有在虚拟主机的配置中指定这个参数,那么它将从主服务器的配置中继承SSL配置。
TrustedCAFile=filename
数字证书所在的文件,该数字证书由可靠的证书管理机构发放并被WebLogic服务器插件使用。如果SecurityProxy参数设置为ON,那么必须设置这个参数。该参数没有缺省值。
文件名必须是数字证书文件的全路径文件名。
RequireSSLHostMatch TRUE/FALSE
该参数决定WebLogic服务器代理插件连接的主机名是否必须与连接代理插件的WebLogic服务器所使用的数字证书中的Subject Distinguished Name字段匹配。参数缺省为TRUE。
SSLHostMatchOID Integer
This parameter is the ASN.1 Object ID (OID) that identifies which field in theSubject Distinguished Name of the peer digital certificate is to be used toperform the host match comparison.缺省为22,对应于Subject Distinguished Name中的CommonName字段。Common OID有以下值:Sur Name—23,Common Name—22,Email—13,Organizational Unit—30,Organization—29,and Locality—26。
将servlets请求转交给WebLogic服务器处理
如果把iisforward.dll注册成一个过滤器,就可以使用路径方式代理Servlets请求。你可以用类似以下格式的URL调用servlet
http://weblogic:7001/weblogic/snoop
如果没有注册iisforward.dll,那么必须以扩展名方式代理servlets请求。以下是使用扩展方式将servlet请求转交给WebLogic服务器处理的三个步骤:
1.在IIS注册一种文件类型(扩展名)。详细内容,可以参见“更新IIS设置使请求转给WebLogic”。
2.在Web应用中注册servlet。有关注册servlets的详细内容,可以参见“配置Servlets”中的内容。
3.用以下模式的URL访问servlet
http://www.myserver.com/virtualName/anyfile.ext
virturalName是在Web应用分发描述符的<servlet-mapping>元素中为servlet定义的URL模式。Ext是在IIS中注册的文件类型(文件扩展名),这种文件类型由WebLogic服务器处理。URL的anyfile部分被忽略。
注意:
ü servlet调用的所有图形连接也必须在IIS中注册相应类型(例如:.gif和.jpg)以能够代理。
ü 如果被调用的servlet调用了其它servlets,那么这些链接也必须使用上面所提到的URL模式。
在安装并配置了ISAPI插件后,按以下步骤分发并测试ISAPI插件:
1.运行WebLogic与IIS
2.在Web应用的文档根下保存一个用来测试ISAPI插件的JSP文件。打开浏览器,URL设置为IIS+filename.jsp。例如:
http://myii.server.com/filename.jsp
本章将介绍如何配置Netscape Enterprise Server(NES)代理插件。通过插件,可以把WebLogic的HTTP功能平滑地集成到NES中,客户端可以透明地访问webLogic中的资源,从而增强了NES的功能。
主要介绍以下内容:
ü 概述
ü 配置插件
ü 使用SSL
ü 使用NASAPI时,有关WebLogic服务器集群失败转移的注意事项
ü obj.con文件示例(不使用WebLogic集群)
ü obj.con文件示例(使用WebLogic集群)
插件用于这样的环境之中:NES提供静态网页服务,而WebLogic服务器(运行在另一个进程之中,也可能是另一主机之中)则负责提供对动态页面的服务(例如JSP以及HTTP Servlet生成的页面)。WebLogic服务器与NSAPI插件之间的通信可以是明文的也可以使用SSL。对于终端用户即浏览器而言,提交给WebLogic服务器的HTTP请求与静态网页来自相同的源。也就是说,后端的WebLogic是不可见的。而且WebLogic客户-服务器协议的HTTP-隧道功能可以作为插件运行,因此,通过它可以访问所有WebLogic服务(而不仅仅是动态网页)。
WebLogic插件在Enterprise服务器中被当作一个NSAPI模块运行。NES在启动时会装载NSAPI模块,然后某些类型的HTTP请求就交由该模块处理。NSAPI类似于HTTP(Java) servlet。只是NSAPI模块是与平台有关的。
通过使用插件到WebLogic服务器的可重用连接池,WebLogic Server NSAPI插件提供了高效率的性能。NSAPI插件自动实现了在插件和WebLogic 服务器之间“保持激活”的连接。如果连接超过30秒不活动,连接将被关闭。
配置NSAPI插件有以下四个步骤:
1.把相关的NSAPI库文件复制到NES的安装目录中。
2.修改obj.conf文件
3.更改NES配置目录中的mimes.types文件
4.分发并测试NSAPI插件
步骤1:复制库
在UNIX平台上WebLogic NSAPI插件模块作为共享对象(.so文件)分发,在Windows平台上作为动态连接库分发。这些文件分别位于WebLogic分发的/lib于/bin目录中。从平台支持表(http://e-docs.bea.com/wls/docs60/../platforms/index.html#plugin)中选择适合于您的环境的库文件。然后将所选择的库文件复制到NES所在的文件系统中。
步骤2:设置obj.conf文件
为了使用NSAPI插件,需要修改NES的obj.conf文件。包括以下改动:
ü 指示NES将本地库装载为NSAPI模块的代码
ü 应该交由NSAPI插件处理的请求类型的对象定义
ü 允许通过NSAPI插件使用WebLogic协议的HTTP-协议隧道功能的可选代码。
以下是配置obj.conf文件的步骤
a. 找到并打开obj.conf文件
用于NES实例的obj.conf文件位于以下位置:
NETSCAPE_HOME/https-INSTANCE_NAME/config/obj.conf
其中,NETSCAPE_HOME是安装NES的根目录,INSTANCE_HOME是正在使用的特定实例或服务器配置。例如,在一台叫作goldengate的UNIX机器中,你可以在以下位置找到obj.conf文件。
/usr/local/netscape/enterprise-351/https-goldengate/config/obj.conf
b. 指示NES将本地库装载为一个NSAPI模块
在obj.conf文件的开头加入以下代码行。这些行指示NES应该把本地库(共享对象或dll)装载为一个NSAPI模块。
Init fn="load-modules" funcs="wl-proxy,wl-init"/
shlib=/usr/local/netscape/plugins/SHARED_LIBRARY
Init fn="wl-init"
这里的SHARD_LIBRARY是你在第一步中所安装的共享对象或dll(例如libproxy.so)。功能“load-modules”表明在NES启动时要装载的共享库。值“wl-proxy”与“wl-init”标识了NSAPI插件将执行的功能。
c. 声明交由NSAPI插件处理的请求
所有经过NSAPI插件传递给WebLogic服务器的请求都必须在位于obj.conf文件中的对象定义中声明。有两种方式识别这些请求:通过MIME文件扩展,或者通过请求的URL中的特定字符串(被称为ppath)
无论是使用MIME方式还是ppath方式来代理请求,你都应该在<Object>标签中以及在开启与闭合<Object>标签中添加参数。NES参数(位于<与>)包括名字或者ppath(可选的)。在标记之间,Service语句设置模块所识别的WebLogic参数:WebLogicHost(必须的),WebLogicPort(必须的),PathTrim, PathPrepend, ConnectTimeoutSecs,ConnectRetrySecs以及StatPath。如果你没有设置必需的参数,那么在调用时,对象会产生HTML错误指出配置中缺少参数。
Netscape的obj.conf文件对于问被的位置有严格要求。要避免出现问题,请务必遵照以下指导:
去除无关的前导与尾部空格
如果所输入的字符必须跨越多行,那么在行的末尾加上后斜杠“/”,然后继续在下一行输入。后斜杠会直接把前后两行连接在一起。如果要在第一行的最后与第二行的开始之间必须要有一个空格的话,务必只使用一个空格,或者是在第一行的末尾(在后斜杠之前)或者是在第二行的开始。
属性不能跨越多行。(例如,你必须在webLogicCluster后面列出一个集群中的所有服务器)
d. 配置ppath代理方式
要通过ppath来代理请求,输入<Object name= “insert_name”>开始一个新对象的定义。按照所代理的服务命名该对象,并在<Object>标签中设置ppath。Ppath的一个字符串,用它来标识要递交给weblogic服务器的请求。当你使用了ppath,所有包含该路径的请求都将转交给WebLogic服务器来处理。例如,一个 “/weblogic*”的ppath将会把所有以 http://enterprise.com/weblogic开始的请求转交给NSAPI插件,然后该插件会把请求传送给指定的Weblogic主机/端口或集群。
每一个对象定义(位于标签之间的代码)都是以Service fn=wl-proxy开头。对于不是位于集群中的WebLogic服务器,你必须设置这两个参数:WebLogicHost与WebLogicPort。对于位于集群中的webLogic服务器,只需要设置一个参数:WebLogicCluste。
下面的这个例子在obj.conf文件中添加了两个对象定义,它们分别定义了两个ppath。这两个ppath标识了交由不同WebLogic服务器实例处理的请求。
服务器实例处理的
<Object name="weblogic" ppath="*/weblogic/*">
Service fn=wl-proxy WebLogicHost=myserver.com/
WebLogicPort=7001 PathTrim="/weblogic"
</Object>
<Object name="si" ppath="*/servletimages/*">
Service fn=wl-proxy WebLogicHost=otherserver.com/
WebLogicPort=7008
</Object>
注意,不是必须配置的参数,如PathTrim,可以用来进一步配置经过NSAPI插件传送ppath的方式。本文档在“参数”这一节中定义了所有WebLogic NSAPI插件的参数。
e. 配置文件扩展名方式的代理
无论请求的URL是怎样,总之所有包含指定MIME文件类型扩展(如.jsp或.jhtml)的请求都会被挑出来转交给NSAPI插件。为了把某种文件类型的请求都转送到WebLogic服务器中,必须在已原来“缺省的”对象定义中添加Service语句。
为了把所有JSP代理到WebLgic服务器,必须在最后一个以NameTrans fn=…开头的行后面以及以PathCheck开始的行之前加入以下Service语句。
Service method="(GET|HEAD|POST|PUT)" type=text/jsp fn=wl-proxy/
WebLogicHost=192.1.1.4 WebLogicPort=7001 PathPrepend=/jspfiles
该语句将把所有以.jsp作为扩展名的文件代理到所指定的WebLogic服务器,因此请求的URL类似于:
pathPrepend的值应该对应于WebLogic的文档根(document root),JSPServlet在文档根中搜索JSP文件并对文件进行编译。(有关JSP以自动页面编译的更多信息,请阅读开发者指南中的使用WebLogic JSP中的内容)
在增加了上述语句后,缺省的Object定义类似于下面,所添加的部分用黑体显示。
<Object name=default>
NameTrans fn=pfx2dir from=/ns-icons/
dir="c:/Netscape/SuiteSpot/ns-icons"
NameTrans fn=pfx2dir from=/mc-icons/
dir="c:/Netscape/SuiteSpot/ns-icons"
NameTrans fn="pfx2dir" from="/help" dir=/
"c:/Netscape/SuiteSpot/manual/https/ug"
NameTrans fn=document-root root="c:/Netscape/SuiteSpot/docs"
Service method="(GET|HEAD|POST|PUT)" type=text/jsp fn=wl-proxy/
WebLogicHost=localhost WebLogicPort=7001 PathPrepend=/jspfiles
PathCheck fn=nt-uri-clean
PathCheck fn="check-acl" acl="default"
PathCheck fn=find-pathinfo
PathCheck fn=find-index index-names="index.html,home.html"
ObjectType fn=type-by-extension
ObjectType fn=force-type type=text/plain
Service method=(GET|HEAD) type=magnus-internal/imagemap fn=imagemap
Service method=(GET|HEAD) /
type=magnus-internal/directory fn=index-common
Service method=(GET|HEAD) type=*~magnus-internal/* fn=send-file
AddLog fn=flex-log name="access"
</Object>
所有要转交给WebLogic服务器处理的MIME类型都应该以上面这种方式,在缺省对象中添加对应的Service语句。
f. 启用HTTP隧道功能
如果你想通过NSAPI插件使用WebLogic协议的HTTP隧道功能,你应该在obj.conf文件中添加以下对象定义,替代希望使用WebLogic主机和端口,或者WebLogic集群。
<Object name="tunnel" ppath="*/HTTPClnt*">
Service fn=wl-proxy WebLogicHost=192.192.1.4 WebLogicPort=7001
</Object>
步骤3:更改MIME.types文件
如果按照以上方式把NSAPI插件设置为通过MIME类型代理,必须在NES配置目录中添加要代理的MIME类型的标识符及其扩展,这可以通过两种方式来实现:通过管理终端修改,或者直接编辑MIME.types文件。
要直接编辑MIME.types文件,打开要编辑的文件并输入以下行:
type=text/jsp exts=jsp
注意,对于NES 4.0(iPlanet),不要加入用于JSP的MIME类型,而是应该将原来的MIME类型/magnus-internal/jsp改为text/jsp。
对于所有NES版本,你需要手工编辑MIME.types文件,或者使用管理终端来编辑。点击Manage->Preferences->Mime Types打开管理终端,然后编辑Mime Types文件
步骤4:分发与测试NSAPI插件
在安装并配置了NSAPI插件后,按以下步骤来进行分发与测试:
a. 启动WebLogic
b. 启动NetScapte Enteprise Server。如果已经运行了NES,为了使新的设置生效,必须重新启动它,或者从管理终端应用新的设置。
c. 要测试NSAPI插件,打开浏览器并把URL设置为Enterprise服务器+ “/weblogic”,这将会启用缺省的WebLogc HTTP servlet,如下所示:
http://myenterprise.server.com/weblogic/
NSAPI可以识别以下参数:
注意在配置WebLogic集群时:必须使用WebLogicCluster参数而不是WebLogicHost与WebLogicPort参数。
WebLogicHost=domain name
必需的参数(如果使用WebLogic集群,则应该使用WebLogicCluster参数。)。HTTP请求将被转交到该参数定义的WebLogic主机中。
WebLogicPort=port (相当于早期的TengahPort)
必需的参数(如果使用WebLogic集群,则应该使用WebLogicCluster参数。)。WebLogic主机将在该参数所设置的端口监听WebLogic连接请求。
WebLogicCluster=cluster list
必需的参数(如果是使用WebLogic集群)。该参数列出了集群中的WebLogic服务器。列表中的每个条目必需遵照host:port的格式。例如:
WebLogicCluster="myweblogic.com:7001,
yourweblogic.com:6999,theirweblogic.com:6001"
如果使用WebLogic集群,那么应该用这个参数,而不是WebLogicHost与WebLogicPort参数。WebLogic服务器会首先查找WebLogicCluster参数,如果没有找到该参数,它将继续查找并使用WebLogicHost与WebLogicPort参数。(如果所有这些参数都找不到,它将寻找并使用TengahHost与TengahPort参数)
插件会在可使用的集群成员中进行简单的负载计算,如果一个成员不能被连接,那么该成员将被标记为“坏的”,然后在试着用其它的成员,在此成员被跳过10次之后, 会再次尝试使用该成员,如果成功,那么将改变它的状态。
插件会把包含cookie的HTTP请求递交到集群中创建该cookie的服务器。
PathTrim=string
在把请求转交给WebLogic之前,将会从原始的WebLogicURL中裁减掉该参数所设置的字符串。缺省为“”
path可能会作为webLogic URL的一部分传递到WebLogic中,也可能会被剥离,这取决于Object标签中PathTrim的设置。例如,一个典型的将请求代理到WebLogic的Object标签看上去应该如下面所示:
<Object name="weblogic" ppath="*/weblogic/*">
Service fn=wl-proxy WebLogicHost=myweblogic.server.com/
WebLogicPort=7001/
PathTrim="/weblogic"
</Object>
ppath设置了将URL递交到Enterprise服务器的方式,例如:
http://myenterprise.server.com/weblogic/
将被转交给WebLogic服务器进行语义分析。因为PathTrim被设置为从URL中剥离“/weblogic”,这一步是在URL被交给WebLogic服务器之前进行,因而转交到WebLogic的URL为
http://myweblogic.server.com:7001/
PathPrepend=string
该参数设置了要添加在原始URL中的前缀字符串。添加字符串在裁减PathTrim字符串之后、把请求转交给WebLogic之前进行发生。缺省为“”
ConnectTimeoutSecs=seconds
NSAPI模块尝试连接WebLogic主机的最大时间间隔(以秒为单位)。缺省为10秒,该参数的值应该大于ConnectRetrySecs参数。如果经过ConnectTimeoutSecs所设定的时间还未能成功连接,那么将返回一个HTTP 503/ServiceUnavailable回复。
ConnectRetrySecs=seconds
该参数定义了NSAPI模块在两次连接尝试之间的间隔时间。缺省为2秒,这个参数的值应该小于ConectTimeoutSecs参数。在把HTTP 503/Service Unavailable回复返回到客户端之前,NES插件会尝试ConnectTimeoutSects/ConnectRetrySecs次连接。如果只想进行一次连接尝试,那么把ConnectRetrySecs参数与ConnectTimeoutSecs参数设置为相同的值。
StatPath=boolean
如果该参数设置为true,那么在把请求转交给WebLogic之前,NSE插件首先检查请求中的转换路径是否存在以及它的可读权限。该参数的缺省设置为false。如果文件不存在,那么会把HTTP 403/Forbidden返回到客户端。如果文件存在,但是它的权限不是设置为world-readable,那么将返回HTTP 403/Forbidden回复。在这两种情况下,Enterprise服务器处理这些回复的缺省机制完成回复内容。该选项只能在WebLogic servlet引擎与Enterprise服务器具有相同的文档根(document root)时使用。
ErrorPage=URL
用于创建错误页,当Netscapte Enterprise Server无法把请求转交到WebLogic服务器时,会显示该页面。该参数设置为错误页面所在的位置。
CookieName=cname
如果要改变WebLogic 服务器的WebLogic会话cookie名,那么应该在obj.conf文件中设置该属性。WebLogic会话cookie的名字由Weblogic.properties文件的weblogic.httpd.session.cookie.name属性设置。详细内容,请参见管理员指南中“把WebLogic设置为HTTP服务器”中的内容。
使用SSL协议
使用安全套接层(SSL)协议可以保护WebLogic服务器代理插件以及NSAPI服务器之间的连接,保护在WebLogic服务器代理插件与NSAPI服务器之间所传输的数据的机密性与完整性。此外,使用SSL协议还可以让WebLogic服务器代理插件向NSAPI服务器进行自我身份验证,从而保证信息被传递回可信目标(trusted principal)。
WebLogic服务器代理插件不会用传输协议(http或https)来确定代理插件与NSAPI插件之间的连接是否使用了SSL协议保护。要使用SSL协议,必须把使用代理插件的WebLogic服务器配置为使用SSL协议。WebLogic服务器插件代理使用WebLogic服务器监听SSL通信的端口与NSAPI服务器通信。
在WebLogic服务器代理插件使用SSL协议,必须在httpd.conf文件中指定以下参数:
SecureProxy ON/OFF
如果WebLogic服务器代理插件与NSAPI之间的通信采用SSL协议,那么这个参数应该设置为ON,该参数缺省为OFF。在定义这个参数之前,不要忘了先定义WebLogic服务器监听SSL请求的端口。
该参数可以在两个层次上定义:在主服务器配置中定义或者在虚拟主机配置中定义。如果没有在虚拟主机的配置中指定这个参数,那么它将从主服务器的配置中继承SSL配置。
TrustedCAFile=filename
数字证书所在的文件,该数字证书由可靠的证书管理机构发放并被WebLogic服务器插件使用。如果SecurityProxy参数设置为ON,那么必须设置这个参数。该参数没有缺省值。
文件名必须是数字证书文件的全路径文件名。
RequireSSLHostMatch TRUE/FALSE
该参数决定WebLogic服务器代理插件连接的主机名是否必须与连接代理插件的WebLogic服务器所使用的数字证书中的Subject Distinguished Name字段匹配。参数缺省为TRUE。
SSLHostMatchOID Integer
此参数是ASN.1 Object ID (OID),标识端数字认证的Subject Distinguished Name 中哪个字段是用于执行主机匹配比较的.缺省为22,对应于Subject Distinguished Name中的CommonName字段。Common OID有以下值:Sur Name—23,Common Name—22,Email—13,Organizational Unit—30,Organization—29,以及 Locality—26。
有关WebLogic服务器集群失败转移的注意事项
在大多数配置中,如果NSAPI插件把请求发送到集群的主要实例,而该实例不可用时,那么请求会转移到次要实例。然而,有一些配置联合使用了防火墙与负载控制器,那么当WebLogic服务器的主实例不可用时,其中的任何一个服务器(防火墙或负载控制器)都可能会接受这个请求(并返回一个成功的连接)。在试着把请求转交到WebLogic服务器的主实例之前(该实例不可用),请求会作为“连接重设”返回到NSAPI插件中。
穿越防火墙(包括或不包括负载控制器)的NSAPI请求将由WebLogic服务器来处理。换句话说,“连接重设”的响应将转移到WebLogic服务器的从实例。因为在这些配置中“连接重设”响应可以进行失败转移转移,因此servlets必须是等幂的否则将导致事务的重复处理。
例如,如果在处理交易时,WebLogic服务器的主实例出现故障,那么会将“连接重设”信息返回到NSAPI插件中。NSAPI插件再把请求转交给WebLogic服务器的从实例再次执行请求。如果servlets不是等幂的话将会导致事务的重复处理。
在安装了服务补丁程序6或更低版本补丁程序的WebLogic Server 4.5.1的配置中,返回 “连接重设”回复的NSAPI请求不会进行失败转移,这样就不会在不等幂servlets中产生复制事务。但是在联合防火墙与/或负载指导的情况下该配置不能提供失败转移。
0bj.conf文件示例(不使用WebLogic集群的情况)
下面这个例子演示了在不使用集群的情况下需要在obj.conf文件加入的行。你可以把这个例子作为一个模板,然后根据所使用的环境与服务器对这个文件作适当的修改。以‘#’开头的行都是注释行。
## ------------- BEGIN SAMPLE OBJ.CONF CONFIGURATION ---------
# (no cluster)
# The following line locates the NSAPI library for loading at
# startup, and identifies which functions within the library are
# NSAPI functions. Verify the path to the library (the value
# of the shlib=<...> parameter) and that the file is
# readable, or the server fails to start.
Init fn="load-modules" funcs="wl-proxy,wl-init"/
shlib=/usr/local/netscape/plugins/libproxy.so
Init fn="wl-init"
# Configure which types of HTTP requests should be handled by the
# NSAPI module (and, in turn, by WebLogic). This is done
# with one or more "<Object>" tags as shown below.
# Here we configure the NSAPI module to pass requests for
# "/weblogic" to a WebLogic Server listening at port 7001 on
# the host myweblogic.server.com.
<Object name="weblogic" ppath="*/weblogic/*">
Service fn=wl-proxy WebLogicHost=myweblogic.server.com/
WebLogicPort=7001 PathTrim="/weblogic"
</Object>
# Here we configure the plug-in so that requests that
# match "/servletimages/" is handled by the
# plug-in/WebLogic.
<Object name="si" ppath="*/servletimages/*">
Service fn=wl-proxy WebLogicHost=192.192.1.4 WebLogicPort=7001
</Object>
# This Object directive works by file extension rather than
# request path. To use this configuration, you must also add
# a line to the mime.types file:
#
# type=text/jsp exts=jsp
#
# This configuration means that any file with the extension
# ".jsp" are proxied to WebLogic. Then you must add the
# Service line for this extension to the Object "default",
# which should already exist in your obj.conf file:
<Object name=default>
NameTrans fn=pfx2dir from=/ns-icons/
dir="c:/Netscape/SuiteSpot/ns-icons"
NameTrans fn=pfx2dir from=/mc-icons/
dir="c:/Netscape/SuiteSpot/ns-icons"
NameTrans fn="pfx2dir" from="/help" dir=/
"c:/Netscape/SuiteSpot/manual/https/ug"
NameTrans fn=document-root root="c:/Netscape/SuiteSpot/docs"
Service method="(GET|HEAD|POST|PUT)" type=text/jsp fn=wl-proxy/
WebLogicHost=localhost WebLogicPort=7001 PathPrepend=/jspfiles
PathCheck fn=nt-uri-clean
PathCheck fn="check-acl" acl="default"
PathCheck fn=find-pathinfo
PathCheck fn=find-index index-names="index.html,home.html"
ObjectType fn=type-by-extension
ObjectType fn=force-type type=text/plain
Service method=(GET|HEAD) type=magnus-internal/imagemap/
fn=imagemap
Service method=(GET|HEAD) /
type=magnus-internal/directory fn=index-common
Service method=(GET|HEAD) type=*~magnus-internal/* fn=send-file
AddLog fn=flex-log name="access"
</Object>
# The following directive enables HTTP-tunneling of the
# WebLogic protocol through the NSAPI plug-in.
<Object name="tunnel" ppath="*/HTTPClnt*">
Service fn=wl-proxy WebLogicHost=192.192.1.4 WebLogicPort=7001
</Object>
#
## ------------- END SAMPLE OBJ.CONF CONFIGURATION ---------
obj.conf文件(使用WebLogic集群的情况)
下面这个例子演示了在使用WebLogic集群时需要在obj.conf文件中所要添加的行。你可以把这个例子作为一个模板,然后对它作适当的修改以适合你所使用的环境与服务器。以‘#’号开始的行都是注释行。
## ------------- 开始示例 OBJ.CONF 配置 ---------
# (使用WebLogic 集群)
#
# 下面的行定位NSAPI库用于
# 启动时载入, and identifies which functions within the library are
# NSAPI functions. Verify the path to the library (the value
# of the shlib=<...> parameter) and that the file is
# readable, or the server fails to start.
Init fn="load-modules" funcs="wl-proxy,wl-init"/
shlib=/usr/local/netscape/plugins/libproxy.so
Init fn="wl-init"
# Configure which types of HTTP requests should be handled by the
# NSAPI module (and, in turn, by WebLogic). This is done
# with one or more "<Object>" tags as shown below.
# Here we configure the NSAPI module to pass requests for
# "/weblogic" to a cluster of WebLogic Servers.
<Object name="weblogic" ppath="*/weblogic/*">
Service fn=wl-proxy /
WebLogicCluster="myweblogic.com:7001,yourweblogic.com:7001,/
theirweblogic.com:7001" PathTrim="/weblogic"
</Object>
# Here we configure the plug-in so that requests that
# match "/servletimages/" are handled by the
# plug-in/WebLogic.
<Object name="si" ppath="*/servletimages/*">
Service fn=wl-proxy /
WebLogicCluster="myweblogic.com:7001,yourweblogic.com:7001,/
theirweblogic.com:7001"
</Object>
# This Object directive works by file extension rather than
# request path. To use this configuration, you must also add
# a line to the mime.types file:
#
# type=text/jsp exts=jsp
#
# This configuration means that any file with the extension
# ".jsp" is proxied to WebLogic. Then you must add the
# Service line for this extension to the Object "default",
# which should already exist in your obj.conf file:
<Object name=default>
NameTrans fn=pfx2dir from=/ns-icons/
dir="c:/Netscape/SuiteSpot/ns-icons"
NameTrans fn=pfx2dir from=/mc-icons/
dir="c:/Netscape/SuiteSpot/ns-icons"
NameTrans fn="pfx2dir" from="/help" dir=/
"c:/Netscape/SuiteSpot/manual/https/ug"
NameTrans fn=document-root root="c:/Netscape/SuiteSpot/docs"
Service method="(GET|HEAD|POST|PUT)" type=text/jsp fn=wl-proxy/
WebLogicCluster="myweblogic.com:7001,yourweblogic.com:7001,/
theirweblogic.com:7001",PathPrepend=/jspfiles
PathCheck fn=nt-uri-clean
PathCheck fn="check-acl" acl="default"
PathCheck fn=find-pathinfo
PathCheck fn=find-index index-names="index.html,home.html"
ObjectType fn=type-by-extension
ObjectType fn=force-type type=text/plain
Service method=(GET|HEAD) type=magnus-internal/imagemap/
fn=imagemap
Service method=(GET|HEAD) /
type=magnus-internal/directory fn=index-common
Service method=(GET|HEAD) type=*~magnus-internal/* fn=send-file
AddLog fn=flex-log name="access"
</Object>
# The following directive enables HTTP-tunneling of the
# WebLogic protocol through the NSAPI plug-in.
<Object name="tunnel" ppath="*/HTTPClnt*">
Service fn=wl-proxy WebLogicCluster="myweblogic.com:7001,/
yourweblogic.com:7001,theirweblogic.com:7001"
</Object>
#
## ------------- END SAMPLE OBJ.CONF CONFIGURATION ---------
本章将介绍以下内容:
ü 安全配置概述
ü 设置Java安全管理器
ü 改变系统口令
ü 指定一个安全域
ü 定义用户
ü 定义组
ü 为虚拟机定义一个组
ü 定义ACL
ü 配置SSL协议
ü 配置双向验证
ü 口令的保护
ü 安装审计提供者
ü 安装连接过滤器
ü 配置安全上下文传播
在WebLogic服务器中,安全主要通过配置定义安全策略的属性来实现。可以用管理控制台定义安全策略。在管理控制台中,你应该为所分发的应用指定设置与安全相关的属性:
ü
ü 用户与组
ü 访问控制列表(ACLs)以及对WebLogic服务器资源的访问权限
ü SSL协议
ü 双向认证
ü 主机名验证器
ü 审计提供者
ü 定制过滤器
ü 安全上下文传播
因为各安全部件之间是紧密关联的,因此,在进行安全配置时,很难确定从哪开始。事实上,安全配置是一个递归的过程。尽管在进行安全配置时,可能会有很多种流程,但我们还是建议你遵照以下步骤进行:
1.改变system用户的口令以保护WebLogic服务器
2.指定一个安全域。WebLogic服务器有一个缺省的File安全域。但你可能更愿意用别的安全域或者是一个定制的安全域
3.定义安全域的用户。你可以在安全域中用组来组织用户
4.定义ACL以及对资源的访问权限
5.客户端与WebLogic服务器之间的通信采用SSL协议,这样可以保护网络连接。当使用SSL协议,WebLogic服务器会使用由可靠的证书管理机构所发放的数字证书对客户进行验证。这一步是可选的,但我们建议你实施这一步
6.通过实施双向认证进一步保护你的WebLogic服务器。当使用了双向验证,客户端会对WebLogic服务器进行验证,然后WebLogic服务器在对客户端进行验证
本章将介绍上述安全配置步骤,以及如何在管理控制台中设置那些与安全相关的属性。有关WebLogic服务器安全特征的详细描述,请参见“WebLogic安全介绍”与“安全基础”。
有关如何在管理控制台中设置安全属性的详细说明,可以参见管理控制台在线帮助中的内容。
注意:本章所描述的所有配置步骤都是在管理控制台中进行的。
有关如何为WebLogic EJB分配安全角色的内容,可以参见“WebLogic Server 6.0 的分发属性”中的内容。
有关web应用安全的内容,可以参见“分发与配置Web应用”中的内容
在安装WebLogic服务器时,安装程序会要求你指定系统用户的口令。该口令是WebLogic服务器中system用户的口令,被存储在/wlserver6.0/config/mydomain目录中的fileRealm.properties文件中。这个口令可以用于这个域的管理服务器以及所有与这个管理服务器关联的受管服务器。
注意:WebLogic服务器只能用system用户来启动。
保存在fileReamln.properties文件中的口令是经过加密的。WebLogic服务器对被加密的口令进行散列化处理,从而进一步保护了口令。为了提高安全性,我们建议你经常更新系统口令。
以下是更改系统口令的步骤:
1.在管理控制台中打开Users窗口
2.在User属性中输入system
3.在Password属性中输入一个新的口令
4.确认你输入的口令
在一个域中,所有受管服务器的口令与管理服务器的口令相同。你应该用管理控制台经常地改变管理服务器的口令,新口令会传播到同一域中的所有受管服务器上。记住,一个域中的所有服务器成员的系统口令必须相同。
注意:Petstore以及ExampleServer域仍然把系统口令保存在password.ini文件中。当使用这些域时,你可以通过修改password.ini文件中的口令信息来修改examples服务器的系统口令。Password.ini文件中的口令是以明文形式保存的。
缺省情况下,安装完WebLogic服务器后,WebLogic服务器就有一个File域(File realm)。在使用这个域之前,需要先设置几个属性来管理File域的使用。可以在管理控制台的Security窗口的filerealm标签中设置这些属性。
下表是这些属性的描述。
表14-1 File域的属性
属性
描述
Cache Realm
所使用的缓存域(Caching realm)的名字。当使用File域时,该属性必须设置为None
Max Users
该属性设置了File域的最大用户数。File域的最大用户数为10,000,最小为1,缺省为1,000。
Max Groups
该属性设置了File域的最大组数,最大值为10,000,最小为1,缺省为1,000
Max ACLs
指定File域中最多可以有多少ACL,最小设置为1,最大为10,000,缺省为1,000。
如果fileRealm.properties文件被破坏,那么你需要重新配置WebLogic服务器的所有安全信息。因此,我们建议你完成以下任务:
ü 对fileRealm.properties文件进行备份,然后把备份放在一个安全的地方。
ü 设置fileRealm.properties文件的访问权限,只有WebLogic服务器管理员才有该文件的读写该权限,其它用户不能读写这个文件。
注意:你还应该备份File域的SerializedSystemIni.dat文件。有关SerializedSystemIni.dat文件的更多内容,你可以参见“口令的保护”中的内容。
如果你不想使用File域,而是想使用WebLogic服务器提供的其它安全域或者是定制安全域,那么在对所用的安全域设置了上述属性后,重启服务器使你的设置生效。
有关WebLogic服务器安全域的更多内容,你可以参见“安全域”中的内容。
缓存域(Caching realm)与File域、WebLogic服务器的其它安全域以及定制安全域一起实现对客户端请求的验证与授权。无论是成功的还是失败的域搜索,缓存域都将保存搜索结果。缓存域要管理以下内容的缓存:用户,组,权限,ACL以及验证请求。缓存域通过缓存搜索结果,减少对其它安全域的调用次数,从而提高了WebLogic服务器的性能。有关WebLogic服务器安全域的更多内容,你可以参加“安全域”中的内容。
安装WebLogic服务器时会自动安装缓存域:设置了缓存域,但不启用缓存。 你可以用管理控制台启用缓存。如果使用的安全域不是File域,那么必须启用缓存域。
启用缓存域后,缓存域会把对一个域的搜索结果保存在它的缓冲区中,所保存的时间由存活期(time-to-live,简写为TTL)属性的值而定或者看缓存区是否已经满了。如果缓存区已经满了,新的搜索结果将替换最老的搜索结果。TTL属性决定了一个缓存对象的有效时间。你把这些值设得越高,缓存区调用从安全域(seconddaryrealm)的次数越少。减少调用的频率会提高新能,代价是对从安全域的改变只有等到缓存对象过期了才能被识别。
注意:当你从安全域获得一个对象时,所获得的对象只是这个对象的一个快照。因此,要更新对象,必须再次调用get()方法。例如,当你调用getgroup()方法从安全域获得一个组时,你设置了这个组的成员关系,如果要更新组的成员,你必须再次调用getgroup()方法。
缺省情况下,缓存域认为从安全域是区分大小写的。例如,在区分大小的安全域中,用户名bill与Bill代表不同的用户。Windows NT安全域以及LDAP安全域不区分大小。如果使用一个不区分大小写的安全域,那么必须禁用CacheCaseSensitive属性。在禁用这个属性后,缓存域把所有用户名都转换为小写字母,这样WebLogic服务器在执行区分大小写的比较操作时就能得出正确的结果。在区分大小写的安全域中定义或引用用户或组时,在输入用户名时应该用小写字母。
缓存域的配置涉及到启用各种类型的缓存(如ACL, 验证,组,以及权限)以及定义各缓存的操作方式。所有这些工作都是通过设置Caching Realm Configuration窗口的General标签页上的属性来完成的。要保存所作的设置,点Apply按钮。定义完上述属性后,你应该重启WebLogic服务器使配置生效。
下表描述了General标签页上的各个属性。
表14-2缓存域的配置属性
属性
描述
Name
显示了活动的安全域。不要改变这个属性。
Basic Realm
与缓存域一同工作的代用安全域或定制安全域的类名。
Case Sensitive Cache
所指定的安全域是否区分大小写。缺省情况下,该属性是开启的,即域是区分大小写的。如果要使用一个不区分大小写的域(例如Windows NT与LDAP安全域),应该禁用这个属性。
要启用或配置ACL缓存,需要定义Caching Realm configuration窗口的ACL标签页上的属性。要保存所作的设置,点Apply按钮。当完成配置后,重启WebLogic服务器。
下表描述了ACL标签页上的各个属性。
表14-3 ACL缓存的配置属性
属性
描述
Enable ACL Cache
是否开启ACL缓存
ACL Cache Size
指定最多缓存多少ACL查找结果。缺省为211。该属性应设置为一个质数以获得最好的查找性能。
ACL Cache Positive TTL
设置一个成功的查找结果保存在缓存中的时间。缺省为60秒。
ACL Cache Negative TTL
设置一个失败的查找结果保存在缓存中的时间。缺省为10 秒
要启用或配置Authentication缓存,你需要定义Caching Realm configuration窗口的Authentication标签页上的那些属性。要保存所做的设置,点Apply按钮,重启WebLogic服务器。
下表描述了Authentication标签页上的各个属性。
表14-4 Authentication缓存的配置属性
属性
描述
Enable Authentication Cache
该选项用于开启Authentication缓存
Authentication Cache Size
指定最多能缓存多少Authentication请求。缺省为211。该属性应该设置为一个质数以获得最好的查找性能。
Authentication CacheTTL Positive
设置一个成功的查找结果保存在缓存中的时间。缺省为60秒。
Authentication Cache TTLNegative
设置一个失败的查找结果保存在缓存中的时间。缺省为10 秒
要启用或配置Group缓存,需要定义Caching Realm configuration窗口的Group标签页上的那些属性。要保存所作的设置,点Apply按钮,重启WebLogic服务器。
下表描述了Group标签页上的各个属性。
表14-5 Group缓存的配置属性
属性
描述
Group Enable Cache
该选项用于开启Group缓存
Group Cache Size
指定最多能缓存多少Group查找。缺省为211。该属性应该设置为一个质数以获得最好的查找性能。
Group Cache Positive TTL
设置一个成功的查找结果保存在缓存中的时间。缺省为60秒。
Group Cache Negative TTL
设置一个失败的查找结果保存在缓存中的时间。缺省为10 秒
Group Membership Cache TTL
隔多长时间个更新缓存组的组成员。缺省为10秒
要启用或配置User缓存,需要定义Caching Realm configuration窗口的User标签页上的那些属性。要保存所作的设置,点Apply按钮,重启WebLogic服务器。
下表描述了User标签页上的各个属性。
表14-6 User缓存的配置属性
属性
描述
Enable User Cache
该选项用于开启User缓存
User Cache Size
指定最多能缓存多少User查找。缺省为211。该属性应该设置为一个质数以获得最好的查找性能。
User Cache TTLPositive
该属性设置一个成功的查找结果保存在缓存中的时间。缺省为60秒。
User Cache TTLNegative
该属性设置一个失败的查找结果保存在缓存中的时间。缺省为10 秒
要启用或配置Permission缓存,你需要定义Caching Realm configuration窗口的Permission标签页上的那些属性。要保存所作的设置,点Apply按钮,重启WebLogic服务器。
下表描述了Permission标签页上的各个属性。
表12-7 Permission缓存的配置属性
属性
描述
Enable Permission Cache
该选项用于开启Permission缓存
Permission Cache Size
指定最多能缓存多少Permission查找。缺省为211。该属性应该设置为一个质数以获得最好的查找性能。
Permission Cache TTLPositive
该属性设置一个成功的查找结果保存在缓存中的时间。缺省为60秒。
Permission Cache TTLNegative
该属性设置一个失败的查找结果保存在缓存中的时间。缺省为10 秒
配置LDAP安全域
LDAP安全域通过轻量级目录访问协议(LDAP)服务器对客户端请求进行验证。该服务器把组织中的所有用户都放在LDAP目录中以进行集中管理。目前LDAP安全域支持Open LDAP,Netscape iPlanet, Microsoft Site Server与Novell NDS。
目前,WebLogic服务器支持以下两个版本的LDAP安全域。
ü LDAP realm V1——打包在以前WebLogic服务器版本中的LDAP安全域。LDAP security realm V1可以与所有所支持的LDAP服务器一同工作,该版本主要是为那些仍然使用老版本WebLogic服务器的BEA用户提供的。但是这一版本已经不使用LDAP realm V1,所以BEA建议用户升级到LDAP realm V2。
ü LDAP realm V2——在性能与可配置性方面都得到了提高。与WebLogic Server 6.0 Service Pack 1.0中提供的LDAP安全域是一样的。
注意:在使用LDAP安全域时,可以通过管理控制台查看LDAP目录服务器中的用户与用户组,但是对用户以及用户组的管理(例如,增加与删除用户或用户组,或者是在组中增加成员)仍然需要使用LDAP服务器所提供的管理工具。
LDAP安全域的配置主要是确定WebLogic服务器中的LDAP安全域如何与LDAP服务器进行通信以及描述用户与用户组如何保存在LDAP目录中。如果使用LDAP realm V2,那么可以使用WebLogic服务器所提供的模板来配置LDAP安全域。
在使用LDAP安全域之前,首先应该启用缓存域并在缓存域配置窗口的General标签页的Basic Realm属性中设置LDAP安全域的类名。
对使用LDAP安全域的限制
在使用LDAP安全域时,应该注意以下限制:
ü 在安装Microsoft Site Server中的LDAP服务器并创建了LDAP目录的根时,将缺省地创建若干个组织单元。在Groups下面有一个缺省的组织单元(名字为NTGroups)以及一个名字为Administrators的缺省空用户组。缺省情况下,WebLogic服务器也提供一个名字为Administrators的用户组,这个组中包含了一个启动WebLogic服务器的成员:System。如果你使用了Microsoft Site Server的缺省设置,并在缺省的组织单元中创建自己的用户组,那么WebLogic服务器将不能被启动。因此你应该在LDAP目录服中创建自己的组织单元并在这个组织单元中创建自己的用户组。
ü 如果LDAP目录中存在两个同名的用户组,那么WebLogic服务器将不能正确地对用户组中的用户进行验证。LDAP安全域使用用户组的DN来定位LDAP目录中的用户组。如果存在同名的用户组,WebLogic服务器只对它所找到的第一个组中的用户进行验证。因此在使用LDAP安全域时,每个用户组的名字应该是唯一的。
ü LDAP realm V1:所提供的以下功能在LDAP realm V2中将不再提供。
列出所有用户
列出用户组的成员
LDAP realm V2中删除了authProtocol与userAuthentication。你应该用JNDI绑定机制将安全证书传递到LDAP服务器。
配置LDAP Realm V1
如果要使用LDAP Security realm V1而不是文件域,那么进入管理控制台左窗格中的Security->Realms节点。然后在团粒控制台的右窗格中,点击Configure a New LDAP Realm V1链接。
在LDAP Realm Create窗口的General标签页中指定LDAP安全域的名字以及LDAP安全域的类名。点Apply按钮保存设置。完成属性配置后,重启服务器。
下表描述了General标签页上的各个属性。
表14-8 General标签页上的LDAP安全域配置属性
属性
描述
Name
LDAP安全域的名字,例如AccountingRealm
Realm Class Name
LDAP安全域的Java类名。该Java类应该包含在WebLogic服务器的CLASSPATH中。
要开启LDAP服务器与WebLogic服务器之间的通信,需要定义LDAP Realm Create窗口的LDAP Realm V1标签页上的属性。点Apply按钮保存设置,重启WebLogic服务器使设置生效。
下表描述了LDAP Realm V1标签页上的各个属性。
表14-9 LDAP标签页上的LDAP安全域配置属性
属性
描述
LDAPURL
LDAP服务器的位置。把URL该为运行LDAP服务器的机器名与监听端口号。如果WebLogic服务器与LDAP服务器之间的连接使用SSL协议,那么在URL中使用LDAP服务器的SSL端口。
Principal
WebLogic服务器连接到LDAP服务器所使用的LDAP用户的区分名(distinguished name,简称为DN)。这个用户必须有列出LDAP用户与用户组的权限
Credential
用来验证Principal属性所定义的LDAP用户的口令
Enable SSL
是否启用SSL的选项。用SSL可以保护LDAP服务器与WebLogic服务器之间的通信。记住以下规则:
1.如果不使用SSL协议,那么就禁用该属性
2.如果UserAuthentiation属性设为external,那么必须开启该属性
AuthProtocol
对LDAP服务器进行验证的验证类型。该属性应该设置为以下值:
如果不需要进行验证,那么就设为None
如果使用口令验证,那么设为Simple
如果采用证书验证,那么就设为CRAM-MD5
Netscapte Directory server支持CRAM-MD5验证。Microsoft Site Server Novell NDS支持Simple验证
要设置如何把用户保存在LDAP目录中,需要定义LDAP RealmCreate窗口的Users标签页中的属性。点Apply按钮保存设置,重启WebLogic服务器使设置生效。
下表描述了Users标签页上的各个属性。
表14-10 Users标签页上的LDAP安全域配置属性
属性
描述
User Authenticatione
设置用户验证的方式,可以设置为以下方式之一:
1.Bind方式l。LDAP安全域从LDAP目录服务器获得包括口令在内的用户数据,在WebLogic服务器中核对口令。Local设置适用于Netscape Directory与Microsoft Site Server。
2.设置为External。LDAP安全域把WebLogic服务器的客户端所提供的用户名与口令绑定到LDAP目录服务器来对用户进行验证。如果选择External设置,那么必须使用SSL协议。External设置适用于Novell NDS.
3.设置为Local。LDAP安全域查找LDAP目录的UserPassword属性并将它与WebLogic服务器的一组属性进行核对,从而实现对用户的验证。
User Password Attribute
如果User Authentication属性设置为Local,那么该属性被用来查找包含LDAP用户口令的LDAP属性。
User DN
是一组属性,结合User Name Attribute属性可以唯一定义一个LDAP用户。
User Name Attribute
LDAP用户的登录名。该属性可以设置LDAP用户的普通名字,但常常使用简写字符串,例如User ID。
为了指定如何把用户组保存在LDAP目录中,你应该设置LDAP Realm Create窗口的Group标签页中的属性。点Apply按钮保存设置,重启WebLogic服务器使设置生效。
下表描述了Groups标签页上的各个属性。
表14-11 Groups标签页上的LDAP安全域配置属性
属性
描述
Group DN
是一组属性,该属性与Name Attritute属性一起唯一地定义了LDAP目录中的用户组。
Group Name Attribute
LDAP目录中的用户组的名字。这一般是一个普通名字
Group Is Context
该复选框指定了组成员如何记录在LDAP目录中。
如果每个组包含一个成员,那么选中该复选框。该属性缺省为开启的。
如果一个用户组条目中包含用户组成员的属性,那么不要选该复选框。
Group Username Attribute
组条目中组成员的LDAP属性的名字。
如果启用了缓存,那么缓存域将把用户与用户组保存在缓冲区中以避免频繁地查找LDAP目录。Users缓冲区与Groups缓冲区中的每个对象都具有TTL属性,该属性是你在配置缓存域时指定的。如果你更改了LDAP目录,直到缓存对象过期或者缓冲区满了,所作的更改才会反映到LDAP安全域中。成功查找的默认TTL值为60秒,不成功查找的默认TTL值为10秒。除非你改变了User缓冲区与Group缓冲区的TTL属性,否则对LDAP目录只有等到60秒后才能反映到LDAP安全域中。
某些服务器端程序会执行对LDAP安全域的查找操作。例如调用getUser()方法,那么对象只有等到程序释放了它才能被域返回,否则,即使是你从LDAP目录删除了某个被WebLogic服务器验证了的用户,这个用户在连接被关闭之前会一直有效。
配置LDAP Realm V2
WebLogic服务器为所支持的LDAP服务器提供了模板。这些模板定义了代表所支持的LDAP服务器中的用户与用户组信息的缺省属性。选择一个对应LDAP服务器的模板并填写LDAP服务器的主机名与端口号。
为了使用LDAP Security realm V2,进入管理控制台左窗格中的Security->Realms节点。选择要使用的LDAP服务器。有以下选项:
ü defaultLDAPRealmforOpenLDAPDirectoryServices
ü defaultLDAPRealmforNovellDirectoryServices
ü defaultLDAPRealmforMicrosoftSiteServer
ü defaultLDAPRealmforNetscapeDirectoryServer
右窗格显示了LDAP服务器的配置窗。在Configuration Data框中的server.host与server.port属性中输入LDAP服务器的主机名与端口号。点Apply按钮保存设置,设置完所有属性后重启服务器。
Windows NT安全域使用Windows NT域中的帐号信息对用户与用户组进行验证。你可以通过控制台查看Windows NT安全域中的用户与组,但要对用户或组进行管理则只能使用Windows NT所提供的工具。
Window NT安全域提供身份验(用户与组)证但不进行授权。定义在WebLogic服务器中的System用户同时必须在Windows NT域中声明。在Windows NT平台上必须用System帐号运行WebLogic服务器,客户端必须提供System用户的口令才能通过身份验证。当你在Windows NT中定义system用户帐号时,要确保该帐号的拥有者具有管理权限并且可以从Windows NT域控制器中读取与安全相关的信息。
要使用Windows NT安全域,WebLogic服务器必须作为NT的一个服务运行。不要在域控制器中运行WebLogic服务器。
因为WebLogic在启动时,需要从fileRealm.properties文件中读ACL。改变ACL后,应该重启WebLogic服务器。如果ACL中使用组,可以减少重启WebLogic服务器的频率,因为通过更改Windows NT组的成员,你就可以动态地管理单个用户对WebLogic资源的访问权限。
在使用Windows NT安全域之前,需要先启用缓存域并在Basiec Realm属性中输入Windows NT 安全域的类名。
要使用Window NT安全域,先进到管理控制台的Security->Realm节点,然后在右窗格中,选Create a New NT Realm链接。
对Windows NT安全域的配置包括定义域的名字以及运行Window NT域的机器。域的名字与所在机器通过管理控制台的NT Realm Create窗口中的属性来定义的,然后点Apply按钮保存设置。重启服务器是设置生效。
下表描述了NT Realm Configuration窗口中的各属性。
表14-12 Windows NT安全域的配置属性
属性
描述
Name
Window NT安全域的名字,例如AccountingRealm
Realm Class Name
实现Window NT安全域的Java类名。应该把这个类放在WebLogic服务器的CLASSPATH中。
Primary Domain
定义用户与用户组的Window NT域所在机器的主机名与端口号。多个主机名与端口号之间用逗号分开。
在配置完Windows NT安全域后,需要在Windows NT中定义system用户。
1.使用管理员帐号进入到WebLogic服务器所在的Windows NT域。
2.进入Program->Administrative工具
3.选择User Manager。
4.定义System用户
5.选中Show Advanced User Rights选项
6.从Rights下拉菜单选择Act as part of the operating system选项
7.选Add按钮
8.确保Window NT的PATH环境变量中包含/wlserver6.0/bin目录。(WebLogic服务器从这个目录装载Wlntrealm.dll.)
配置UNIX安全域
Unix安全域通过执行一个小程序wlauth来查找用户与组并基于用户的UNIX登录名与口令对用户进行身份验证。在有些平台上,wlauth可以使用PAM(插件式验证模块)。通过PAM,你可以配置操作系统的验证服务而不需要改变使用这个服务的应用。在没有PAM的平台上,wlauth使用标准的登录机制,例如浅口令(shadow password)。
WebLogic在启动时需要从fileRealm.Properties文件中读入ACL,因此如果你改变了ACL,那么需要重启服务器。如果在ACL中使用组,那么可以减少重启服务器的频率。通过改变UNIX组中的成员,就可以动态地管理单个用户对WebLogic资源的访问权限。
Wlauth程序运行setuid root。要更改wlauth程序的文件属性与文件的所有权以及为wlauths设置PAM需要有根用户权限。
以下是配置UNIX安全域的步骤:
1.如果WebLogic服务器安装在一个网络驱动上,那么把wlauth文件复制到运行WebLogic服务器的机器的文件系统上,例如复制到/usr/sbin目录下。Wlauth文件在weblogic/lib/arch目录中,其中arch是你所使用的平台的名字。
2.用根用户帐号运行以下命令来改变wlauth文件的所有人与权限:
# chown root wlauth
# chmod +xs wlauth
3.在PAM平台上(如Solaris与Linux),对wlauth进行PAM配置
在Solaris上,把以下行加到/etc/pam.conf文件:
# Setup for WebLogic authentication on Solaris machines
#
wlauth auth required /usr/lib/security/pam_unix.so.1
wlauth password required /usr/lib/security/pam_unix.so.1
wlauth account required /usr/lib/security/pam_unix.so.1
在Linux上,创建一个包含以下内容的文件,名字为/etc/pam.d/wlauth
#%PAM-1.0
#
# File name:
# /etc/pam.d/wlauth
#
# If you do not use shadow passwords, delete "shadow".
auth required /lib/security/pam_pwdb.so shadow
account required /lib/security/pam_pwdb.so
注意:如果不使用浅口令,那么省略上文中的shadow。
要在WebLogic服务器中使用UNIX安全域,那么先进入管理控制台左窗格中的Security->Realms节点,然后在右窗格中,点Create a New UNIX Realm链接。
在使用UNIX安全域之前,必须先启用缓存域,然后在Basic Realm属性中输入UNIX安全域的类名。
UNIX安全域的配置涉及以下属性:域的名字,提供验证服务的应用程序。这些属性在管理控制台的UNIX Realm Create窗口中定义。点Apply按钮可以保存设置,然后重启WebLogic服务器。
下表描述了UNIX Realm Create窗口上的各属性。
表14-13 UNIX安全域的配置属性
属性
描述
Name
UNIX安全域的名字,例如AccountingRealm
AuthProgram
用来对UNIX安全域中的用户进行验证的程序名。大多数情况下,该程序的名字都是wlauth.
如果wlauth不在WebLogic服务器的类路径中,或者所给的程序名不是wlauth,那么你在启动WebLogic服务器时必须加上一个Java命令行属性。在启动WebLogic服务器的脚本中的java命令后加上以下选项:
-Dweblogic.security.unixrealm.authProgram=wlauth_prog
用wlauth程序的名字代替上面的wlauth_prog,如果该程序不在搜索路径中,那么 Wlauth_prog应该使用全路径文件名。启动WebLogic服务器。如果wlauth程序在WebLogic服务器的路径中并且名字是wlauth,那么可以省略上面这个步骤。
配置RDBMS安全域
RDBMS安全域是BEA提供的一个定制安全域,它把用户、组以及ACL存储在关系数据库中。可以用管理控制台来管理RDBMS安全域。
要使用RDBMS安全域,先进入管理控制台左窗格的Security->Realms节点,然后在右窗格点Create a New RDBMS Realm链接。
在使用RDBMD安全域之前,需要先启用缓存域并在Basic Realm属性中输入RDBMS安全域的类名。
需要对RDBMS安全域进行以下配置:定义连接数据库的JDBC驱动程序以及定义一个数据库模式以保存用户、组以及ACLs。
与RDBMS安全域配置有关的属性位于RDBMS Realm Create窗口上的Gerneral标签页、Databases标签页以及Schema标签页上。
下表描述了General标签页上的各个属性。
表12-14 General标签页上的RDBMS安全域配置属性
属性
描述
Name
RDBMS安全域的名字,例如AccountingRealm
Realm Class
实现RDBMS安全域的类名。你应该把这个类包含在WebLogic服务器的CLASSPATH中。
下表描述了Database标签页上的各个属性。
表14-15 Database标签页上的RDBMS安全域配置属性
属性
描述
Driver
JDBC驱动程序的完整类名。这个类必须位于WebLogic服务器的CLASSPATH中
URL
RDBMS安全域所使用的数据库的URL,URL的模式可以参考所使用的JDBC驱动程序的文档。
User Name
数据库的缺省用户名
Password
数据库缺省用户的口令
有关保存用户、组以及ACL的数据库模式的属性位于在Schema标签页上,当对上述三个标签页中的属性进行了必要的设置后,点Apply按钮保存设置,然后重启WebLogic服务器。
你可以利用已有的用户存储库(例如网上的目录服务器)创建一个定制安全域。要使用定制安全域,必须先创建一个实现WebLogic.security.acl.AbstractListableRealm接口或者weblogic.security.acl.AbstractManageableRealm接口的类,然后在管理控制台中安装这个类。
要安装一个定制安全域,先进入管理控制台左窗格Security->Realms节点,然后点击左窗格中的Create a New Custom Realm链接。
在使用定制的安全域之前,必须先启用缓存域并在Basic Realm属性中输入定制安全域的类名。
需要对定制安全域进行以下配置:定义安全域的名字以及实现安全域的类,指定安全域保存用户、组与ACL的方式。这些配置可以通过管理控制台的Custom Realm Create窗口上的属性来进行。点窗口中的Apply按钮保存设置,然后重启服务器。
下表列出了Custom Security Realm Create窗口中必须设置的属性。
表14-16定制安全域的配置属性
属性
描述
Name
定制安全域的名字,例如AccountingRealm
Realm Class Name
实现定制安全域的类名。该Java类必须在WebLogic服务器的类路径中
Configuration Data
连接安全存储器所需要的信息
有关编写定制安全域的信息,可以参见“编写定制安全域”中的内容。
如果WebLogic服务器要使用代用安全域或定制安全域,你应该按以下步骤测试域是否可以正常工作:
1.启动管理控制台。管理控制台显示安全域中的所有用户、组与ACL
2.在管理控制台中,为例子HelloWorld加上一个ACL, 使安全域中的一个用户与一个组可以有访问Helloworld的权限。所选的组不要包含所选的那个用户
3.重启WebLogic服务器,然后用以下URL访问HelloWorld
http://localhost:portnumber/HelloWorld
输入一个没有包含在HelloWorld的ACL中的用户名与口令,这时会出现一个消息告诉你没有权限访问HelloWorld。
然后再输入一个包含在HelloWorld的ACL中的用户名与口令(可以是单个用户也可以是组中的成员),那么HelloWorld会被装载并显示Hello World的信息。
WebLogic Server 6.0为安全域提供了一个新的管理体系结构。该管理体系结构通过Mbeans实现,因此可以从管理控制台来管理安全域。如果你使用的是老版本WebLogic服务器的安全域,你应该按照以下步骤将安全域迁移到新的体系结构。
ü 如果你使用的是Window NT, UNIX或者LDAP安全域,那么你可以用管理控制台的Convert WebLogic Properties属性把安全域转换到新的体系结构中。不过,在管理控制台,你只能查看Window NT, UNIX或者是LDAP安全域中的用户、组以及ACL,要管理用户与组,仍然需用Window NT、UNIX或者是LDAP环境所提供的工具。
ü 如果使用的是定制安全域,那么你可以按照“安装定制安全域”中的步骤来指定有关用户、组以及ACL如何存储在定制安全域中的信息。
ü WebLogic服务器不再使用委托安全域(Delegating security realm)。如果你使用的是委托安全域,那么你应该选择另一种安全域来保存用户、组与ACL
ü 如果你使用的是RDBMS安全域,那么你应该用以下方式中的一种来转换你所使用的安全域。
如果你不想改变RDBMS安全域的源,那么你应该按照“配置RDBMS安全域”中的步骤新建一个RDBMS安全域类的实例并定义有关连接数据库的JDBC驱动程序的信息以及有关安全域所使用的模式的信息。这种情况下,实际上在WebLogic Server 6.0中为RDBMS安全域创建了一个Mbean。
如果你对RDBMS安全域进行了定制,那么需要转换源以使用Mbeans。你可以按照/samples/example/security/rdbmsrealm目录中的例子来转换RDBMS安全域。把RDBMS安全域转换到Mbeans后,按照“配置RDBMS安全域”中的说明来定义连接数据库的JDBC驱动程序信息及安全域所使用的模式的信息。
注意:本节将说明如何在文件域中添加用户,如果使用代用安全域,那么需要使用相应安全域所提供的管理工具来定义用户。
用户是可以在WebLogic服务器的安全域中进行身份验证的实体。用户可以是人也可以是一个软件实体,例如Java客户端软件。在WebLogic服务器的安全域中每个用户都有唯一的标识,因此管理员必须保证安全域中不存在相同的用户。
在安全域中定义用户需要为每个访问WebLogic服务器安全域中的资源的用户指定一个唯一的名字与口令,你可以用管理控制台的Users窗口来定义用户。
下表描述了Users窗口中的属性
表14-17 用户属性
属性
描述
Name
指用户的名字,区分大小写。用户是一个可以访问WebLogic服务器资源的实体。
Password
用户的口令。口令的长度至少要不少于8个字符。口令区分大小写
File安全域有两个特殊的用户:system与guest
ü System用户具有管理权限。该用户控制系统级的WebLogic服务器操作,如启动与结束服务器,锁定与解锁资源。system用户在安装WebLogic服务器时定义。
ü guest用户是WebLogic服务器自动提供的。在不需要身份验证时,WebLogic将guest标识分配给一个客户,该客户就可以访问任何guest用户可以使用的资源。如果浏览器提示需要输入用户名与口令,那么客户可以作为guest用户登录。Guest用户的用户名与口令分别为guest与guest
system用户及guest用户与WebLoigc服务器安全域的用户具有以下相似之处:
ü 如果这两个用户要访问WebLogic服务器的资源,那么需要有合适的ACL
ü 要对WebLogic服务器的资源进行操作,那么需要提供用户名与口令(或者是数字签名)
为了提供WebLogic服务器的安全性,建议你禁用guest用户。打开管理控制台的Security窗口,复选General标签页的Guest Disabled opetion选项,就可以禁用guest用户。禁用guest用户并未把它删除掉,只是没有人可以以guest用户的身份登录到WebLogic服务器。
在Remove These Users列表框中输入一个用户的名字,点Remove按钮就可以删除一个用户。
有关用户以及WebLogic服务器的访问控制模型,你可以参见“WebLogic安全简介”与“安全基础”中的内容。
注意:本节将说明如何在文件域中添加用户组,如果代用后备安全域,那么需要使用相应安全域所提供的管理工具来定义用户组。
用户组代表了一组具有某些共同点的用户,例如,在公司的同一部门工作。用户组的作用主要是为了对一组用户进行有效的管理。如果在ACL中一个组被授予了一个权限,那么组中的所有成员都具有该权限。
按以下步骤在WebLogic服务器的安全域中注册一个组:
1.点击管理控制台的Group节点
2.点击Create a New Group链接
3.在管理控制台的Group窗口中设置Name属性。
4.选择Users属性并选择需要加入到用户组的WebLogic Server Users。
5.选择Groups属性并选择要加入到用户组的WebLogic Server Groups。
6.点Apply按钮创建一个新的用户组。
BEA推荐在给用户组命名时使用复数。例如,使用administrators而不是administrator。
缺省情况下,WebLogic服务器包含以下用户组:
ü 安全域中的所有用户都是everyone组的成员
ü system用户是administrators组的成员。该用户组给那些负责启动与结束服务器、维护WebLogic服务器运行的用户分配相应的权限。对这个成员组的访问应该被限制。
在Remove These Groups列表框中输入要删除的组的名字,点Remove按钮就可以删除一个组。
有关组以及WebLogic服务器的访问控制模型的更多信息,可以参见“WebLogic安全简介”以及“安全基础”中的内容。
在WebLogic服务器中,如果虚拟主机要求身份验证,那么可以在安全域中定义一个组代表这个虚拟主机。虚拟主机中的用户首先在WebLogic服务器的安全域中定义,然后在把它们加入到代表虚拟机的组中。
用户是否具有访问WebLogic安全域中的资源取决于该资源的访问控制列表ACL。资源的ACL定义了某个用户是否有访问该资源的权限。要定义一个资源的ACL,首先创建该资源的一个ACL,然后指定资源的权限,然后将权限分配给指定的用户与组。
每个WebLogic资源都具有一到多个权限,下表总结了各资源要求验证的功能项。
表 14-18 WebLogic服务器资源的ACL
资源
ACL
要求验证的功能
WebLogic服务器
weblogic.server
weblogic.server.servername
启动
命令行管理工具
weblogic.admin
终止服务器
对服务器加锁
对服务器解锁
MBeans
weblogic.admin.mbean.mbeaninstancename
访问
WebLogic事件
weblogic.servlet.topicName
发送事件
接收事件
WebLogic servlets
weblogic.servlet.servletName
执行
WebLogic JDBC连接池
weblogic.jdbc.connectionPool.poolname
Reserve
Reset
Shink
WebLogic的口令
weblogic.passwordpolicy
对用户解锁
WebLogic JMS收信方
weblogic.jms.topic.topicName
weblogic.jms.queue.queueName
发送,接收
WebLogic JNDI上下文
weblogic.jndi.path
查找
更改
列表
以下是在管理控制台中创建WebLogic服务器资源的ACL的步骤:
1.指定需要用ACL保护的WebLogic服务器资源的名字
例如,为一个名字为demopool的连接池创建一个ACL
2.指定资源的权限
可以为资源的每个权限单独创建ACL,也可以用一个ACL包含资源的所有权限。例如,你可以为JDBC连接池——demopool创建三个ACLs,一个用于reserve权限,一个用于reset权限,一个用于shrink权限。或者只创建一个有reserve,reset与shrink的ACL。
3.指定哪些用户或用户组具有该资源的哪些权限。
在创建WebLogic服务器资源的ACL时,应该使用表14-18表中所列出的语法。例如,如果你要指定JDBC连接池demopool的ACL,那么该ACL的格式应该是welogic.jdbc.connectionPool.demopool。
在启动WebLogic服务器之前,你应该将启动服务器的权限分配给一组用户,以防止未授权的用户启动WebLogic服务器。
缺省情况下,只有系统用户有改变MBeans的权限。BEA建议你限制访问或改变MBeans的用户数。用以下命令访问所有WebLogic Server MBeans:
access.weblogic.admin.mbean=User or Group name
如果用户对Mbean的访问没有成功,那么将返回weblogic.management.NoAccessRuntimeException服务器日志中详细记载了用户访问Mbean的信息。
配置SSL协议
采用安全套接层协议(SSL),两个通过网络连接的应用可以相互进行身份验证,可以对要交换的数据进行加密。SSL协议提供了服务器验证,可选的客户端验证、加密以及数据完整性。
以下是配置SSL协议的步骤:
1.获得一个WebLogic服务器使用的私钥与数字证书。每个使用SSL协议的WebLogic服务器都需要有各自的私钥与数字证书。
2.保存WebLogic服务器的私钥与数字证书。
3.通过管理控制台配置与SSL协议、私钥、数字证书及WebLogic服务器所信任的证书发放机构等相关的属性。这些字段的定义是服务器级的,因此,你必须为每个要使用SSL协议的WebLogic服务器定义上述字段。
以下各小节将详细介绍上述步骤。
有关SSL协议的详细内容,你可以参见“WebLogic服务器安全简介”与“安全基础”中的内容。
要从证书管理机构获得一个数字证书,你应该使用一种称为证书签名请求(Certificate Signature Request,简称CSR)的特殊格式提交你的请求。WebLogic服务器有一个证书请求生成器servlet,你可以用这个servlet创建CSR。证书生成器从根据你所提供的信息生成一个私钥与证书请求文件。然后把这个CSR提交给一个证书管理机构,如VeriSign或Entrust.net。在使用证书请求生成器,前必须先安装并运行WebLogic服务器。
以下是生成CSR的步骤:
1.启动证书请求生成器servlet。该servlet的.war文件位于 /wlserver6.0/config/mydomain/applications目录中。WebLogic服务器在启动时自动安装该.war文件。
2. 在Web浏览器中,输入证书请求生成器Servlet的URL:
https://hostname:port/Certificate
URL中的各部分描述如下:
ü Hostname是运行WebLogic服务器的主机的名字
ü Port是WebLogic服务器监听SSL连接的端口号。缺省为7002
例如,运行WebLogic服务器的主机的名字是ogre,7002是它监听SSL通信的端口,那么在浏览器中输入以下URL来访问证书请求生成器。
https://ogre:7002/certificate
3.证书生成器在web浏览器中装载进一个表单。在表单中填写下表所描述的信息。
表 14-19 证书生成器表单中的字段
字段
描述
Country code
国家的ISO代码,由两个字母组成。美国的ISO国家代码是US
Organizational unit name
你所在部门的名字
Organization name
你所在机构的名字。证书管理机构可能会要求你在这个字段中输入在该机构注册了的域的主机名
E-mail address
管理员的e-mail地址。数字证书将通过邮件发送到这个地址。
Full host name
要安装数字证书的WebLogic服务器的完整主机名。这个名字用来对WebLogic服务器进行DNS查找。例如,node.mydomain.com。web浏览器会对URL中的主机名与数字证书中的名字进行比较。如果改变了主机名,需要重新申请一个数字证书。
Locality name (city)
你所在城镇的名字。如果所使用的许可证按城市授权,那么必须输入授权许可证的城市。
State name
如果你所在的机构在美国,那么在这个字段中输入你所在州的洲名。如果是加拿大,输入你所在省的名字。不要用简写
Private Key Password
对私钥进行加密的口令。如果想使用一个被保护的密钥,那么在这个字段中输入一个口令。当每次使用这个密钥时,你会被要求输入一个口令。如果你指定了一个口令,那么所得到的是一个PKCS-8加密私钥。
如果不使用被保护的密钥,那么不需要设置该字段。
如果使用被保护的私钥,那么需要在管理控制台的Server窗口中,启用SSL标签页上的Key Encrypted属性。
RandomString
加密算法所使用的字符串。你必须记住该字符串。该字符串被加密算法使用,加大解密的难度。因此,你所输入的这个字段应该不易被猜中。你最好在这个字段中使用大写与小写字符、数字、空格以及标点字符。(该字段是可选的)
Strength
所生成的私钥的长度(以位计),私钥越长,就越难被人解密。
如果你使用WebLogic服务器的国内版,你应该选择512-, 768-,或者是1024位的私钥。建议你使用1024位私钥。
4.点Generate Request按钮。
如果你在表单中填了无效的值或没有填写必须的字段,那么证书生成器会给出提示信息,按浏览器的回褪按钮更正错误。
如果所有的字段都填写正确,证书生成器在WebLogic服务器的启动目录下生成以下文件:
ü www_mydomain_com-key.der—这是私钥文件。你应该在管理窗口的SSL标签页上的Server Key File Name字段中输入该文件的名字。
ü www_mydomain_com-request.dem—证书请求文件,使用二进制格式。
ü www_mydomain_com-request.pem—提交到证书管理机构的CSR文件。它包含的数据与.dem文件相同,但是用的是ASCII码,因此你可以把它复制到邮件或者Web表单中。
5.选择一家证书管理机构,按以下步骤从证书管理机构的web站点中购买数字证书。
ü VerSign.Inc.为WebLogic服务器提供了两个选项:Global Site Services为美国境内销售的与出口的 Web浏览器提供了健壮的128位加密选项。Secure Site Services为在美国境内销售的Web浏览器提供128位加密选项,为出口的web browser提供40位加密选项。
ü Entruest.net数字证书为domestic browser versions提供128位加密,为export browser versions提供40位加密。
6. 在选择服务器类型时,请选择BEA WebLogic Server以确保所获得的数字证书与WebLogic服务器兼容。
7.在收到证书管理机构所提供的数字证书后,把它保存在/wlserver6.0/config/mydomain目录中。
注意:如果私钥文件不是由证书生成器生成的,那么应该验证该私钥文件是否符合PKCS#5/PKCS#8 PEM格式。
8.配置WebLogic服务器以使用SSL协议,在Server Configuration窗口的SSL标签页中输入以下信息:
ü 在Server Certificate File Name字段中输入确定WebLogic服务器身份的数字证书所在的目录与文件名。
ü 在Trusted CA File Name字段中输入证书管理机构发放的数字证书所在的完整目录名。
ü 在Server Key File Name字段中,输入WebLogic服务器的私钥文件所在的完整目录名。
有关配置SSL协议的更多信息,请参见“定义SSL协议的配置字段”。
9.如果使用受保护的私钥文件,那么用以下命令行选项启动WebLogic服务器。
-Dweblogic.management.pkpassword=password
其中password是在请求数字证书时输入的口令
获得私钥与数字证书后,把这两个文件放在/wlserver6.0/config/mydomain目录中。
所生成的私钥文件可以是PEM格式的,也可以是Definite Encoding Rules(DER)格式的。不同的格式采用不同的文件扩展名。
PEM(.pem)格式的私钥分别以下面的行开头与结尾:
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
PEM(.pem)格式的数字证书以下面的行开头与结尾:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
注意,有时,一个文件中可能包含多个数字证书,每个证书以BEGIN CERTIFICATE与END CERTIFICATE作为界限,你使用其中的一个证书。典型地,WebLogic服务器的数字证书文件与证书链分别位于不同的文件,数字证书文件的后缀名可以是.pem或.der。使用两个文件的原因是多个WebLogic服务器可能共享同一个证书链。
数字证书文件中的第一个数字证书是WebLogic服务器证书链中的第一个数字证书,文件中的第二个证书是数字证书链中的第二个数字证书,以此类推。文件中的最后一个证书是结束证书链的一个自签名数字证书。
Der(.der)格式的文件包含二进制数据。WebLogic服务器要求文件的扩展名与证书文件的内容相匹配,从而确保所获得的文件具有正确的文件扩展名。
应该对私钥文件以及数字证书文件进行保护。只有WebLogic服务器的系统用户才有这两个文件的读权限,其它用户没有这两个文件的访问权限。如果你用多个证书管理机构发放的数字证书创建一个文件,或者创建一个包含证书链的文件,那么你必须使用PEM格式。WebLogic服务器提供了DER格式与PEM格式相互转换的工具。更多信息,可以参见“WebLogic工具”中的内容。
WebLogic服务器在建立SSL连接时,根据一组可靠的证书管理机构列表检查证书管理机构的身份,从而保证当前所使用的证书管理机构是可靠的。
把数字管理机构的根证书复制到WebLogic服务器的/wlserver6.0/config/mydomain目录中,然后设置“定义SSL协议的配置字段”一节中所描述的属性。
如果使用证书链,那么需要把其它PEM编码的数字证书附加到由数字证书管理机构所发放的数字证书后面。文件中的最后一个数字证书应该是一个自签名的数字证书(即rootCA证书)。
如果要用双向验证,那么应该在可靠CA文件(trusted CA file)中包含证书管理机构的根证书。
定义SSL协议的配置字段
按以下步骤定义SSL协议的配置属性:
1.打开管理控制台
2.打开Server Configuration窗口
3.选择SSL标签页,定义该页中的属性字段。(请参见下面的表格)
4.点Apply按钮保存设置。
5.重启WebLogic服务器
下表描述了Server Configuration窗口SSL标签页上的属性字段。
注意:如果使用PKCS-8保护的私钥,那么在启动WebLogic服务器的命令行中应该指定私钥的口令。
表14-20 SSL协议的配置属性
属性
描述
Enabled
如果要使用SSL协议,那么选中这个复选框。该字段缺省为启用的。
Listen Port
WebLogic服务器监听SSL协议的端口号,缺省为7002
Server Key File Name
WebLogic服务器私钥文件所在的全路径文件名。文件扩展名(.DER或.PEM)表明了WebLogic服务器用哪种方式读取文件的内容。
Server Certificate File Name
WebLogic服务器数字证书所在的目录。文件扩展名(.DER或.PEM)表明了WebLogic服务器用哪种方式读取文件的内容。
Server Certificate Chain File Name
对WebLogic服务器数字证书签名的数字证书所在的目录。文件扩展名(.DER或.PEM)表明了WebLogic服务器用哪种方式读取文件的内容。
如果使用数字证书链,文件中的第一个成员应该是签名WebLogic服务器数字证书的数字证书,第二个成员应该是签名第一个数字证书的文件,以此类推。文件中的最后一个数字证书是一个自签名的数字证书。
Server Certificate Chain File Name属性要求至少一个数字证书。如果文件只有一个数字证书,那么数字证书必须是自签名的(即,必须是一个根CA数字证书)
Client Certificate Enforced
定义了客户端是否需要向WebLogic服务器出示由可靠的证书管理机构发放的数字证书。
Trusted CA File Name
是一个文件,包含WebLogic服务器所信任的证书管理机构发放的数字证书。该文件包含证书管理机构发放的一或多个的数字证书。WebLogic服务器根据文件扩展名(.DER或.PEM)决定用那种方式读文件的内容。
CertAuthenticator
实现CertAuthenticator接口的Java类,关于weblogicl.security.acl.CertAutherticator接口的使用方法,可以参见“把数字证书映射到WebLogic用户”。
Key Encrypted
该属性指定是否需要用口令加密WebLogic服务器的私钥文件。缺省为false。
如果设置了该属性,那么必须使用受保护的WebLogic服务器私钥文件。在重启WebLogic服务器时,使用以下命令行选项启动WebLogic服务器:
-Dweblogic.management.pkpassword=password
其中password是私钥的口令
Use Java
启用本地Java 库的复选框。WebLogic服务器提供了SSL协议的纯Java实现;但在Solaris, Windows NT, IBM AIX平台上,使用本地Java库可以提高SSL协议的性能。该字段缺省为启用本地Java库。
Handler Enabled
该字段决定WebLogic服务器是否拒绝因为以下原因而引起客户验证失败的SSL连接:
1.没有提供所要求的客户数字证书
2.客户端没有提交数字证书
3.客户端所提交的数字证书不是由Trusted CA Filename字段所指定的证书管理机构发放的。
缺省情况下,SSL Handler允许WebLogic服务器把SSL连接引向另一个WebLogic服务器。例如,WebLogic服务器中的一个EJB可以打开另一个WebLogic服务器的HTTPS流。当HandlerEnabled字段启用时,WebLogic服务器的角色是SSL连接的客户端。该字段缺省为启用的。
只有在你要提供SSL连接引出(SSL connection outgoing) 的实现时,才可以禁用该字段。
注意:WebLogic服务器管理接入SSL连接的能力不受SSL Hander的影响。
Export Key Lifespan
一个可出口的私钥被WebLogic服务器在美国境内服务器与出口的客户端之间使用的次数。当超过这个次数时,WebLogic服务器将产生一个新的私钥。如果想使WebLogic服务器更安全,那么应该减少私钥被使用的次数。缺省值为500次。
Login Timeout Millis
SSL连接的超时时限,单位为微秒。缺省为25,000微秒。建立SSL连接要比建立常规连接花更多的时间。如果客户端通过Internet连接,那么考虑到附加的网络滞后,应该调高该字段的值。
Certificate Cache Size
WebLogic服务器存储并标记的数字证书的个数,缺省为3个。详细内容,可以参见“在Applets中使用双向验证”中内容。
Ignore HostName Verification
当WebLogic服务器作为另一个WebLogic服务器的客户端时,禁用所安装的HostName Verifier。
HostName Verifier
实现HostName erifier接口的Java类的名字。有关如何使用weblogic.security.SSL.HostNameVerifier接口的信息,可以参见“使用定制的HostName Verifier”中的内容。
在以前的WebLogic服务器版本中,Server Certificate File Name属性所定义的数字证书可能是一个自签名的无效数字证书。这不是一个很好的安全策略,因此目前的WebLogic服务器版本要求同时定义Server Certificate File Name以及Server Certificate Chain File Name属性。
如果WebLogic服务器使用双向认证,那么客户端需要向WebLogic服务器出示数字证书,WebLogic服务器根据一个可靠的证书管理机构列表来验证数字证书。
关于如何配置WebLogic服务器的SSL协议以及证书验证的内容,可以参见“配置SSL协议”部分。
把WebLogic服务器使用的数字管理机构根证书复制到/wlserver6.0/config/mydomain目录中。在双向认证中,客户端需要出示由这些可靠的证书管理机构之一所发放的数字证书。
要启用双向认证,在管理控制台的Server Configuration窗口中,选SSL标签页中的Client Certificate Enforced选项。该选项缺省为禁用的。
可以用SSL协议保护与RMI远程对象的IIOP连接。SSL协议通过身份验证以及加密对象之间所交换的数据保护连接。要用SSL协议保护RMI上的IIOP连接,你需要:
1.配置WebLogic服务器使用SSL协议。详细信息,可以参见“配置SSL协议”中的内容。
2.把客户端ORB(Object Request Broker,对象请求代理)设置为使用SSL协议。有关如何配置客户端ORB的SSL协议,可以参考所使用的ORB产品的文档。
3.用host2ior工具把WebLogic服务器IOR打印到控制台中。Host2ior工具打印两个版本的IOR:一个是SSL连接的,一个是非SSL连接的。IOR的头指定了该IOR是否可以用于SSL连接。
4.使用SSL IOR获得访问CosNaming服务的初始引用。CosNaming服务被用来访问WebLogic服务器的JNDI树。
有关如何在IIOP上使用RMI的更多内容,可以参考 Programming WebLogic IIOP over RMI(TBD)中的内容。
应该保护用来访问WebLogic服务器资源的口令。过去,用户名与口令以明文的形式存储在WebLogic服务器的安全域中。现在WebLogic服务器对所有口令进行散列化。当WebLogic服务器获得一个客户端请求时,客户端所输入的口令被散列化,然后把散列化结果与所保存的散列化口令进行比较,看它们是否相互匹配。
每个filerealm.properties文件都有一个与它关联的SerializedSystemIni.dat文件,这个文件被用来散列化口令。在安装时,SerializedSystemIni.dat文件保存在/wlserver6.0/config/mydomain目录下,如果该文件被破坏,那么就需要重新配置WebLogic服务器。
我们建议你采用以下步骤:
ü 备份SerializedSystemIni.dat文件。
ü 设置SerializedSystemIni.dat文件的访问权限,例如只允许WebLogic服务器的管理员有读写这个文件的权限,其它用户没有这个文件的任何权限。
如果你使用的是weblogic.properties文件,并且想散列化这个文件中的口令,你可以用管理控制台主窗口的Convert weblogic.properties选项将weblogic.properties文件转换为config.xml文件。
Config.xml文件中的口令不是明文的,而是经过加密并被散列化的口令。被加密的口令不能从一个域复制到另一个域,而是应该使用明文口令替换config.xml中被加密的散列化口令。管理控制台在下一次写文件时将加密并散列化口令。
要保护WebLogic服务器的口令,执行以下操作:
1.打开管理控制台
2.打开Security Configuration窗口
3.选择Passwords标签页。定义该标签页中需要配置的属性(详细信息,参见下表)。
4.点Apply按钮保存所做的设置
5.重启WebLogic服务器。
下表详细描述了Security Configuration窗口的Password标签页上的各个属性。
Table 14-21 口令保护属性
属性名
描述
Minimum Password Length
口令的长度,至少为8个字符。缺省为8个字符
Lockout Enabled
是否需要锁住某个登录无效的帐号。缺省情况下,该属性被启用。
Lockout Threshold
当一个用户试图登录到一个用户帐户,因口令不对而失败,那么多少次这样的失败登录后将锁住这个帐号。以后对该帐号的访问(即使是username/password不正确)将引发Security异常;在管理员对该帐号进行解锁前,或在锁住期限内,该帐号一直处于锁住的状态。注意非法登录必须在Lockout Reset Duration属性所定义期限内。默认为5
Lockout Duration
该属性定义了当某一帐户因为在Lockout Reset Duration期限内发生非法登录而被锁住后,多长时间内该用户帐号不能被使用。默认为30分钟。要解开一个被锁住的用户帐号,你必须拥有weblogic.passwordpolicy的unlockuser权限。
Lockout Reset Duration
该属性定义了在多长时间里,非法登录某一帐号将导致该帐号被锁住。
当某一帐号在该属性定义的时间范围内,被非法登录的次数超过了Lockout Threshold属性所定义的值,那么该帐号将被锁住。例如,该属性被设置为5分钟,当帐号在6分钟内被被非法登录了3次,那么该帐号不会被锁住,但是,如果在5分钟内,发生了5次非法登录,那么该帐号将被锁住。
缺省为5分钟。
Lockout Cache Size
指定无效的或非法的登录意图的缓存大小。缺省为5
在WebLogic服务器中,你可以创建一个审计提供者来接收与处理安全事件布告,例如身份验证请求、失败的或成功的授权以及无效数字证书等。
要使用审计提供者,首先要实现weblogic.security.audit.AuditProvider接口。然后用管理控制台安装并激活该接口的实现类。
要安装审计提供者,需要在Security Configuration窗口的Audit Provider Class字段中输入实现AuditProvider接口的类名。然后重启WebLogic服务器。
有关编写审计提供者的更多信息,可以参考“审计安全事件”中的内容。有关创建连接过滤器的例子,可以参考WebLogic服务器的/samples/examples/security目录中的LogAuditProvider例子。
连接过滤器根据客户端的源以及协议来决定是否接受客户端的连接请求。当客户端连接WebLogic服务器后,WebLogic服务器把客户端的IP地址、端口号、协议(HTTP, HTTPS, T3, T3s或IIP)以及WebLogic服务器的端口号传递给连接过滤器。检验了这些信息后,你可以决定是允许连接,还是引发FilterException来结束连接。
要使用连接过滤器,必须先实现weblogic.security.net.ConnectionFilter接口。然后使用管理控制台安装实现该接口的Java类。具体的步骤为:打开管理控制台的Security Configuration窗口,设置General标签页的Connect Filter字段,然后重启WebLogic服务器。
有关编写连接过滤器的详细信息,可以参考“过滤网络连接”中的内容。有关创建连接过滤器的例子,可以参考WebLogic服务器的/samples/examples/security目录中的内容。
设置Java安全管理器
当你在Java 2(JDK 1.3)上运行WebLogic服务器时,WebLogic服务器使用Java安全管理器进一步控制对WebLogic服务器资源的访问。JVM内建的安全机制需要一个安全策略文件。Java安全管理器使用一组授予给CodeSource或SignedBy类的权限。这些权限确定了运行在一个JVM实例中的类是否可以执行某项运行时操作。多数情况下,威胁安全的不大可能是运行在JVM中的恶意代码,因此Java安全管理器并不是必要的。当一个应用服务提供者使用了WebLogic服务器而且运行了未知的类,这种情况下Java安全管理器是必要的。如果要在WebLogic服务器中使用Java安全管理器,那么启动WebLogic服务器时应该使用-Djava.security.manager属性。
注意:在以前的版本中,启用Java安全管理器通过在启动WebLogic服务器时设置-DwebLogic.security.manager属性来实现。注意WebLogic Server 6.0及以后的版本在一点的不同。
Java安全管理器需要一个安全策略文件来定义权限。在启动WebLogic服务器时用-Djava.security.policy属性指定安全策略的全路径名。如果启用了Java安全管理器但没有指定策略文件,java安全管理将使用$Java_HOME/lib/security目录的java.security与java.policy文件中所定义的安全策略。
WebLogic服务器包含了一个名字为weblogic.policy的安全策略文件示例,该文件提供了一组缺省的权限。你可以在该文件的基础上创建自己的安全策略文件。
1.编辑webLogic.policy文件的以下行,用你的WebLogic服务器所在的目录替换相应的部分
grant codebase “file:./c:/weblogic/-”{
permission java.io.FilePermission “c:${/}weblogic${/}-”,...
注意:该变更假定WebLogic服务器的安装目录结构与BEA WebLogic Server Installation Guide中的BEA主目录中所描述的一样
2.如果要运行管理控制台,在weblogic.policy文件中加入以下内容:
grant {
permission java.io.FilePermission
"D:{/}BEA${/}wlserver600${/}weblogic${/}management${/}console${
/}-", "read";
permission java.io.FilePermission
"D:{/}BEA${/}wlserver600${/}config${/}mydomain${/}applications$
{/}.wl_temp_do_not_delete${/}weblogic${/}management${/}console$
{/}-", "read";
permission java.util.PropertyPermission "user.*", "read";
};
3.如果CLASSPATH中包含其它目录或者在别的目录中部署应用,那么应该将这些目录的权限控制加到weblogic.policy文件。
BEA建议你采取以下防范措施:
ü 对weblogic.policy文件进行备份,并将备份放在一个安全的地方。
ü 设置weblogic.policy文件的访问权限,只有WebLogic服务器管理员才有此文件的读写权限,其它用户不具有weblogic.policy文件的读写权限。
在启动WebLogic服务器的Java命令行上设置java.security.manager与java.security.policy属性。这两个属性执行以下功能:
ü java.security.manager属性指定Java虚拟机使用安全策略。不需要为这个属性指定任何参数。
ü java.security.policy属性指定了被JVM使用的安全策略文件所在的位置。该属性的参数应该设置为weblogi.policy文件的路径名加文件名。
如果要在WebLogic服务器中使用安全管理器与weblogic.policy文件,在启动时使用以下命令
$ java ... -Djava.security.manager/
-Djava.security.policy==D:/BEA/wlserver600/lib/weblogic.policy
有关Java安全管理器的详细信息,请参见Java2的Javadoc文档。
可以用RecordingSecurityManager工具发现WebLogic服务器在启动与运行过程中所出现的权限问题。该工具输出那些能够加到安全策略文件中的权限以解决该工具所发现的权限问题。你可以从BEA Developer’s Center获得RecordingSecurityManager。
安全上下文传播使得运行在WebLogic服务器中的Java应用可以访问BEA WebLogic企业(WebLogicEnterprise,简称为WLE)域中的资源与对象。WebLogic服务器的BEA WLEC(WebLogic Enterprise Connectivity)组件提供了安全上下文传播功能。
如果使用安全上下文传播,一个WebLogic服务器安全域中的用户安全标识将作为IIOP请求的服务环境上下文的一部分被传播,这里的IIOP请求通过作为WLEC连接组成部分的网络连接发送给WLE域的。WLEC连接池中的每个网络连接都通过一个已定义的用户标识认证过。
为了使用安全上下文传播,需要为每个从WebLogic服务器访问的WLE域创建WLEC连接池。WLEC连接池由IIOP连接组成。WebLogic服务器环境中的Java应用从WLEC连接池取得IIOP连接并用这些连接调用WLE域中的对象、激活WLE域中的操作。
在使用安全上下文传播之前,需要在startAdminWebLogic.sh 或者startAdminWebLogic.cmd 文件的CLASSPATH环境变量中加上WLE_HOME/lib/wleorb.jar WLE_HOME/lib/wlepool.jar
更多资料,请参照“使用WLEC”。
要实现安全上下文传播的步骤如下:
1. 为安全上下文传播创建一个新的WLEC连接池。要创建WLEC连接池,选择管理控制台左窗格的Service->WLEC节点。在右窗格单击“Create a new WLEC Connection Pool”链接。定义下表中的属性:
表14-22 General标签页中的WLEC连接池属性
属性
说明
Name
WLEC连接池的名字。每个WLEC连接池的名字必须唯一。
Primary Addresses
用来在WLEC连接池和WLE域之间建立连接的IIOP监听器/处理器的地址列表。每个地址的格式是//hostname:port。
地址必须要和UBBCONFIG文件中定义的ISL地址匹配。多个地址使用分号分开,例如://main1.com:1024;//main2.com:1044。
如果WLEC连接池要使用SSL协议,那么在IIOP的监听器与处理器前加上corbalocs前缀。例如:
corbalocs://hostname:port.
Failover Addresses
不能与Primary Addressed字段定义的地址建立连接时所使用的IIOP监听器/处理器的地址列表。多个地址使用分号分开。这个字段时可选的。
Domain
WLEC连接池所连接的WLE域的名字。一个WLE域只能有一个WLEC连接池。域的名字必须与WLE域的UBBCONFIG文件中的RESOURCES部分的domainid参数匹配。
Minimum Pool Size
在WebLogic服务器启动时,WLEC连接池的初始IIOP连接数,缺省为1
Maximum Pool Size
WLEC连接池的最大IIOP连接数,缺省为1。
2. 点Create按钮
3. 定义Connection Pool Configuration窗口的Security标签页上的属性,这样就可以把一个用户的安全上下文传播到WLE域。下表描述了Security标签页中的这些字段。
表14-23Security标签页上的WLEC连接池属性
属性
描述
User Name
一个WLE用户的用户名。只有当WLE域的安全级别为USER_AUTH, ACL或者是MANDATORY_ACL时,才需要定义这个字段
User Password
用户的口令。只有当你定义了User Name字段后,才需要定义这个字段
User Role
WLE用户的角色。只有当WLE域的安全级别为APP_PW, USER_AUTH, ACL, 或者是MANDATORY_ACL时,才需要定义这个字段。
Application Password
WLE应用的口令。只有当WLE域的安全级别为APP_AUTH, ACL或者是MANDATORY_ACL时,才需要定义这个字段。
Minimum Encryption Level
WLE域与WebLogic服务器之间的通信所使用的最低SSL加密级别。可以设置为以下值:0,40,56以及128。缺省为40。0表示数据被签名但没有加密。40, 56,128 是指密钥的长度(以位为单位)。如果最低的级别都不满足,那么WebLogic服务器与WLE之间的SSL连接将失败。
Maximum Encryption Level
WLE域与WebLogic服务器之间的通信所使用的最高SSL加密级别。可以设置以下值:0,40,56以及128。缺省为40。0表示数据被签名但没有加密。40, 56,128 是指密钥的长度(以位为单位)。如果最低的级别都不满足,那么WebLogic服务器与WLE之间的SSL连接将失败。
Enable Certificate Authentication
这是一个复选框,该字段决定是否启用证书验证。
缺省情况下,不使用证书验证。
Enable Security Context
这是一个复选框,如果要把WebLogic服务器的安全上下文传递到WLE域,那么应该启用该选项。
该属性缺省为禁用的。
4. 点Apply按钮保存所做的设置,然后重启WebLogic服务器。
5.运行tpusradd命令。该命令的作用是把WebLogic服务器中的用户定义为在WebLogic Enterprise域中的授权用户
6.设置ISL命令的-E选项。该命令的作用是使IIOP监听器/处理器可以监听并利用来自WebLogic服务器的安全上下文。在-E选项中,需要指定一个principal name。Principal name(TBD)定义了WLEC连接池使用什么样的principal来登录到WebLogic Enterpise域。Principal name应该与WLEC连接池的User Name属性匹配。
当WebLogic服务器环境与WebLogic Enterprise环境之间的通信使用安全验证时,这意味着在WebLogic服务器与WebLogic Enterprise环境的CORBA对象或RMI对象或者是EJB建立连接时,会重新执行SSL握手操作。如果要使一个SSL网络连接同时支持多个客户端请求,那么必须使用证书验证。以下是设置证书验证的步骤:
1.获得principal(TBD)的数字证书。把私钥文件保存在WebLogic Enteroprise的TUXDIR/udataobj/security/keys目录中。
2. 运行tpusradd命令。该命令的作用是把principal(TBD)定义为一个WebLogic Enterprise用户。
3.定义UBBCONFIG文件的IIOP监听器/处理器,使用-E选项表明该principal是用于验证的。
4.在WebLogic服务器的管理控制台创建一个WLEC连接池时,在User Name属性中定义principal(TBD)名字。
5.获得IIOP监听器/处理器的数字证书。
6.在ISL命令中用SEC_PRINCIPAL_NAME选项指定数字证书。使用-s选项表明WebLogic Enterprise域与WebLogic服务器安全域之间的通信使用安全端口。
有关UBBCONFIG文件的更多信息,参见WLE文档的“创建配置文件”部分。
有关corbalocs前缀的更多信息,可以参见WLE文档的“理解Bootstrap对象的地址格式”部分。
有关WLE安全级别的更多内容,可以参见WLE文档的“定义安全级别”部分。
本章将介绍以下内容
ü 事务管理概述
ü 事务的配置
ü 对事务的监控与日志记录
ü 将服务器迁移到另一机器
本章将介绍如何用管理控制台来配置及管理事务。有关如何通过JDBC连接池使JDBC驱动器参与到分布式事务的内容,请参见 “管理JDBC连接”章节中的内容。
Weblogic服务器的许多功能部件,如Java事务编程接口(JTA)可以通过一些工具来配置,管理控制台为这些工具提供了接口。有关启动管理控制台的步骤,可以参见 “配置Weblogic 服务器与集群”中的内容。通过设置事务属性,你可以配置事务环境的以下方面:
ü 事务超时与期限
ü 事务管理器的行为
ü 事务日志文件的前缀
在配置事务环境之前,你应该熟悉事务所涉及到的J2EE组件,如EJB、 JDBC与JMS。
ü EJB(Enterprise JavaBeans)通过JTA实现对事务的支持。分发描述符文件的部分内容就与事务处理相关的。有关如何用EJB与JTA进行编程的信息,可以参见 “Weblogic Enterprise JavaBeans”编程中的内容。
ü JDBC是Java访问关系型数据库的标准接口。JTA通过JDBC驱动程序与事务数据源提供了对连接的事务支持。有关如何使用JDBC与JTA编程的信息,可以参见“Weblogic JDBC编程”中的内容。
ü JMS(Java消息服务)通过JTA来支持涉及多个数据源的事务。Weblogic JMS是与XA兼容的资源管理器。有关任何使用JMS与JTA编程的信息,请参见“WeblLogic JMS编程”中的内容。
有关如何配置J2EE组件的详细信息,请参见本文档的应用部分以及管理控制台的在线帮助。
管理控制台提供了所有JTA配置属性的缺省值,如果没有正确地设置事务属性,WebLogic服务器不能正确启动。
JTA的配置作用于整个域,即配置属性将影响该域中的所有服务器,但JTA的监控以及日志记录在服务器级执行。
在配置了WebLogic JTA以及事务参与者后,系统就可以用JTA API以及WebLobi JTA扩展来执行事务。
事务属性的配置可以是静态的也可以是动态的。静态配置就是指在运行应用以前配置事务属性;动态配置是在应用运行的时候配置事务的属性。在运行应用之前,必须先设置TransactionFilePrefix属性。
以下是配置事务属性的步骤:
1. 启动管理控制台
2. 在左边的窗格中选择一个域节点,将显示缺省的Configuration标签页。
3. 点击JTA标签页
4. 指定每一个属性的值,或者使用缺省值
5. 点Apply按钮保存新的属性值。
6. 在配置服务器时必须设置Transaction Log File Prefix实行。有关设置日志属性的更多内容,请参见“事务的监控以及日志记录”中的内容。
表15-1描述了WebLobi服务器的事务属性,以及它们的有效值与缺省值。有关这些属性的详细信息,请在管理控制台的在线帮助中查看“域”主题下的内容。
表15-1事务属性
属性
描述
Timeout Seconds
在系统进行强制回滚之前,所允许的事务活动时间,以秒为单位
Abandon Timeout Seconds
事务协调器完成某一事务的最长时间,以秒为单位
Before Completion Iteration Limit
在完成beforeCompleteion次回调后,系统将进行强制性回滚。
Max Transactions
每个服务器上最多能有多少个并发活动事务
Max Unique Name Statices
每个服务器最多能同时跟踪多少个事务名
Forget Heuristics
是一个布尔类型的值。事务管理器根据这个值决定是否让一个资源忘记any transaction with heuristic outcome(TBD)
通过管理控制台,你可以对事务进行监控并指定事务日志文件的前缀。事务的监控及日志记录在服务器级进行,每个服务器都有自己的事务统计信息及一个事务日志文件。
显示事务统计信息及设置事务日志文件的前缀的步骤如下:
1.启动管理控制台
2.点击左窗格的Server节点
3.选择一个服务器
4.选Monitoring标签页
5.选JTA页面。事务的统计信息显示在JTA对话框中。(你也可以点击monitoring text 链接,按照资源或名称来监视事务,或者监视所有活动事务)
6.选Logging标签页
7.选JTA标签页
8.输入事务日志文件的前缀,然后点击Apply按钮保存设置。
有关事务监控与日志记录的详细信息,请在管理控制台的在线帮助中查看“服务器”主题下的内容。
当应用服务器迁移到另一台机器时,它必须能在硬盘中找到事务日志文件。因此,在把服务器迁移到另一台机器后,建议你在重新启动服务器之前先把所有的日志文件迁移到新机器中。这样可以保证恢复的正常进行。在迁移后,如果事务日志文件的路径名不同与先前的路径名,那么在启动服务器前应该把TransactionLogfilePrefix属性值设置为日志文件的新路径。
在服务器失败后迁移事务日志时,那么启动新机器上的服务器之前,所有的事务日志文件必须都是可用的。例如,你可以把事务日志保存在一个双口硬盘中,失败前的机器与新机器都能使用它。与有计划的迁移一样,如果新老机器的事务日志文件路径不一样,那么在重启服务器前,首先要把TransactionLogFilePrefix属性值设为日志文件新路径。务必要记住,重启服务器之前,所有的事务日志文件都是可用的,否则,系统崩溃时所提交的事务将不能被正确解析,从而导致事务的不一致性。
WebLogic服务器通过连接池与JDBC驱动程序相连。通过管理控制台,你可以设置或管理连接池。本章节介绍以下与JDBC连接相关的内容:
ü 用管理控制台管理JDBC
ü JDBC配置指南
ü 连接池
ü 多池
ü 数据源
你可以用管理控制台完成以下工作:
ü 定义JDBC连接的监控属性
ü 管理已建立的连接
有关如何打开管理控制台的信息,可以参见“WebLogic 服务器与集群”中的内容
有关JDBC与JDBC驱动程序的详细信息,请参见“WebLogic JDBC编程指南”中的“WebLogic JDBC概述”
有关JDBC属性的完整列表,可以参见以下网页的“WebLogic 管理控制台在线帮助”部分。
http://e-docs.bea.com/wls/docs60/ConsoleHelp/index.html.
JDBC配置指南
本节将介绍如何配置本地事务与分布式事务的JDBC。
JDBC配置概述
在配置JDBC连接前,先要创建一个连接池与一个数据源对象(建议你使用这种方式,但某些情况下这是可选的),下表列出了如何在本地以及分布式事务中使用这些对象:
表14-1 JDBC配置指南
描述/对象
本地事务
分布式事务
XA驱动程序
分布式事务
非XA驱动器
功能
本地事务
两阶段提交
单一资源管理器与单一数据库示例
两层JDBC驱动程序
WebLogic jDriver for Oracle, Microsoft SQL Server, and Informix
第三方的兼容驱动程序
WebLogic jDriver for Oracle/XA
第三方的兼容驱动程序
WebLogic JTS驱动程序
多层JDBC驱动程序
WebLogic JDBC JTS, Pool,以及RMI驱动程序
数据源
建议使用DataSource对象
必须使用TxDataSource
建议使用TxDataSource
注意:如果超过一个资源,那么将enable two-phase commit属性设置为true
注意:分布式使用WebLogic jDriver for Oracle/XA,它是WebLogic jDriverfor Oracle的事务模式
支持本地事务的驱动程序
ü 支持JDBC Core 2.0 API(java.sql)的JDBC 2.0驱动程序有以下几种:WebLogic jDrivers for Oracle, Microsoft SQL Server与Informix。通过这些API ,你可以创建建立数据连接、进行查询、修改数据源以及处理结果集所要的对象。
支持分布式事务的驱动程序
ü 支持JDBC 2.0分布式事务标准扩展接口(javax.sql,XADataSource, javax.sql.SAConnection, javax.transaction.xa.SAResource)的JDBC 2.0驱动程序有WebLogic jDriver for Oracle/XA。
只支持JDBC 2.0 core API但不支持JDBC 2.0分布式事务标准扩展接口的JDBC驱动程序不能参与分布式事务, 但如果把TxDataSource的两阶段提交属性设置为true的话,那么这类驱动程序也可以参与分布式事务。
配置JDBC驱动程序
本节将介绍如何配置本地事务驱动程序以及分布式事务驱动程序。
如何配置支持本地事务的驱动程序
要配置本地事务驱动程序,应该对JDBC连接池作以下设置:
ü 将Driver Classname属性设置为支持java.sql.driver接口的类的名字
ü 指定数据属性。这些属性将被传递给特定的驱动程序
有关WebLogic 两层JDBC驱动程序的更多信息,可以参见BEA文档的以下内容:“装及使用WebLogic jDriver for Oracle”“ 安装及使用WebLogic jDriver for Informix”与 “安装并使用WebLogic jDriver for Microsoft SQL Server”。如果使用第三方驱动程序,请参见供应商所提供的文档。
下表是一个使用WebLogic jDriver for Oracle的连接池配置示例。
表14-2 WebLogic jDriver for Oracle的JDBC连接池配置
属性类型
属性值
名字
MyConnectionPool
目标
Myserver
驱动程序的类名
Weblogic.jdbc.oci.driver
初始容量
0
最大容量
5
容量增长的步长
1
属性
User=scott;password=tiger;server=localdb
下表是一个使用WebLogic jDriver for Oracle的数据源配置示例。
表14-3 WebLogic jDriver for Oracle: 数据源配置
属性类型
属性名字
名字
MyDatasource
目标
myserver
JNDI名字
MyConnection
连接池的名字
myConnectionPool
配置分布式事务的XA JDBC驱动程序
要使XA JDBC驱动程序参与到分布式事务中,需要对JDBC连接池做以下设置:
ü 将Driver Classname属性设置为支持javax.sql.XADataSource接口的类的名字。
ü 必须设置数据库属性,这些属性将作为数据源属性传递给所指定的XADataSource。有关WebLogic jDrive for Oracle的数据源属性可以参见“WebLogic jDriver for Oracle/XA数据源属性”中的内容。有关第三方驱动程序的数据源属性,可以参见供应商所提供的文档。
下表是一个使用WebLogic jDriver for Oracle/XA的JDBC连接池配置。
表14-4 WebLogic jDriver for Oracle/XA:连接池配置
属性类型
属性值
名字
FundsXferAppPool
目标
Myserver
驱动程序的类名
Weblogic.jdbc.oci.xa.XADataSource
初始容量
0
最大容量
5
容量增长的步长
1
属性
User=scott;password=tiger;server=localdb
下表是一个使用WebLogic jDriver for Oracle/XA的TxDataSource的配置。
表14-5 WebLogic jDriver for Oracle/XA:TxDataSource配置
属性类型
属性值
名字
FundsXferAppPool
目标
Myserver
JNDIName
Myapp.fundsXfer
连接池的名字
Myapp.fundsXfer
通过配置,JDBC连接池可以使用第三方XA模式的驱动程序。在这种情况下,数据源的属性是通过对XADataSource实例的自省(reflection)来配置的。也就是说,对于一个abc属性,XADataSource实例必须支持名字分别为getAbc与segAbct的set与get方法。
下表是一个使用Oracle Thin驱动程序的JDBC连接池配置。
表14-6 Oracle Thin Driver:连接池配置
属性类型
属性值
名字
jtaXAPool
目标
myserver,server1
驱动程序的类名
oracle.jdbc.xa.client.OracleXADataSource
初始容量
1
最大容量
20
容量增长的步长
2
属性
user=scott;password=tiger;
url=jdbc:oracle:thin:@baybridge:1521:bay817
下表是一个使用Oracle Thin driver的TxDataSource配置示例。
表14-7 Oracle Thin Driver:TxDataSource配置
属性类型
属性值
名字
jtaXADS
目标
myserver, server1
JNDI名字
jtaXADS
连接池名字
JtaXAPool
下表是一个使用Cloudscape驱动程序的JDBC连接池配置的例子:
表 14-8 Cloudscape:连接池配置
属性类型
属性值
名字
jtaXAPool
目标
Myserver, server1
驱动程序的类名
COM.cloudscape.core.XADataSource
初始容量
1
最大容量
10
容量增长的步长
2
属性
DatabaseName=CloudscapeDB
是否支持本地事务
true
下表是一个使用Cloudscape驱动程序的TxDataSource配置:
表14-9 Cloudscape:TxDataSource配置
属性类型
属性值
名字
jtaZADS
目标
myserver, myserver1
JNDI名字
JTAXADS
连接池名字
JtaXAPool
WebLogic jDriver for Oracle/XA 的数据源属性
表14-10列出了WebLogic jDriver for Oracle 驱动程序支持的数据源属性。JDBC 2.0列指的是某一数据源属性是否是JDBC 2.0的标准数据源属性(Y)或者是WebLogic服务器对JDBC的扩展(N)。
Option列指某一数据源属性是否是可选的。有Y*标记的属性对应于表14-11所列出的xa_open字符串中的字段。如果没有指定这些属性的值,它们的缺省值将从openString属性获得。如果指定了这些属性的值,那么它们的值应与openString属性的值匹配。如果属性不匹配,在进行XA连接时,将引发SQLException异常。
那些有N*标记的强制性属性必须与Oracle xa_open字符串的对应字段匹配。你在设置Oracle xa_open字符串时指定这些属性。如果没有指定属性或者所指定的属性与Oracle xa_open字符串的对应字段不匹配,那么在进行XA连接时将引发SQLException异常
表14-10 WebLogic jDriver for Oracle/XA的数据源属性
属性名
类型
描述
JDBC2.0
Optional
缺省值
databaseName
(不使用)
String
数据库的名字
Y
Y
None
dataSourceName
String
数据源的名字,用该字段命名XADataSource
Y
Y
连接池的名字
description
String
对数据源的描述
Y
Y
None
networkProtocol
(不使用)
String
与服务器通信的网络协议
Y
Y
None
password
String
数据库口令
Y
N*
None
portNumber
(不使用)
int
服务器监听请求的端口号
Y
Y
None
roleName
(不用)
String
初始的SQL角色名
Y
Y
None
serverName
String
数据库服务器的名字
Y
Y*
None
user
String
用户的帐号
Y
Y*
None
openString
String
Oracle’s XA open string
N
Y
None
oracleXATrace
String
指明是否需要启用XA跟踪输出,如果启用(设置为true),那么在启动服务器的目录下将有一个形式为xa_poolnamedate.trc文件
N
Y
true
表14-11列出了与Oracle的xa_open字符串中的字段相匹配的数据源属性
表14-11 与与Oracle的xa_open字符串中的字段相匹配的JDBC数据源属性
Oracle xa_open字符串中的字段
JDBC 2.0数据源属性
是否是可选的
acc
user, password
N
sqlnet
ServerName
Y
注意必须在Oracle的xa_open字符串中指定Threads=true。有关Oracle的xa_open字符串中各字段的描述,可以参见Oracle文档
配置分布式事务的Non-XA JDBC驱动程序
在配置连接池时,如果要使non-XA JDBC驱动程序参与到分布式事务中,那么必须指定JDBC Tx数据源的enableTwoPhaseCommit属性(支持XAResource接口的资源会忽略这个参数。)
如果enableTwoPhaseCommit属性设置为true,那么在XAResouc.prepare()方法调用时,non-XA JDBC资源总是返回XA-OK。在随后的XAResource.commit()或XAResource.roolback()调用中,资源会进行提交或回滚。如果资源提交或回滚失败,那么就会得到一个heruristic错误结果,从而应用数据可能会因为heruristic失败而出现不一致。
如果enableTwoPhaseCommit设置为false,那么non-XA资源会造成XAResource.prepare()调用的失败。因为Commit()在这种情况下会引发SystemException异常,因此这种机制确保了事务只有一个资源参与。如果只有一个资源参与到事务中,那么一阶段优化会绕过XAResource.prepare()方法调用,大多数情况下事务都会成功。
下表是一个使用non-XA JDBC驱动程序的JDBC连接池配置示例。
表14-12 WebLogic jDriver for Oracle/XA: 连接池配置
属性类型
属性值
名字
FundsXferAppPool
目标
Myserver
URL
Jdbc:weblogic.:oracle
驱动程序的类名
Weblogic.jdbc.oci.Driver
初始容量
0
最大容量
5
容量的增长步长
1
属性
User=scott;password=tiger;server=localdb
下表是一个使用non-XA JDBC驱动程序的TxDataSource配置示例。
表14-13 WebLogic jDriver for Oracle/XA: TxDataSource配置
属性类型
属性值
名字
fundsXferDataSource
目标
myserver, server1
JNDI名字
myapp.fundsXfer
连接池的名字
FundsXferAppPool
EnableTwoPhaseCommit
true
连接池中存放了一组JDBC连接,这些连接在连接池注册时(通常是在启动WebLogic服务器的时候)创建的。应用程序从连接池中取出一个连接,然后用它连接数据库,当应用使用完这个连接时,应用将关闭这个连接,并将该连接返回到连接池中。使用连接池对性能及应用设计可以带来以下好处:
ü 使用连接池比每次在客户端有连接数据库请求时再新建一个连接有效的多。
ü 不需要在应用中写硬代码,如DBMS口令
ü 可以限制DBMS的连接个数,这样可以有效管理DBMS连接的licens所带来的限制。
ü 可以更换数据库管理系统而不需要更改应用代码。
可以用管理控制台来创建连接池并将所创建的连接池分配给某个服务器或某个域。要建立一个连接池,需要做如下操作:创建一个连接池,将它分配给一个服务器或一个域,然后使它与一个数据源关联。在启动时,WebLogic将打开与数据库的连接,并将这些连接加入到连接池中。连接池配置属性的完整列表,请参考以下网址中WebLogic 管理控制台在线帮助中JDBC属性列表中的配置表。
http://e-docs.bea.com/wls/docs60/ConsoleHelp/index.html.
管理控制台的以下标题中解释了进行连接池配置所要完成的步骤:
ü 创建一个JDBC数据源,也可以参见“数据源”中的内容
ü 创建JDBC连接池
ü 克隆连接池
ü 分配连接池
你也可以使用API,在运行的WebLogic服务器中通过程序来创建连接池,有关这方面的内容,请参见WebLogic JDBC编程指南中的“创建动态连接池”中的内容。
在建立了JDBC连接后,可以使用管理控制台来管理连接池。你可以在管理控制台的以下标题中找到如何管理连接池的内容。
ü 监控一个连接池的所有实例
ü 删除一个连接池
多连接池为单个服务器的WebLogic服务器配置提供负载平衡以及备份连接池的支持。一个连接池中的所有连接都是相同的,也就说它们都连接到同一个数据库。而多池中的连接池则可以连接到不同的数据库管理系统。
在使用多池之前,必须先定义或命名一个多池。然后在决定要将哪些先前定义的连接放入到元池中。你可以在管理控制台在线帮助中的以下标题找到有关这些任务的内容。
ü 创建一个JDBC多池
ü 分配JDBC多池
ü 复制一个JDBC多池
多池的管理包括对多池的监控以及在必要时删除多池。
监控JDBC连接池
有关监控JDBC连接池的更多内容,请参见管理员指南中的“监控WebLogic域”中的内容。在管理控制台在线帮助中的以下标题中解释了如何完成这些任务。
ü 监控一个多池的所有实例
ü 删除一个JDBC多池
删除连接池
你可以在管理控制台在线帮助中的以下标题中找到有关如何完成这些任务的内容:
JDBC客户端通过数据源对象获得数据库连接。在使用数据源对象之前,你必须先通过管理控制台创建一个数据源对象,然后将该数据源对象指向一个连接池。
你可以在定义数据源的同时定义用来支持分布式事务的JTA。有关如何在定义数据源对象的JTA,请参见以下网址中的事务管理部分:
http://bernal.beasys.com/stage/docshal/adminguide/managetx.html.
你可以在管理控制台在线帮助的以下标题中,找到有关如何创建数据源的内容:
创建JDBC数据源
复制JDBC数据源
分配一个JDBC数据源
你可以使用管理控制台来监控数据源的状态,甚至在必要时删除数据源。你可以在管理控制台的以下主题中找到如何完成上述任务的内容:
管理一个JDBC数据源的所有实例
删除一个数据源
删除一个JDBC数据源
本章将介绍如何管理WebLogic JMS,包括以下内容:
ü 配置JMS
ü 监控JMS
ü 恢复失败的WebLogic服务器
在管理控制台中可以配置JMS的以下属性:
ü 启用JMS
ü 创建JMS服务器
ü 创建或定制JMS服务器、连接工厂、收信方(队列与主题)、收信方模板、 收信方主键、备份库、会话池、连接使用者。
ü 建立客户JMS应用。
ü 定义极限和配额(TBD)
ü 启用需要的JMS特性,如服务器集群(见下节),并发消息处理,收信方的排序,以及消息的持久化。
有一些WebLogic JMS属性有缺省值,而其它属性需要配置。如果没有正确配置这些属性,那么重启时,WebLogic服务器不会启动JMS。WebLogic产品中有一个JMS配置示例。
当你从老版本迁移到6.1版本时,WebLogic服务器会自动转换配置信息。你可以参见“WebLogic JMS编程指南”的“应用移植”部分的说明。
以下是配置WebLogic JMS属性的步骤:
1.启动管理控制台。
2.在左窗格中选择“Services”下面的“JMS”按钮把列表展开。
3.按照以下内容或管理控制台在线帮助中所描述的步骤来创建及配置JMS对象。
配置完WebLogic JMS后,应用程序可以开始用JMS API发送或接收消息。关如何开发WebLogic JMS应用的更多信息,请见“WebLogic JMS编程指南”。
注意:“WebLogic JMS编程指南”提供了一个JMS属性配置列表,你可以参照这个表来规划WebLogic JMS的配置。
JMS客户端可以通过连接工厂(Connection factory)创建JMS连接。连接工厂根据预先定义的属性来创建连接。
用管理控制台配置连接工厂的步骤如下:
ü 需要配置的属性包括:
1.连接工厂的名字
2.连接工厂的JNDI名字。
3.长期订阅方客户端标识 (Client ID) (关于长期订阅方的更多内容, 请参考“WebLogic JMS编程”)
4.消息传递的缺省属性(即:优先级、存活期及模式)
5. 异步会话的最大重要消息数与过载策略(即消息数达到该最大值时,广播会话将采取的行动)。
6. 是否允许在onMessage()方法中调用close()方法
7. 事务属性(事务超时以及是否可以使用JTA用户事务)
ü 连接工厂关联的目标服务器(WebLogic Servers),用以支持集群。可以用目标服务器限制需要部署连接工厂的服务器、组,或者集群。
WebLogic JMS定义了一个缺省的连接工厂:weblogic.jms.ConnectionFactory。该连接工厂的所有配置属性都使用缺省值。管理控制台在线帮助的“JMS连接工厂”描述了配置属性的缺省值。
如果缺省连接工厂能满足应用的需求,就不需要为应用配置其它连接工厂。
注意:如果用用缺省的连接工厂,那么你不能控制连接工厂将部署到哪个JMS服务器上。如果希望把连接工厂部署到一特定的JMS服务器上,那么需要新建一个连接工厂,然后把它部署到这个JMS服务器上。
有关创建与配置连接工厂的说明,可以参考管理控制台在线帮助中的“JMS连接工厂”。
某些连接工厂属性可以动态配置。如果在运行时改变了动态属性的值,那么新配置只对新连接有效而不影响已经建立的连接。
可以用模板定义多个具有相似属性设置的收信方(destination)。使用模板有以下好处:
ü 在定义新的收信方时,不需要设置所有的属性。你可以先使用模板,然后覆盖那些需要重新设置的属性。
ü 如果要动态改变共享的属性设置,仅需修改模板。
收信方模板的属性在管理控制台的“Templates”节点设置。收信方模板的属性与收信方相同。通常收信方会继承所使用的收信方模板的属性配置,但不包括以下情况:
ü 如果使用了模板的收信方重新设置了某个属性,那么新值有效。
ü 收信方不会继承收信方模板的Name属性,因为Name属性只对收信方模板有效。每个收信方必须明确定义一个唯一的名字。
ü 收信方模板没有定义JNDI Name, Enable Store以及Template属性。
ü 收信方模板没有定义Multicast 属性,因为该属性只对主题(topics)有效。
任何没有被明确设置的收信方属性使用缺省值。如果一个属性没有缺省值,那么必须为收信方模板或收信方设置这个属性的值。如果没有设置,那么不完整的配置信息将导致WebLogic JMS配置失败,从而使WebLogic JMS不能启动。
有关如何创建与配置模板的详细信息,可以参考管理控制台在线帮助的“JMS 模板”。
收信方的的排序方式用收信方主键(Destination Key)来定义。
在管理控制台的Destination Keys节点中,配置收信方主键的以下属性:
ü 收信方主键的名字
ü 用来排序的属性名
ü 主键的类型
ü 排序的方向(升序还是降序)
有关如何创建与配置收信方主键的详细信息,可以参考管理控制台在线帮助中的“JMS收信方主键”。
备份库(Backing Store)由文件或数据库构成,用于消息的持久保存。
JMS通过JDBC把消息保存在数据库中或从数据库访问持久化的消息。JMS数据库可以是任何可以用JDBC驱动访问的数据库。WebLogic支持并提供以下数据库的JDBC驱动程序。
ü Cloudscape
ü Informix
ü Microsoft SQL(MSSQL) Server(6.5或7版)
ü Oracle(8.1.6版)
ü Sybase(12版)
你可以用ACL限制JDBC连接池的使用。在ACL中加入WebLogic系统用户以及任何需要发送JMS消息的用户。详细内容,参见《WebLogic管理指南》的“安全管理”部分。
注意:WebLogic的JMS例子被设置为使用Cloudscape Java数据库。WebLogic服务器提供了该数据库的评估版本以及一个demoPool数据库。
要创建一个文件或数据库备份库,需要在管理控制台的Store节点下设置以下属性:
ü 备份库的名字
ü 文件备份库所在的目录(对于文件存储库而言)。
ü JDBC连接池以及用于多实例的数据库表名前缀(相对于JDBC数据库备份库而言)。
有关如何创建及配置文件备份库与数据库备份库的信息,请分别参见管理控制台在线帮助中的“JMS 文件存储器”以及“JMS JDBC 存储器”中的内容。
注意:随着存储的消息增多,使用JMS备份库会增加WebLogic服务器对内存的需求。在重新启动WebLogic 服务器时,可能会因为内存不足而造成启动失败,这时就需要根据JMS备份库中的消息数量来增加虚拟机中堆的大小,然后重新启动WebLogic服务器。
配置JMS服务器
JMS服务器管理连接以及用户的消息请求。
创建JMS服务器前,需要在管理控制台的“Servers”节点中定义以下内容:
ü 配置属性:
1.JMS服务器的名字
2.保存消息的备份库(文件类型的或JDBC数据库型的)。如果没有设置备份库,那么服务器不支持消息的持久化。
3.用来创建临时收信方的模板,临时收信方可以是临时队列也可以是临时主题。
4.消息数量和尺寸的极限和配额 (最大数量,上下限)(TBD)
ü JMS服务器所关联的目标服务器(WebLogic服务器)用以支持集群。通过目标服务器可以限制要部署JMS服务器的服务器集、组或/以及集群。
注意:部署JMS服务器与部署连接工厂或模板不一样。一个JMS服务器只能部署在一个服务器上,而连接工厂与模板可以同时在多个服务器上实例化。
有关如何创建以及配置JMS服务器的内容,请参见管理控制台在线帮助的“JMS服务器”部分。
一个收信方(Destination)就是一个队列(Queue)或一个主题(Topic),定义完JMS服务器后,可以定义该服务器的收信方。一个JMS服务器可以配置多个收信方。
可以直接定义收信方,也可以通过模板生成收信方。前面讲过,收信方模板用来定义具有相似配置的收信方。
你可以在管理控制台的Destiation节点直接配置收信方。以下是需要配置的属性:
ü 收信方的名字与类型(队列或主题)
ü 收信方的JNDI名字
ü 是否用备份库保存持久化消息
ü 用来创建收信方的模板
ü 定义收信方排序的主键
ü Thresholds and quotas for messages and bytes(maximum number, and high and low thresholds)(TBD)
ü 可以被重载的属性(如优先级,存活期(time-to-live),以及传递模式)
ü 广播属性,包括广播地址,端口与存活期(指对主题有意义)。
有关如何创建与配置收信方的内容,可以参见管理控制台在线帮助的“JMS Destiantion”。
某些收信方属性可以动态配置。在运行时所改变的属性配置,只影响以后的消息会受影响,原来的消息不受影响。
通过会话池(Session Pool),应用可以并发地处理消息。定义了JMS服务器后,就可以设置会话池。可以为每个JMS服务器配置一或多个会话池。
你可以用管理终端的Session Pools节点来定义以下属性:
ü 会话池的名字。
ü 会话池所关联的连接工厂。连接工厂用于创建会话。
ü 用于并发接收及处理消息的消息监听类。
ü 事务属性(确认模式以及是否允许会话池创建事务性会话))
ü 最大并发事务数
有关创建及配置会话池的内容,请参见管理控制台在线帮助的“JMS会话池”部分。
某些会话池属性可以动态设置,但只有重启会话池后新设置才会生效。
连接使用者(Connection Consumer)获得服务器会话并对消息进行处理。在定义了会话池后,你可以配置该会话池的连接使用者。可以为每个会话池定义一或多个连接使用者。你可以在管理管理控制台的“Session Pools”节点来配置连接使用者的以下属性:
ü 连接使用者的名字
ü 连接使用者可以收集的最大消息数
ü 过滤消息的JMS选择器表达式(selector expression),有关选择器表达式的信息,请参见“WebLogic JMS编程指南”中的相关内容。
ü 连接使用者所监听的收信方
有关创建及配置连接使用者的详细内容,请参见管理控制台在线帮助的“JMS连接使用者”部分。
你可以通过管理控制台了解以下JMS对象的统计信息:JMS服务器,连接,会话,收信方,消息生产者,消息使用者以及服务器会话池。
服务器在运行期间会不断地产生上述对象的统计信息,只有重启服务器才能重置统计值。
按照以下步骤来查看JMS的监控信息:
1.启动管理控制台
2.在左边窗格中选择Services节点下的JMS节点以打开JMS服务列表。
3.在左边窗格中选择JMS下的JMS Server节点。有关JMS服务器的信息显示在右边的窗格中。
4. 从JMS服务器列表或者右边窗格中的服务器中选择一个要监控的JMS服务器。
右边窗格将显示该JMS服务器的信息。
5.选择Monitoring 标签页,该页面会显示所选JMS服务器的监控数据。
有关JMS服务器监控的详细信息,请参见管理控制台的在线帮助。
以下部分的内容将介绍如何在系统失败时重启或替换WebLogic服务器,以及从编程的角度考虑如何在服务器失败的情况下正常地结束应用。
当WebLogic服务器失败时,有三种途径恢复系统:
ü 重启失败的服务器
ü 用与失败服务器相同的IP地址来启动一台新的服务器。
ü 用与失败服务器不同的IP地址来启动一台新的服务器。
要重启失败的服务器,或者使用与失败服务器相同的IP地址来启动一台新的服务器,必须先重启服务器,然后启动服务器进程。有关重启WebLogic的内容可以参见“启动与结束WebLogic服务器”
要使用与失败服务器不同的IP地址来启动一台新的服务器,使用以下步骤:
1.修改域名服务(Domain Name Service,简称为DNS),使服务器别名指向一个新的IP地址。
2. 重启服务器与服务器进程。可以参见“启动与结束WebLogic服务器”中的内容。
3.然后,你可以选择执行以下任务:
应用所采用的技术
执行的任务
消息持久化——使用JDBC备份库
1.如过JDBC数据库位于失败的服务器上,那么应该把数据库迁移到新的服务器上并将JDBC连接池的URL属性设置为数据库的新位置。
2.如果JDBC数据库不在失败的服务器上,那么对数据库的访问不受到影响,因此不需要做任何改变。
消息持久化——使用文件备份库
将文件迁移到新服务器上,注意主目录(home directory)的路径名应该与原来服务器的一样。
事务
如果你用其它IP地址启动WebLogic服务器,那么
把所有名字为<servername>.tlog的事务日志文件迁移到新服务器。这可以通过一个双口硬盘,或手工复制文件来实现。
如果迁移后的日志文件所在目录与原来服务器的不同,那么在启动服务器之前,你应该更改服务器的TransactionLogFilePrefic属性。
注意,如果因为系统崩溃而需要进行迁移,那么在新位置重启服务器之前,必须保证日志文件可用,否则在系统崩溃时正在提交的事务将不能正确解析,从而引起数据不一致。
所有未提交的事务都将被回滚。
注意:随着JMS备份库中的消息的增多,初始化WebLogic服务器所使用的内存也随之增多。因此如果服务器重启时,因为内存不足而引起的服务器初始化失败,可以通过增加虚拟机的堆大小来解决,所增加的比例取决于当前JMS备份库中的消息数量。
通过编程你可以在WebLogic服务器失败时正常地结束应用。例如:
如果服务器失败并且…
那么…
你连接到一个失败了的WebLogic服务器
JMSException异常将会被传递到连接异常监听器中。重启或替换了失败服务器后,应重启。
你没有连接到一个失败的服务器
在服务器重启或被取代时,必须重新建立所有组件
JMS服务器位于一个失败了的WebLogic服务器上
CoonsumerClosedException将传递到会话异常监听器。你可以重新创建任何丢失了的消息使用者。
本章介绍以下内容:
ü 如何将对象装载到JNDI树中
ü 查看JNDI树
用WebLogic JNDI访问对象之前,应该把对象装载到WebLogic服务器的JNDI树中。你可以用WebLogic服务器的管理控制台将WebLogic服务器的J2EE服务装载到JNDI树中。EJB, RMI, JMS, JDBC以及Mail对象也都可以放在JNDI树中。
在把对象装载到JNDI树之前,应该先确定对象的JNDI名字,然后创建对象时,在JNDI Name字段输入对象的JNDI名。
有时,查看WebLogic服务器JNDI树中的对象会对你有所帮助。要查看JNDI树,点击Monitering标签页上的“view JNDI Tree”链接。
18 管理WebLogic J2EE连接器构架
WebLogic J2EE连接器构架基于Sun Microsystems J2EE Connector Specification, Version1 1.0, Proposed Final Draft2, 它可以将J2EE平台与一或多个异种企业信息系统(Enterprise Information Systems,简写为EIS)。接下来的内容将解释如何管理WebLogic J2EE连接器构架:
ü WebLogic J2EE连接器构架概述
ü 安装资源适配器(Resource Adapter)
ü 配置与部署资源适配器
ü 删除一个资源适配器
ü 监控连接池与参数
ü 编辑资源适配器分发描述符(Resource Adapter Deployment Descriptors)
有关BEA WebLogic J2EE连接器体系结构的信息,可以参考“WebLogic J2EE体系结构编程”
WebLogic J2EE连接器构架概述
BEA WebLoic服务器继续建立在Sun MicrosSystems J2EE Platform Specification,version 1.3的实现上。J2EE连接器构架的作用是将简化的企业信息系统集成到J2EE平台,目的是为了借助于J2EE平台的优势——包括组件模型,事务与安全设施来解决EIS集成中出现的问题。
J2EE连接器构架提供了多个应用服务器与EIS集成的Java解决方案。借助于J2EE连接器构架,EIS供应商不再需要为每个应用服务器定制它们的产品,同时应用服务器供应商(如BEA WebLogic服务器)如果想扩展它的应用服务器以支持对新EIS的连接也不需要添加定制代码。
J2EE连接器构架使EIS供应商为它们的EIS产品提供标准的资源适配器。资源适配器作为应用服务器(如WebLogic服务器)的插件提供了EIS与应用服务器集成的基础设施。
应用服务器供应商(例如BEA WebLogic Server)只需将对J2EE连接器构架的支持扩展到它们的产品中,就能保证与各种EISes的连接。另一方面,EIS供应商应该提供一个标准的资源适配器,该适配器可以插入到任何支持J2EE连接器构架的应用服务器中。
本节将讨论如何用管理控制台将资源适配器安装到WebLogic服务器中。
1.启动WebLogic服务器
2.打开管理控制台
3.打开要处理的域
4.在Deployments下,右点左窗格中的Connectors将显示一个弹出菜单。
5.选择Install a New Connector Component
6.在文本字段中输入资源适配器(.rar)的路径,或点击Browse按钮浏览你的文件系统并选择所要安装的资源适配器
7.点Upload按钮安装资源适配器。新安装的资源适配器被加到左窗格中的Connectors节点下。
本节将介绍如何在管理控制台中配置与部署一个新的资源适配器。
与部署相关的信息,可以参考“WebLogic J2EE连接器构架编程”的第3章“资源适配器”。
以下是在管理控制台中配置与部署资源适配器的步骤:
1.启动WebLogic服务器
2.打开管理控制台
3.打开你要进行工作的那个域
4.在左窗格的Deployments下,选择Connectors。Connector Deployments表格显示在由窗格中。该表格列出了所有已经部署了的连接器(资源适配器)
5.选择Configure a new Connector Component
6.输入以下信息:
Name-连接器组件的名字,你可以不使用连接器的缺省名而另给一个名字。
URI(Uniform Resource Identifier,统一资源定位符)——输入连接器组件的URI
Path——输入资源适配器.rar文件的路径
Deployed——指出是否需要在创建完后就部署资源适配器.rar文件。
7.点Create按钮
8.新的资源适配器显示在右窗格中的Deployments表格中
以下是在管理控制台中查看已经部署了的资源适配器:
1.在管理控制台左窗格的Deployments节点下,选择Connectors
2.Connector Deployments表格显示在右窗格中。该表格列出了所有已经部署的连接器。
在管理控制台卸载资源适配器的步骤如下:
1.在管理控制台左窗格的Deployments节点下,选择Connectors。
2.在Connector Deployments表格中,选择一个要卸载的连接器
3.在Configuration标签页中,不要选Deployed复选框
4.点Apply
卸载一个资源适配器并未将该适配器的名字从WebLogic服务器中删除。The resource adapter remains undeployed for the duration of the server session,as long as you do not change it once it has been undeployed。You cannot re-use the deployment name with the deploy argument until you reboot the server。你可以重用部署名来更新部署,就象“更新已部署的资源适配器”中所描述的那样。
更新已部署的资源适配器
当你更改了一个已经部署到Weblogic服务器的资源适配器.jar文件或部署目录的内容时,只有完成了以下任务,所作的更新才会反映到WebLogic服务器中:
ü 重启服务器(如果.rar或目录会被自动部署)或
ü 在管理控制台中更新资源适配器的部署
如果从管理控制台中更新资源适配器的部署,应该完成以下步骤:
1.在管理控制台的Deployments下,选择左窗格中的Connectors(Resource Adapters)
2.在Connector Deployments表格中,选择要更新的连接器
3.更改连接器的名字或部署状态
4.点Apply按钮
注意:可以直接编辑Weblogic-ra.xml文件来配置资源适配器。详细信息可以参考“WebLogicJ2EE连接器构架”的第3章“资源适配器”。
在管理控制台中删除资源适配器有两种方式:
ü 使用弹出菜单
a.在左窗格的Deployments下,选择要删除的连接器
b. 右点鼠标,然后选Delete菜单项
c. 确认删除
ü 使用Connector Deployments表格
a. 在左窗格的Deployments下,选要删除的连接器名
b. 一个已部署的连接器列表显示在右窗格中的Connector Deployments表格中。
c. 点垃圾箱图标删除连接器
e. 确认删除
在当前的Beta版中,还不能用WebLogic服务器的管理控制台查看或编辑配置J2EE连接器构架资源适配器的分发描述符元素与属性。
但是,可以用weblogic.Admin来查看ConnectorComponent Mbean的信息。命令如下:
java weblogic.Admin -url t3://localhost:port -username xxx -password yyyGET -pretty -type ConnectorComponent
有关如何使用weblogic.Admin工具的说明,可以参考“管理指南”中的“使用命令行查看或更改Mbean属性以管理WebLogic域”中的内容。
当前的Beta版本中,还不能用管理控制台来查看J2EE连接器构架资源适配器的监控信息。
可以用weblogic.Admin查看连接器组件的运行时信息与配置信息。所使用的命令如下:
java weblogic.Admin -url t3://localhost:port -username xxx -password yyy
GET -pretty -type (ConnectorServiceRuntime | ConnectorConnectionPoolRuntime | ConnectorConnectionRuntime)
有关如何使用weblogic.Admin的说明,,可以参考“管理指南”中的“使用命令行查看或更改Mbean属性以管理WebLogic域”中的内容,以及weblogic.management.runtime的Javadocs,它详细描述了runtime MBean的属性值。
本节将说明如何用管理控制台的分发符描述符来编辑以下资源适配器分发描述符:
ü ra.xml
ü weblogic-ra.xml
有关资源适配器的分发描述符元素的详细信息,可以参考“WebLogic J2EE连接器构架编程”。
以下是编辑资源适配器分发描述符的步骤:
1.在浏览器中用以下URL打开管理控制台:
http://host:port/console
其中host是运行WebLogic服务器的机器的计算机名,port是WebLogic服务器的监听端口号。
2.展开左窗格的Deployments节点
3.展开Deployments节点下的Connectors节点
4.右点需要编辑分发描述符的资源适配器的名字,然后从下拉菜单中选择Edit Connector Descriptor菜单。
管理控制台窗口显示在一个新的浏览器中。左窗格的树结构列出了两个资源适配器分发描述符的所有元素。右窗格的表单中列出了ra.xml文件的描述符元素。
5.如果要编辑、删除或添加资源适配器分发描述符中的元素,那么在左窗格中展开需要编辑的分发描述符文件对应的节点。
RA节点包含了ra.xml分发描述符中的元素
WebLogic RA节点包含了weblogic-ra.xm;分发描述符中的元素
6.以下是对分发描述符文件中的元素进行编辑的步骤:
在左窗格的树中,依次展开各父元素直到找到需要编辑的元素为止。
点击该元素。显示在右窗格中的表单列出了该元素的属性或该元素的子元素
编辑表单中的文本文字
点Apply按钮。
7.在资源适配器的分发描述符中添加元素的步骤如下:
在左窗格的树中,依次展开各父元素直到找到需要创建的元素名为止。
右点元素,并从下拉菜单中选择Configure a New Element选项
在右窗格的表单中输入元素的信息
点Create按钮
8.以下步骤可以用来删除资源适配器描述符文件中的元素:
在左窗格的树中,依次展开各父元素直到找到需要删除的元素为止。
右点该元素,并从下拉菜单中选择Delete Element菜单项。
点Yes确认删除
9.改完资源描述符后,点击左窗格中的根元素。根元素可能是资源适配器*.rar包文件的名字也可能是资源适配器的名字
10.点Validate以保证资源适配器描述符中的条目是有效的。
11.点Persist将你对分发描述符文件所作的编辑写到硬盘以及WebLogic Server的内存中。
19 管理WebLogic服务器许可证
运行WebLogic需要一个有效的许可证。下面的内容将介绍如何安装及更新WebLogic许可证:
ü 安装WebLogic许可证
ü 更新许可证
使用评估许可证
WebLogic服务器的评估版可以使用30天。此后,如果希望继续使用WebLogic服务器,你应该与销售人员商讨继续使用评估版还是购买WebLogic服务器许可证。所有WebLogic服务器的评估版产品只允许在一台服务器上使用并最多可以接受三个具有不同IP地址的客户端的访问。
从BEA网站下载的WebLogic服务器中包含了评估许可证。安装时,WebLogic服务器的安装程序会要求指定BEA主目录的位置,BEA的许可证文件license.bea将安装在这个目录下。
如果出现以下情况,那么你需要更新BEA许可证文件
ü 购买了其它BEA软件
ü 获得包含新产品的分发
ü 已经申请并收到可以延长使用评估版的许可证。
在上述情况下,新的许可证文件将以邮件附件的形式分发给你。然后你可以按照以下步骤来更新你的BEA许可证文件。
1.将许可证更新文件保存在BEA的主目录下,注意不要用license.bea作为该文件的名字
2.Java(Java 2)应该包含在路径中,以下命令可以把JDK加入到路径中:
set PATH=./jdk130/bin:%PATH% (Windows系统)
set PATH=./jdk130/bin:$PATH (UNIX系统)
3.在命令行方式下,进入BEA的主目录,执行以下命令:
UpdateLicense license_update_file
其中license_update_file就是你通过邮件获得并保存在home目录下的许可证更新文件。运行该命令将会更新license.bea文件。
4.备份license.bea,并将它保存在一个安全的地方。即使别人不会使用你的许可证文件,也应该保护这些信息,避免遭受恶意或因无知而造成的破坏。
A 使用WebLogic Java工具
WebLogic提供了几个Java应用程序用以简化安装与配置任务、提供服务以及提供方便的快捷方式。本章描述了WebLogic所提供的这些工具。本章给出了所有工具的命令行语法,有些还提供了示例。本章描述了以下工具:
ü AppletArchiver
ü Conversion
ü der2pem
ü dbping
ü deploy
ü getProperty
ü logToZip
ü MulticastTest
ü myip
ü pem2der
ü Schema
ü showLicenses
ü system
ü t3dbping
ü verboseToZip
ü version
ü writeLicense
在使用这些工具之前必须先正确地设置CLASSPATH 。详细信息,请参见“设置类路径选项”。
AppletArchiver工具在一个单独的框架中运行applet,并记录所有下被 applet下载的类与applet使用的资源,然后将它们打包在一个.jar文件或.cab文件中(cabarc工具可以从Microsoft得到)
$ java utils.applet.archiver.AppletArchiver URL filename
参数
定义
URL
Applet的URL
filename
打包后的.jar/.cab文件名
如果你使用过以前版本的WebLogic,那么必须要转换weblogic.properties文件。在管理控制台在线帮助的“Conversion”部分中介绍了如何使用转换脚本来转换文件。
Der2pem工具用来把DER格式的X509证书转换为PRM格式。转换所得到的.pem格式的文件与原.der文件位于同一个目录中。
格式:
$ java utils.der2pem derFile [headerFile][footerFile]
参数
描述
derFile
要进行转换的文件名。该文件的扩展名必须为.der扩展,并且.der文件中必须有一个有效的证书。
headerFile
放在PEM文件中的文件头。缺省的文件头为“------BEGIN CERTIFICATE-------” 。
如果要进行转换的DER文件是一个私钥文件,那么应该创建一个头文件,该头文件包含以下内容之一:
如果是未加密的私钥文件,那么为“-----BEGIN RSA PRIVATE KEY-----”
如果是加密的私钥文件,那么为“-----BEGIN ENCRYPTED PRIVATE KEY”
注意:文件头所在行的结尾应该另起一行。
footerFile
放在PEM文件中的头。缺省的文件头为“-----END CERTIFICATE-----”。
如果所转换的DER文件是一个私钥文件,那么应该使用一个脚注文件。所创建的脚注文件应该包含以下内容之一
如果是一个未加密的私钥,那么为“-----END RSA PRIVATE KEY-----”
如果是加密的私钥文件,那么应该为“-----END ENCRYPTED PRIVATE KEY-----”。
注意:在文件头所在行的结尾处应该另起一行。
$ java utils.der2pem graceland_org.der
Decoding
................................................................
................................................................
................................................................
................................................................
................................................................
dbping命令行工具用来测试DBMS与客户端之间使用两层WebLogic jDriver的连接。
$ java utils.dbping DBMS user password DB
参数
定义
DBMS
该参数为MSSQLSERVER4, ORACLE, 或INFORMIX4
user
登录用的有效用户名。可以用isql或sqlplus中所使用的用户名
password
用户的口令。可以用isql或sqlplus所使用的口令。
DB
数据库的文件名,可以用isql或sqlplus所使用的值。
Deploy工具从一个包文件中得到J2EE应用,并把该应用部署到正在运行着的WebLogic服务器中。更多的信息可以参见“组装并配置Web应用”以及编程指南中的“开发WebLogic 服务器应用”中的内容。
$ java weblogic.deploy [options] [action] password {application name} {source}
Actions(从下表中选一个)
Action
描述
List
列出指定WebLogic服务器中的所有应用
deploy
将一个J2EE应用.jar,.war或.ear文件部署到指定的服务器中
undeploy
删除指定服务器上的一个应用
update
在指定服务器上重新部署一个应用
delete
按给出的应用名删除一个应用
参数
描述
口令
指定WebLogic服务器的系统口令
应用名
指定应用的名字。应用的名字可以在分发时指定,也可以使用分发或控制台工具指定。
指出应用包文件(.jar,.war或.ear)的exact位置,或者是应用目录所在的路径。
选项
定义
-help
打印出deploy工具的所有选项
-version
打印出deploy工具的版本
-port port
指定WebLogic服务器用来部署J2EE应用.jar,.war,或.ear文件的端口号。
-host host
指定部署J2EE应用(.jar, .war, .ear)的WebLogic服务器的主机名。
-url url
指定 WebLogic服务器的URL,缺省为localhost:7001
-component componentname: target1, target2
部署到各种目标上的组件,必须指定为:
componentname:target1, target2
可以任意多个组件指定该选项,且可以指定任意多次。
,-username username
连接所使用的用户名,缺省为sytem。
-debug
将部署过程中的详细调试信息输出到stdout。
部署工具可用于多种目的:
ü 查看一个J2EE应用
ü 部署一个新J2EE应用
ü 删除一个J2EE应用
ü 更新一个J2EE应用
查看一个J2EE应用
以下命令可以查看部署在本地服务器上的一个应用
% java weblogic.deploy list password
Password的值为WebLogic服务器系统帐号的口令。
如果要列出远程服务器上所部署的应用,那么应该指定port与host选项,如下所示:
java.weblogic.deploy –port port_number –host host_name list password
部署J2EE应用
部署一个还不曾分发到WebLogic的J2EE应用文件(.jar, .war, .ear)或应用目录,使用如下命令:
% java weblogic.deploy -port port_number -host host_name deploy password application source
ü application为分配给所部署应用的字符串
ü source为所要部署的J2EE应用文件的全路径(.jar,.war, .ear),或者是应用目录的全路径。
例如:
% java weblogic.deploy -port 7001 -host localhost deploy weblogicpwd Basic_example c:/mysamples/ejb/basic/BasicStatefulTraderBean.jar
注意:当J2EE文件(.jar, .war, .ear)复制到管理服务器的应用目录时,将以应用的名字重命名该文件。因此,上面这个例子中,应用包的名字. . ./config/mydomain/applications目录从BasicStatefulTraderBean.jar改变为Basic_example.jar。
删除一个J2EE应用
要删除一个已部署的J2EE阴功,只需要引用所分配的应用名,如下图所示:
% java weblogic.deploy -port 7001 -host localhost undeploy weblogicpwd Basic_example
注意:删除一个J2EE应用并没有把该应用从WebLogic服务器中删去。你不能在deploy工具中重用这个应用的名字。你只能在更新所部署的应用时重用应用的名字。具体内容见下节。
更新一个部署了的J2EE应用
要更新J2EE应用,应该使用update参数并指定活动J2EE应用的名字,如下所示:
% java weblogic.deploy -port 7001 -host localhost update weblogicpwd Basic_example c:/updatesample/ejb/basic/BasicStatefulTraderBean.jar
以下命令用于更新一或多个服务器上的指定组件。
% java weblogic.deploy -port 7001 -host localhost –component
BasicStatefulTraderBean.jar:sampleserver,exampleserver update weblogicpwd Basic_example c:/updatesample/ejb/basic/BasicStatefulTraderBean.jar
你可以用getProperty工具获得系统与Java设置的详细信息。它不需要参数。
$ java utils.getProperty
$ java utils.getProperty
-- listing properties --
user.language=en
java.home=c:/java11/bin/..
awt.toolkit=sun.awt.windows.WToolkit
file.encoding.pkg=sun.io
java.version=1.1_Final
file.separator=/
line.separator=
user.region=US
file.encoding=8859_1
java.vendor=Sun Microsystems Inc.
user.timezone=PST
user.name=mary
os.arch=x86
os.name=Windows NT
java.vendor.url=http://www.sun.com/
user.dir=C:/weblogic
java.class.path=c:/weblogic/classes;c:/java/lib/cla...
java.class.version=45.3
os.version=4.0
path.separator=;
user.home=C:/
The logToZip utility searches an HTTP server log file in common log format, finds the Java classes loaded into it by the server, and creates an uncompressed .zip file that contains those Java classes. It is executed from the document root directory of your HTTP server.
要使用该工具,你必须有访问由HTTP服务器创建的日志文件。
$ java utils.logToZip logfile codebase zipfile
参数
定义
logfile
该参数是必需的。为日志文件的全路径名
codebase
该参数是必需的。Code base for the applet, or "" ifthere is no code base.By
concatenating the code base with the full package name of the applet, you
get the full pathname of the applet (relative to the HTTP document root).
zipfile
该参数是必需的,zipfile是所创建的.zip文件的文件名,该zip文件位于你运行程序的那个目录。该文件的路径可以是相对路径也可以是绝对路径。下面的例子给出了一个相对路径,因此.zip文件被创建在当前目录下。
下面这个例子说明了如何为文档根中(即没有用code base)的一个applet创建一个.zip文件:
$ cd /HTTP/Serv/docs
$ java utils.logToZip /HTTP/Serv/logs/access "" app2.zip
下面这个例子说明了如何为文档根的子目录中的一个applet创建一个.zip文件:
C:/>cd /HTTP/Serv
C:/HTTP/Serv>java utils.logToZip /logs/applets/classes app3.zip
你可以在配置WebLogic集群时,用该工具测试有关广播的问题。该工具发送广播包并返回广播在网络中的工作效率的信息。特别地,MulticastTest将以下类型的信息显示在标准输出上。
1.服务器所发送的每个消息的确认与序列号。
2.集群服务器所收到的每个消息的序列号与发送方ID
3.当一个消息没有按顺序接收到时的错误顺序警告。
4.当一个预期的消息没有受到时的消息丢失警告。
在使用MulticastTest时,应该在每个需要测试广播消息流量的节点上启动该工具。
警告:在指定MulticastTest工具的广播地址时(由-a 参数指定),注意不要设置为集群的广播地址。在启动集群服务器之前用该工具验证广播是否能正常工作。
有关设置广播地址的详细信息,可以参见WebLogic服务器所在主机的操作系统/硬件的配置文档。更多信息,请参见“使用WebLogic服务器集群”。
$ java utils.MulticastTest -n name -a address [-p portnumber] [-t timeout] [-s send]
参数
定义
-n name
必需的参数。用以表示顺序消息的发送方。应该为每个启动的测试进程使用不同的名字
-a address
必需的参数。是一个广播地址用于:(a)广播顺序消息;(b)集群中的服务器与其它服务器通信。(集群的广播地址的缺省值不应设为237.0.0.1)
-p portnumber
可选参数。集群中的服务器进行通信的广播端口。(广播端口与WebLogic的监听端口相同,缺省为7001)
-t timeout
可选参数。Idle timeout, in seconds, if no multicast messages are received. 缺省时间为600秒(10分钟)。如果过了超时时间,a positive confirmation of the timeout is sent to sdout。
-s send
可选参数。发送消息的时间间隔,缺省值为2秒。A positive confirmation of each message sent out is sent to stdout。
$ java utils.MulticastTest -N server100 -A 237.155.155.1
Set up to send and receive on Multicast on Address 237.155.155.1 on
port 7001
Will send a sequenced message under the name server100 every 2
seconds.
Received message 506 from server100
Received message 533 from server200
I (server100) sent message num 507
Received message 507 from server100
Received message 534 from server200
I (server100) sent message num 508
Received message 508 from server100
Received message 535 from server200
I (server100) sent message num 509
Received message 509 from server100
Received message 536 from server200
I (server100) sent message num 510
Received message 510 from server100
Received message 537 from server200
I (server100) sent message num 511
Received message 511 from server100
Received message 538 from server200
I (server100) sent message num 512
Received message 512 from server100
Received message 539 from server200
I (server100) sent message num 513
Received message 513 from server100
返回主机的IP地址。
$ java utils.myip
$ java utils.myip
Host toyboat.toybox.com is assigned IP address: 192.0.0.1
Pem2der工具用以将PEM格式的X509证书转换为DER格式,转换所得的.der文件与原.pem文件位于同一目录中。
$ java utils.pem2der pemFile
参数
描述
pemFile
要进行转换的证书的文件名。该文件的扩展名必须为.pem,且必须包含一个有效的.pem格式的证书。
$ java utils.pem2der graceland_org.pem
Decoding
................................................................
................................................................
................................................................
................................................................
................................................................
Schema工具使用WebLogic JDBC驱动将SQL语句上载到一个数据库中。有关数据库连接的详细信息可以参见“WebLogic JDBC编程”中的信息。
$ java utils.Schema driverURL driverClass [-u username] [-p password][-verbose SQLfile]
参数
定义
driverURL
该参数是必需的。JDBC驱动的URL
driverClass
该参数是必需的。JDBC驱动类的路径名
-u username
可选参数。一个有效的用户名
-p password
可选参数。一个有效的用户名
-verbose
可选参数。打印出SQL语句与数据库的信息
SQLfile
如果用了-verbose参数,那么就应该设置该参数。包含SQL语句的文本文件
下面是一个Schema命令行的例子:
$ java utils.Schema "jdbc:cloudscape:demo;create=true" COM.cloudscape.core.JDBCDriver -verbose examples/utils/ddl/demo.ddl
下面是一个.ddl文件中的内容
DROP TABLE ejbAccounts;
CREATE TABLE ejbAccounts
(id varchar(15),
bal float,
type varchar(15));
DROP TABLE idGenerator;
CREATE TABLE idGenerator
(tablename varchar(32),
maxkey int);
showLicenses工具显示了所安装的BEA产品的许可证信息。
$ java utils.showLicenses
system工具显示操作系统的基本信息,包括所使用的JDK的制造商与版本号、类路径以及操作系统的详细信息。
$ java utils.system
$ java utils.system
* * * * * * * java.version * * * * * * *
1.1.6
* * * * * * * java.vendor * * * * * * *
Sun Microsystems Inc.
* * * * * * * java.class.path * * * * * * *
/java/lib/classes.zip;/weblogic/classes;
/weblogic/lib/weblogicaux.jar;/weblogic/license
...
* * * * * * * os.name * * * * * * *
Windows NT
* * * * * * * os.arch * * * * * * *
x86
* * * * * * * os.version * * * * * * *
4.0
该工具用来测试使用两层JDBC驱动程序的WebLogic JDBC连接。使用该工具时,你必须有访问WebLogc与DBMS的权限。
$ java utils.t3dbping WebLogicURL username password DBMS driverClass driverURL
参数
定义
WebLogicURL
该参数是必需的。WebLogic服务器的URL
username
该参数是必需的。一个DBMS用户的用户名
password
该参数是必需的。DBMS用户口令
DBMS
该参数是必需的。数据库的名字
driverClass
该参数是必须的。WebLogic两层驱动程序的完整包名
driverURL
该参数是必需的。WebLogic两层驱动程序的URL。
如果从HTTP服务器的文档根目录中执行该工具,verboseToZip获得运行在verbose模式的标准输出,找到所引用的Java类,并创建一个包含这些Java类的uncompressed .zip文件。
$ java utils.verboseToZip inputFilezipFileToCreate
参数
定义
inputFile
该参数是必须的。它设置了一个临时文件保存以verbose模式运行的应用的输出。
zipFileToCreate
该参数是必须的。要创建的.zip文件的名字。该文件保存在你运行工具所在的目录。
UNIX上的例子
$ java -verbose myapplication > & classList.tmp
$ java utils.verboseToZip classList.tmp app2.zip
NT上的例子
$ java -verbose myapplication > classList.tmp
$ java utils.verboseToZip classList.tmp app3.zip
version工具将所安装的WebLogic的版本信息输出到stdout。
$ java weblogic.version
$ java weblogic.versionWebLogic Build: 4.0.1 04/05/1999 22:02:11 #41864
writeLiense工具将WebLogic的许可证信息写到当前目录中的一个名字为writeLicense.txt文件中,然后可以将这个文件通过email发送给其它人,如WebLogic的技术支持。
$ java utils.writeLicense -nowrite -Dweblogic.system.home=path
参数
定义
-nowrite
该参数是必须的。输出到stdout而不是writeLicense.txt
-Dweblogic.system.home
该参数是必须的。该参数设置了WebLogic system home(WebLogic所在的根目录)
注意:该参数是必须的,但如果从WebLogic system home运行writeLicense工具,那么可以不设置该参数
$ java utils.writeLicense -nowrite
UNIX上的输出示例:
* * * * * * System properties * * * * * *
* * * * * * * java.version * * * * * * *
1.1.7
* * * * * * * java.vendor * * * * * * *
Sun Microsystems Inc.
* * * * * * * java.class.path * * * * * * *
c:/weblogic/classes;c:/weblogic/lib/weblogicaux.jar;
c:/java117/lib/classes.zip;c:/weblogic/license
...
Windows NT上的输出示例:
* * * * * * * os.name * * * * * * *
Windows NT
* * * * * * * os.arch * * * * * * *
x86
* * * * * * * os.version * * * * * * *
4.0
******IP******
Host myserver is assigned IP address: 192.1.1.0
* * * * * * Location of WebLogic license files * * * * * *
No WebLogicLicense.class found
No license.bea license found in
weblogic.system.home or current directory
Found in the classpath: c:/weblogic/license/license.bea
Last Modified: 06/02/1999 at 12:32:12
* * * * * * Valid license keys * * * * * *
Contents:
Product Name : WebLogic
IP Address : 192.1.1.0-255
Expiration Date: never
Units : unlimited
key : b2fcf3a8b8d6839d4a252b1781513b9
...
* * * * * * All license keys * * * * * *
Contents:
Product Name : WebLogic
IP Address : 192.1.1.0-255
Expiration Date: never
Units : unlimited
key : b2fcf3a8b8d6839d4a252b1781513b9
...
* * * * * * WebLogic version * * * * * *
WebLogic Build: 4.0.x xx/xx/1999 10:34:35 #xxxxx
B WebLogic服务器的命令行接口参考
本附录将介绍以下内容:
ü 命令行接口简介
ü 使用WebLogic服务器命令
ü WebLogic服务器管理命令参考
ü Mbean管理命令参考
ü 配置及管理连接池的命令
As an alternative to the Administration Console, WebLogic服务器提供了管理工具与多数配置工作以及许多运行时的Mbean属的性了命令行界面
以下情况可以使用命令行界面:
ü 如果要用脚本进行管理
ü 如果不能使用浏览器访问管理控制台
ü 相比于GUI,你更愿意使用命令行界面
运行WebLogic Server命令之前,必须先完成以下工作:
1.安装并配置WebLogic服务器软件。参见以下页面的“WebLogic Server InstallationGuide”部分:
http://e-docs.bea.com/wls/docs61/install/index.html.
2.正确地配置CLASSPATH环境变量。参见2-7页的“设置类路径选项”
3.执行以下步骤中的一个来启用命令行界面
a. 从服务器的安装目录启动服务器
b. 如果不是从服务器的安装目录启动服务器,那么应该使用以下命令,把命令中的c:/weblogic用你的webLogic服务器所在的目录名替代。
-Dweblogic.system.home=c:/weblogic
本节中的例子基于以下假设:
ü WebLogic服务器安装在c:/weblogic目录
ü JDK位于c:/java目录
ü WebLogic服务器是从它的安装目录启动的
使用WebLogic服务器命令
本章介绍了WebLogic Server的命令与所需参数。WebLogic Server的命令不区分大小写。
java weblogic.Admin [-url URL] [-username username] [-password password] COMMAMD arguments
许多WebLogic服务器命令都需要以下参数:。
参数
定义
URL
WebLogic服务器主机的URL,其中包括WebLogic服务器监听客户端请求的TCP端口。格式为hostname:port。缺省为localhost:7001.
注意:服务器命令中的URL参数引用的是WebLogic服务器,而run-time Mbea与configuration Mbean命令总是指向一个特定的管理服务器。
username
可选参数。要验证的用户名用以确定是否可以执行命令。缺省为guest
password
可选参数。对口令进行验证以确定命令是否可以执行
运行管理run-time Mbeans的命令的管理员不许具有相应的访问控制权限。
见以下章节:
ü B-3页的“WebLogic Server管理命令参考”
ü B-17页的“Mbean管理命令参考”
WebLogic服务器管理命令参考
表T-1概要介绍了WebLogic服务器的管理命令,接下来的内容将描述命令的语法与参数,并给出了每个命令的例子。
表T-1 WebLogic服务器管理命令概述
任务
命令
描述
连接到WebLogic服务器
CONNECT
对WebLogic服务器进行指定次数的连接,并返回each round trip的总时间(用两位数表示)以及每次连接的平均持续时间
见8-6页的“CONNECT”
获得命令的帮助信息
HELP
给出了所有WebLogic服务器的语法与使用信息。如果HELP命令中指定了命令值,那么只给出这一命令的帮助信息。
参见8-7页的“HELP”部分
启动或停止WebLogic服务器
java
用Java命令启动或停止WebLogic服务器,这与启动或停止其它Java应用的方式是一样的。
见管理指南的“starting and Stopping WebLogic Servers”部分,见以下页面:
http://e-docs.bea.com/wls/docs61/adminguide/startstop.html .
查看WebLogic服务器的许可证
LICENSES
列出一服务器上所有WebLogic服务器实例的许可证。见B-8页的“LICENSES”
列出JNDI名字树节点所绑定的内容
LIST
列出JNDI名字树上某一节点所绑定的内容
锁住WebLogic服务器
LOCK
Locks a WebLoigc Server against non-privileged logins。以后的任何登录企图都将引发一个包含可选字符串信息的安全异常。见8-10页的“LOCK”
验证WebLogic服务器的监听端口
PING
发送消息验证WebLogic服务器是否在端口进行监听的消息、是否可以接收WebLogic客户端的请求。见B-11页的“PING”。
查看服务器的日志文件
SERVERLOG
显示指定服务器所产生的服务器日志文件。见B-12页的“SERVERLOG”
关闭一个WebLogic服务器
SHUTDOWN
关闭URL所指定的WebLogic服务器。见B-13页的“SHUTDOWN”。
查看线程
THREAD_DUMP
提供了当前正在运行的WebLogic服务器线程的一个实时快照。见B-14页的“THREAD_DUMP”
解锁WebLogic服务器
UNLOCK
解开用LOCK命令对指定WebLogic服务器添加的锁。见B-15页的“UNLOCK”。
查看WebLogic服务器版本
VERSION
显示URL所指定机器上的WebLogic服务器软件的版本。见B-16页的“VERSION”。
对WebLogic服务器进行指定次数的连接,并返回each round trip的总时间(用两位数表示)以及每次连接的平均持续时间(以微秒为单位)。
语法
java weblogic.Admin [-url URL] [-username username] [-password password] CONNECT count
参数
定义
count
连接的次数
例子
在下面的例子中,一个名字为adminuser口令为gumby1234的用户运行CONNECT命令对名字为localhost的服务器建立了25次连接并返回这些连接的信息:
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 CONNECT 25
给出所有WebLogic服务器命令的语法与使用信息(缺省的),如果HELP命令行给出了一个命令值,那么HELP命令将显示该命令的帮助信息。
语法
java weblogic.Admin HELP [COMMAND]
例子
下面的例子使用HELP命令获得PING命令的帮助信息。
java weblogic.Admin HELP PING
HELP命令将以下信息输出到标准输出上:
Usage: weblogic.Admin [-url url] [-username username]
[-password password]<COMMAND><ARGUMENTS>
PING <count><bytes>
列出安装在某一服务器上的所有WebLogic服务器实例的许可证
语法
java weblogic.Admin [-url URL] [-username username] [-password password] LICENSES
例子
在下面的例子中,管理远使用缺省的用户名(guest)与口令(guest)获得localhost机器中在7001端口运行的WebLogic服务器的许可证信息。
java weblogic.Admin -url localhost:7001 -username guest -password guest LICENSES
列出JNDI名字树上某一节点的绑定信息。
语法
java weblogic.Admin [-username username] [-password password] LIST context
参数
定义
context
必需的参数。进行JNDI查找的上下文。例如,weblogic, weblogic.ejb.javax。
例子
在本例中,用户adminuser(口令为gumby1234)的用户请求列出weblogic.ejb中节点的绑定信息。
java weblogic.Admin -username adminuser -password gumby1234 LIST weblogic.ejb
Locks a WebLogic Server against non-privileged logins。以后的登录请求都将引发一个包含可选字符串信息的安全异常。
注意:运行该命令必须有相应的权限。该命令要求使用WebLogic服务器管理用户的口令
语法
java weblogic.Admin [-url URL] [-username username] [-password password] LOCK “string_message ”
参数
定义
“string_message”
可选参数。当WebLogic服务器被锁住后,没有权限的用户进行登录将引发一个安全异常,该异常包含了双引号中的消息字符串。
例子
下例中,WebLogic服务器已被锁住。
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 LOCK "Sorry, WebLogic Server is temporarily out of service."
当应用使用一个没有权限的用户名与口令登录被锁住的服务器时,将收到以下消息:sorry, webLogic Server is temporarily out of service。
PING
发送消息以验证WebLogic服务器是否在端口上进行监听以及是否可以接收WebLogic客户端请求。
语法
java weblogic.Admin [-url URL] [-username username] [-password password]PING [round_trips][message_length]
参数
定义
round_trips
可选参数。Ping的次数
message_length
可选参数。每个ping发送的包的大小。当ping的包大于10MB将引发异常
例子
下例中,PING命令对localhost机器中的WebLogic服务器检查了10次。
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 PING 10
显示指定服务器所生成的日志文件。
ü 如果没有指定URL,那么将显示管理服务器上的服务器日志。
ü 如果没有指定服务器的URL,那么可以取得非管理服务器中的日志。
ü 如果省略了startime与enttime参数,a running display of the entire server log is started。
语法
java.weblogic.Admin [-url URL] [-username username] [-password password] SERVERLOG [[starttime]|[endtime]]
参数
定义
starttime
可选参数。显示的日志从该时间的消息开始。如果没有指定这一参数,缺省情况下将显示执行SERVERLOG命令后的消息。日期的格式为yyyy/mm/dd。时间的格式使用24小时制。起始日期与时间应该用双引号括起来,即使用以下格式:”yyyy/mm/dd hh:mm”
endtime
可选参数。Latest time at which messages are to be displayed。如果没有指定这一参数,缺省为SERVERLOG命令执行时的时间。日期的格式为yyyy/mm/dd。时间的格式使用24小时制。结束日期与时间应该用双引号括起来,即使用以下格式:”yyyy/mm/dd hh:mm”
例子
下面的例子使用SERVERLOG命令显示运行在localhost机器上7001端口的WebLogic服务器的日志。
java weblogic.Admin -url localhost:7001 SERVERLOG “2001/12/01 14:00”“2001/12/01 16:00”
该命令显示2001/12/1 2:00p.m. 与2001/12/1 4:00p.m.之间的日志。
关闭指定URL上的WebLogic服务器
语法
java weblogic.Admin [-url URL] [-username username] [-password password] SHUTDOWN [seconds][“lockMessage”]
参数
定义
seconds
可选参数。指定命令执行后多长时间关闭服务器。
“lockMessage”
可选参数。当用户登录一个被锁住的webLogic服务器时,系统将发送双引号中的消息。
例子
下面的例子中,adminuser用户(口令为gumby1234)关闭localhost机器中在7001端口监听的WebLogic服务器:
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 SHUTDOWN 300 “Server localhost is shutting down.”
当命令执行后,过30秒,所指定的服务器被关闭并将以下消息发送到标准输出:
Server localhost is shutting down.
提供当前正在运行的WebLogic服务器线程的实时快照。
语法
java weblogic.Admin [-url URL] [-username username] [-password password] THREAD_DUMP
将一个被锁住的WebLogic服务器解锁。
语法
java weblogic.Admin [-url URL] [-username username] [-password password] UNLOCK
参数
定义
username
必需的参数。一个有效的管理员用户的用户名
password
必需的参数。管理员用户的口令
例子
本例中,管理员用户adminuser(口令为gumby1234)请求对运行在loalhost机器7001端口的WebLogic服务器解锁。
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 UNLOCK
显示运行在URL所指定的机器上的WebLogic服务器软件的版本。
语法
java weblogic.Admin [-url URL] [-username username] [-password password] VERSION
例子
下面的例子中,一个用户要求显示运行在localhost机器7001端口的WebLogic服务器的版本
java weblogic.Admin -url localhost:7001 -username guest -password guest VERSION
注意:本例使用了缺省的usename与password参数,即使用的是guest用户。
Mbean管理命令参考
表T-2概要介绍了Mbean的管理命令,接下来的内容将详细介绍各命令的语法与参数,并提供了相应的例子。
表T-2 Mbean管理命令概览
任务
命令
描述
创建Configuration Mbeans
CREATE
创建configuration Mbean的一个实例。如果成功则将OK返回stdout。不能对run-time Mbeans使用该命令。
参见B-18 页的“CREATE”。
删除Configuration Mbeans
DELETE
删除一个configration Mbean。如果删除成功则将OK返回给stdout。该命令不能应用于run-time Mbeans。
见B-19页的“DELETE”。
查看Run-Time Mbean的属性
GET
显示run-time Mbean的属性
见B-22页的“GET”。
调用Run-Time Mbeans
INVOKE
调用不是用来get或set属性的方法。只能对run-time Mbeans执行该命令。
见B-22页的“INVOKE”
Viewing Run-Time Metrics and Statistics
INVOKE GET
运行INVOKE与GET命令来查看run-time metrics ans statistics。只能对run-time Mbeans执行该命令。
见B-22页的“INVOKE”以及B-20页的“GET”命令
设置Configration Mbeans的属性
SET
设置给指定名字的configuration Mbean的属性。如果设置成功则将OK返回给stdout。该命令只能用于run-time Mbeans。
见B-23页的“SET”操作。
CREATE命令
用CREATE命令创建一个configration Mbean。如果创建成功则将OK返回给stdout。该命令只适用于run-time Mbeans。Mbean实例可以保存在config.xml文件中,也可以保存在安全域中,这取决于你在什么地方做的更改。
注意:在创建Mbeans时,同时创建了配置对象(configration objects)。
有关创建Mbeans的详细信息,可以参见以下页面的“Developing WebLogic Server Application”部分:
http://e-docs.bea.com/wls/docs61/programming/index.html.
语法
java weblogic.Admin [–url URL] [-username username] [-password password] CREATE –name name –type mbean_type [–domain domain_name]
java weblogic.Admin [–url URL] [-username username] [-password password] CREATE –mbean mbean_name
参数
定义
name
必需的参数。要创建的Mbean的名字。
mbean_type
必需的参数。When creating attibutes for multiple objects of the same type。
mbean_name
必需的参数。Mbean的完整名字。格式如下:
“domain:Type=type, Name=name
domain_name
可选参数。域的名字,例如,mudomain。如果没有指定domain_name,那么使用缺省域的名字。
例子
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 CREATE –mbean “mydomain:Type=Server,Name=acctServer”
DELETE命令
删除一个配置Mbean。如删除成果则把OK返回给stdout。该命令不能用于run-time Mbeans。
注意:在删除Mbeans时,同时会删除配置对象(configuration objects)
有关删除Mbeans的更多信息,可以参见以下页面的“Developing WebLogic Server Applications”部分
http://e-docs.bea.com/wls/docs61/programming/index.html.
语法
java weblogic.Admin [–url URL] [-username username] [-password password] DELETE {–type mbean_type|–mbean mbean_name}
参数
定义
mbean_type
必需的参数。When deleting attibutes for multiple objects of the same type
mbean_name
必需的参数。Mbean的完整名字。格式如下:
“domain:Type=type,Name=name”
Type指定了对象组的类型,Name是Mbean的名字。
例子
java weblogic.Admin -url localhost:7001 -username adminuser -password gumby1234 DELETE –mbean “mydomain:Type:Server,Name=AcctServer”
GET命令
显示run-time Mbean的属性。You can request a list of attributes for multiple objects of the same type by requesting attributes for the following:
ü 属于同一类型的所有Mbeans
GET {-pretty} -type mbean_type
ü 一个指定的Mbean
GET {-pretty} -mbean mbean_name
所指定的每一个Mbean的名字都包括在输出中。如果指定了 –pretty,那么每个属性的名字-属性值对将显示在新的一行中。
GET命令只能调用run-time Mbeans。
每个属性的名字-属性值对都指定在花括号中。这种格式可以简化解析输出信息,因此有利于脚本的编写。
输出中的Mbean的名字如下所示:
{mbeanname mbean_name {property1 value}{property2 value}. . .}
{mbeanname mbean_name {property1 value}{property2 value}...}
...
如果指定了-pretty参数,那么每个属性的名字-属性值对显示在新的一行中。所指定的每个Mbean的名字都包括在输出中,如下所示:
mbeanname: mbean_name
property1: value
property2: value
.
.
.
mbeanname: mbean_name
property1: value
property2: value
语法
java weblogic.Admin [–url URL] [-username username] [-password password] GET {-pretty} {–type mbean_type|–mbean mbean_name} [–property property1][–property property2]...
参数
定义
mbean_type
必需的参数。当要得到同一类型的多个对象的属性时,输出中将包括Mbean的名字。
mbean_name
Mbean的完整名字,格式如下:
“domain:Type=type,Location:location,Name=name”
Type指定了对象组的类型,Location指定了Mbean的位置,Name指定了Mbean的名字。
pretty
可选参数。列出Mbean的属性名。
注意:如果没有用这个参数指定属性名,那么将显示所有属性。
property
例子
在本例中,用户请求显示运行在localhost的7001端口上的服务器中的Mbean的属性:
java weblogic.Admin -url localhost:7001 GET -pretty -type Server
INVOKE命令
调用某一Mbean的指定方法(带参数)。该命令只适用于run-time Mbeans。用该命令调用Mbean的方法(非get或set Mbean属性的方法)
语法
java weblogic.Admin [–url URL] [-username username] [-password password] INVOKE {–type mbean_type|–mbean mbean_name} –method methodname [argument ...]
参数
定义
mbean_type
当调用同一类型的多个对象的属性时,该参数是必须的。参数中应该包含Mbean的完整包名,如下:
“domain:Name:name,Type=type,Application=application”
mbean_name
必需的参数。该参数设置为Mbean的完整名字。如下所示:
“domain:Type=type,Location=location,Name=name”
Type指出了对象组的类型。Location指对象的位置,Name指Mbean的名字。
当参数为一个String数组时,必须以以下格式传递参数:
“String1;String2;. . . ”
methodname
必需的参数。所调用的方法名。在方法名后,用户可以指定要传递的参数,如下所示:
“domain:Name=name,Type=type”
例子
下面的例子调用了一个名字为dmin_one的管理Mbean的getAttributeStringValue方法:
java weblogic.Admin -username system -password gumby1234 INVOKE -mbean mydomain:Name = admin_one, Type=Administrator -method getAttributeStringValue PhoneNumber
SET命令
该命令用于设置configuration Mbean的属性值,设置成功则将OK返回到stdout。该命令不能用于run-time Mbeans。
新设置的属性值保存在config.xml文件或安全域中,这取决于新的属性值是在哪里定义的。
语法
java weblogic.Admin [–url URL] [-username username] [-password password]SET{–type mbean_type|–mbean mbean_name} –property property1 property1_value [-property property2 property2_value]...
参数
定义
mbean_type
如果是设置同一类型的多个对象的属性时,必须设置该参数,并且必须包括Mbeans的完整名字,如下所示:
“domain:Name:name,Type=type,Application=application”
mbean_name
必需的参数。必须是Mbean的完整修饰名,格式如下:
“domain:Name=name,Location:location,Type=type”
其中:
ü Name设置了Mbean的名字
ü Location指定Mbean的位置
ü Type指定了对象组的类型
property
必需的参数。要设置的属性的名字
property _value
必需的参数。属性的值。
如果参数是一个Mbean数组,那么应该用以下格式传递参数
“domain:Name=name,Type=type;domain:Name=name,Type=type”
如果参数是一个String数组,那么应该用以下格式传递参数
“String1;String2;. . . ”
如果设置JDBC连接池属性,应该用以下格式传递参数:
“user:username;password:password;server:servername”
以下命令可以用来配置或管理连接池:
ü CREATE_POOL
ü RESET_POOL
ü DESTROY_POOL
ü ENABLE_POOL
ü DISABLE_POOL
ü EXISTS_POOL
正在开发之中。
语法
java weblogic.Admin …
参数
定义
Web服务器插件的参数
以下内容将描述Apache, Netscape与Microsoft IIS Web服务器插件的配置参数。主要有以下内容:
ü 概述
ü Web server插件的一般参数
ü Web server插件的SSL参数
web服务器插件的参数在配置文件中设置。各服务器插件的配置文件都有自己的名字与文件格式。详细内容,参见各插件的以下部分的内容:
ü 11-1页的“安装及配置Apache HTTP Server插件”
ü 12-1页的“安装及配置Microsoft Internat Information Server(ISAPI)插件”
ü 13-1页的“安装及配置Netscape Enterprise Server插件(NSAPI)”
在web server插件的配置文件中设置下表中所描述的参数。
Web server插件的一般参数
注意:所有参数都区分大小写。
参数
默认值
描述
WebLogicHost
(如果代理到单个WebLogic服务器,那么应该设置该参数)
none
HTTP请求被递交到该WebLogic Server主机(或者是定义在WebLogic Server中运行的Web server中的虚拟主机名)
如果使用集群,那么应该使用WebLogicCluster参数而不是WebLogicHost参数。
WebLogicPort
(如果代理到单个WebLogic服务器,那么应该设置该参数)
none
WebLogic服务器监听WebLogic连接请求的端口。(如果在插件与WebLogic服务器之间使用SSL,那么应该把该参数设置为SSL监听端口(见8-3页的“配置监听端口”)并将SecureProxy参数设置为ON)。
如果使用WebLogic集群,那么应该设置WebLogicCluster参数而不是WebLogicPort参数。
WebLogicCluster
(如果代理到一个WebLogic服务器集群,那么必须设置该参数)
none
集群中的WebLogic服务器列表,用于负载平衡目的。该列表由逗号分隔开的host:port组成。例如:
WebLogicCluster myweblogic.com:7001,
yourweblogic.com:7001,theirweblogic.com:7001
如果插件与WebLogic服务器之间使用SSL协议,那么将端口号设置为SSL监听端口(见8-3页的“配置监听端口”)并将SecureProxy参数设置为ON。
应该用该参数取代WebLogicHost与WebLogicPort参数,WebLogic Server首先查找WebLogicCluster参数,如果没有找到该参数,它将寻找并使用WebLogicHost与WebLogicPort参数。
插件对所有可用的集群成员进行轮询。该参数所指定的集群列表是服务器与插件共同维护的动态列表的初始值。WebLogic服务器与插件将根据新加入的、失败的以及恢复的集群成员的情况动态地更新集群列表。
如果将DynamicServerList参数设置为OFF(只适用于Microsoft Internet Information Server),那么集群列表的动态更新被禁用。
插件将请求导向集群中创建cookie的那个服务器上(请求包含cookie、URL-encoded会话或POST数据中的会话)。
PathTrim
none
在请求被转交到WebLogic服务器之前,被插件从原始URL中裁剪掉的字符串。例如:如果原始URL为
http://myWeb.server.com/weblogic/foo
被传递到插件进行解析且PathTrim参数被设置为/weblogic,那么传递到WebLogic服务器的URL变为:
http://myweblogic.server.com:7001/foo
PathPrepend
null
加在原始URL前的前缀字符串,该动作发生在PathTrim被裁剪后,请求转向WebLogic服务器之前。
ConnectTimeoutSecs
10
插件进行WebLogic服务器主机连接尝试的时间上限。该值应该大于ConnectRetrySecs参数。如果超过ConnectTimeoutSecs还没能连接成功,即使进行了适当次数的连接重试(见ConnectRetrySecs参数),也将把HTTP 503/Service Unavailable响应返回给客户端。
可以使用ErrorPage参数定制错误响应。
ConnectRetrySecs
2
该参数设置了两次WebLogic Server主机(或集群中的所有服务器)连接尝试之间,插件的休眠时间。该参数的值应该小于ConnectTimeoutSecs。插件在返回HTTP 503/Service Unavailable响应之前,它将进行的连接次数为ConnectTimeoutSecs除以ConnectRetrySecs所得的值。
如果不希望重试连接,那么应该将ConnectRetrySecs值应该与ConnectTimeoutSecs相等。不过,插件会进行两次连接尝试。
可以用ErrorPage参数定制错误响应。
Debug
OFF
设置调试操作时的日志类型。在生产系统中不建议你开启这些调试选项。
在UNIX系统中,调试信息被写到/tmp/wlproxy.log文件中;在Windows NT系统,调试信息被写到c:/temp/wlproxy.log文件中,你可以设置以下日志选项(其中HFC, HTW, HFW, HTC可以联合使用,它们之间用逗号隔开,如“HFC, HTW”):
ON
插件只记录报告性消息与错误消息
OFF
不记录调试信息
HFC
记录来自客户端消息、报告性消息以及错误消息的消息头。
HTW
记录发送到weblogic消息的头,报告性消息与错误消息
HFW
记录来自weblogic服务器消息的消息头,报告性消息与错误消息
HTC
记录发送到客户端消息的消息头,报告性消息与错误消息
ALL
记录发送到客户端以及客户端发送的消息的头,发送到WebLogic服务器以及WebLogic服务器发送的消息头,报告性消息,错误消息
DebugConfigInfo
OFF
启用特殊查询参数“_WebLogicBridgeConfig”。该参数可以被用来了解插件的配置参数的细节。
例如,如果把DebugConfigInfo设置为ON,那么“_WebLogicBridgeConfig”被启用。发送一个包含查询字符串?_WebLogicBridgeConfig的请求,插件将收集配置信息有运行时的统计信息并将这些信息返回给浏览器。在处理该请求时,插件没有连接到WebLogic服务器。
该参数只应该用于调试目的。消息的输出格式随版本的变化而不同。为了安全起见,在生产环境中应该将该参数设置为OFF。
StatPath(Microsoft Internet Information Server 插件没有这个参数。)
false
如果把该参数设置为真,插件在把请求传递到WebLogic服务器之前检查被转换的路径是否存在或及其访问权限。如果文件不存在,将把HTTP 404 File Not Found响应返回给客户端。如果文件存在,但它的权限不是world-readable,那么将返回HTTP 403/Forbidden响应。这两种情况下Web服务器处理这些响应的缺省机制是完成响应的体内容。如果WebLogic服务器的Web应用与Web服务器具有相同的文档根,那么该选项非常有用。
可以使用ErrorPage参数定制错误响应。
ErrorPage
none
可以制作自己的错误响应页面,在Web服务器不能将请求代理到WebLogic服务器时使用。
设置该参数的方式有两种:
作为相对URI(文件名)。插件自动将返回错误的Web应用的上下文路径加到URI中。对错误页面的请求是否回代理到WebLogic服务器取决于你对代理的配置(是MIME类型式代理还是路径式代理)。
作为绝对URI(建议)。使用错误页面的绝对路径能够使请求总是被代理到WebLogic服务器中的正确资源上。例如:
http://host:port/myWebApp/ErrorPage.html
HungServerRecoverSecs
300
定义了插件等待WebLogic服务器响应请求的时间。在等待了HungServerRecoverSecs时间后,插件还没有得到服务器的响应,那么它将宣布该服务器已经死机并失败转移到下一个服务器。应该把该参数设置为一个较大的值。如果所设置的值小于servlets进行处理的时间,那么会得到意想不到的后果。
最小值为:10
最大值为:600
Idempotent
ON
如果该参数设置为ON,那么当服务器在指定的HungServerRecoverSecs时间没有响应,那么插件将进行失败转移。如果设置为OFF,插件将不进行失败转移。如果所使用的是Netscape Enterprise Server插件或Apache HTTP Server插件,不同的URL与MIME类型可以有不同的Idempotent参数设置。
CookieName
JSESSIO
NID
如果改变了WebLogic服务器Web应用中的WebLogic服务器会话cookie的名字,那么相应地应该将插件的CookieName参数设置为相同的值。WebLogic会话cookie的名字在特定于WebLogic的分发描述符的<session-descriptor>元素中定义(见http://e-docs.bea.com/wls/docs61/webapp/ weblogic_xml.html#session-descriptor
DefaultFileName
none
如果URI为“/”,插件将执行以下步骤:
1.裁剪掉PathTrim参数所指定的路径
2.在后面加上DefaultFileName所指定的文件名
3.在前面加上PathPrepend参数所指定的值
这样处理可以防止WebLogic服务器的重定向。将DefaultFileName设置为代理WebLogic服务器的Web应用的缺省欢迎页面。例如,如果DefaultFileName被设置为welcome.html,那么下面这个HTTP请求:
“http://somehost/weblogic”变为:http://somehost/weblogic/welcome.html。只有当所有被重定向的web应用指定相同的欢迎页面,该参数才起作用。更多信息,可以参见以下页面的“Configuring Welcome Pages”部分:http://e-docs.bea.com/wls/docs61/webapp/components
MaxPostSize
-1
POST数据的允许的最大长度。如果内容的长度超过MaxPostSize,插件将返回一个错误消息。如果设置为-1,将不检查POST数据的长度。设置该参数可以防止通过发送大量数据使服务器过载的拒绝服务。
MatchExpression
(该参数只适用于Apache HTTP服务器)
none
如果采用MIME类型方式代理,应该在一个IfModule块中使用MatchExpression参数设置文件名模式。
下面的一个例子说明了使用MIME类型方式的代理:
<IfModule mod_weblogic.c>
MatchExpression *.jsp
WebLogicHost=myHost|paramName=value
</IfModule>
下面的一个例子说明了使用路径方式的代理:
<IfModule mod_weblogic.c>
MatchExpression /weblogic
WebLogicHost=myHost|paramName=value
</IfModule>
FileCaching
ON
当该参数设置为ON,如果请求中的POST数据大于2084个字节,那么POST数据保存在硬盘的一个临时文件中,然后以8192字节为单位传给WebLogic服务器。但将FileCaching设置为ON,可能引起的问题是浏览器上将显示一个进展条表明正在进行下载。即使文件还在传输,浏览器也会显示下在已经完成。
如果该参数设置为OFF,那么当POST数据大于2084字节时,数据保存在内存中并以8192字节为单位发送到WebLogic服务器。将参数设置为OFF可能会引起问题。因为插件不能进行失败转移,因此如果请求被处理时WebLogi C服务器宕机了,那么数据将被丢失。
WlForwardPath
(只有Microsoft IIS才需要定义该单数)
null
如果WLForwardPath设置为“/”,那么所有请求都被代理到WebLogic服务器。如果只想代理以特定字符串开头的请求,那么应该将WlForwardPath参数设置为这个字符串。例如,将WlForwardPath设置为/webogic,那么所有以/weblogic开始的请求都将被代理到WebLogic服务器。
如果采用路径方式的代理,那么必须设置该参数。可以为该参数设置多个字符串,字符串之间用逗号隔开,例如:WlForwardPath=/weblogic,/bea。
KeepAliveSecs
(不要为Apache HTTP服务器版本1.3.x定义该参数)
30
该参数定义了隔多长时间后,插件与WebLogic服务器之间的非活动连接将被关闭。要使该参数生效,KeepAliveEnabled参数应该设置为true。
该参数的值应该小于或等于在管理控制台的Server/HTTP标签页中Duration字段的值,或者是server mbean的keepAliveSecs属性的值。
KeepAliveEnabled
True
启用插件与WebLogic服务器之间的连接池。
QueryFromRequest
(只适用于Apache HTTP服务器)
OFF
如果该参数设置为ON,那么Apache插件使用(request_rec *)r->the request将查询字符串传递到WebLogic服务器。(详细信息,请参见Apache文档。)这种行为在以下场合非常有用:
当Netscape 版本4.x浏览器发出的请求的查询字符串中包含空格。
如果你在HP上使用Raven Apache 1.5.2
如果该参数设置为OFF,那么Apache插件使用(request_rec *)r->args将查询字符串传递到WebLogic服务器。
MaxSkips
10
只有当DynamicServerList设置为OFF时,该参数的设置才生效。如果WebLogicCluster参数所设置的列表或由WebLogic服务器返回的动态集群列表中的WebLogic服务器失败了,那么该失败的服务器被标记为“坏的”,同时插件将连接到列表中的下一个服务器中。
MaxSkip设置了插件重试“坏”服务器的次数。每当插件接收到一个唯一请求(即不包含cookie的请求)时,它会连接到列表中的一个新服务器上
DynamicServerList
(只能在Microsfot IIS中设置该参数)
ON
如果该参数设置为OFF,在对由插件所代理的请求进行负载平衡时,不使用动态集群列表,而是使用WebLogicCluster参数指定的静态列表。通常情况下,该参数应该设置为ON。
将该参数设置为OFF,可能会产生以下影响:
如果静态列表中的一或多个服务器失败了,那么插件可能会因为重试连接到失效服务器而导致性能的降低。
当你在集群中新增了一个服务器,如果不重新定义这个参数,插件就不能将请求代理到这个新服务器上。WebLogic服务器会自动地将新服务器加到动态服务器列表,从而使新服务器成为集群的一部分。
Web server插件的SSL参数
注意:以下所有参数都区分大小写。
参数
默认值
描述
SecureProxy
OFF
如果该参数设置为ON,那么WebLogic服务器插件与WebLogic服务器之间的通信将采用SSL协议。在设置该参数之前,不要忘了先定义WebLogic服务器监听SSL请求的端口。
该参数可以在两个层次上定义:在主服务器配置或虚拟机配置中定义。如果没有在虚拟主机的配置中指定这个参数,那么它将从主服务器的配置中继承SSL配置。
TrustedCAFile
none
包含数字证书的文件的名字。该数字证书由可靠的证书管理机构发放并被WebLogic服务器插件使用。如果SecurityProxy参数设置为ON,那么必须设置这个参数。
文件名必须包括这个文件的全路径。
RequireSSLHostMatch
true
该参数决定WebLogic服务器代理插件所连接的主机的名字是否必须与代理所连接的WebLogic服务器所使用的数字证书中的Subject Distinguished Name字段匹配。
SSLHostMatchOID
22
The ASN.1 Object ID (OID) that identifies which field in the Subject
Distinguished Name of the peer digital certificate is to be used to
perform the host match comparison. The default for this parameter
corresponds to the CommonName field of the Subject Distinguished
Name. Common OID values are:
_ Sur Name—23
_ Common Name—22
_ Email—13
_ Organizational Unit—30
_ Organization—29
_ Locality—26
分享到:
评论

相关推荐

    weblogic 服务器管理(中文版)

    第1章,“WebLogic服务器管理概述”描述了WebLogic服务器管理子系统的架构。 第2章,“启动与终止WebLogic服务器”说明了启动与终止WebLogic服务器的步骤 第3章,“节点管理器”说明了如何设置和使用节点管理器。...

    WebLogic服务器管理概述

    WebLogic服务器管理概述

    BEA WebLogic 服务器管理

    BEA WebLogic 服务器管理域、 管理服务器以及受管理的服务器 启动管理控制台 运行时的对象与配置的对象 对日志消息的集中访问

    WEBLOGIC服务器管理.doc

    WEBLOGIC服务器管理

    WebLogic服务器管理.doc

    WebLogic服务器管理.doc WebLogic服务器管理.doc

    WebLogic服务器管理

    WebLogic服务器管理

    WebLogic服务器管理(安装、配置和部署)

    WebLogic服务器管理 1 1. 安装服务器 2 2. 安装域 2 3. 启动服务控制台 7 4. 配置JNDI 8 5. 在MyEclipse中集成WebLogic服务器 12 6. 部署应用程序 13 7. 其他 15 7.1 JNDI、已部署应用的描述信息保存在哪 15 7.2 ...

    Administration-guide-Verified BEA WebLogic 服务器管理.doc

    Administration-guide-Verified BEA WebLogic 服务器管理

    weblogic 管理指南

    第1章: WEBLOGIC服务器管理概述 域、管理服务器与受管服务器 启动管理控制台 运行时对象与配置对象 日志消息的集中访问 第2章: 启动与终止WEBLOGIC服务器 WEBLOGIC管理服务器与WEBLOGIC受管服务器 启动时的...

    Weblogic使用手册大全详解 中文版

    1.WEBLOGIC服务器管理概述 2.节点管理器 3.配置WEBLOGIC服务器与集群 4.用日志消息管理WEBLOGIC服务器 5.分发应用 6.配置WEBLOGIC服务器的WEB组件 7.代理对另一个HTTP服务器的请求 8.代理对WEBLOGIC集群的请求 9....

    Weblogic 管理

    第1章: WEBLOGIC服务器管理概述 第2章: 启动与终止WEBLOGIC服务器 第3章: 配置WEBLOGIC服务器与集群 第4章: 监控WEBLOGIC域 第5章: 用日志消息管理WEBLOGIC服务器 第6章: 分发应用 第7章: 配置WEBLOGIC服务器...

    Weblogic 服务器管理

    NULL 博文链接:https://xiaofengtoo.iteye.com/blog/1123606

    weblogic adminitration guide

    关于中间件weblogic的详细说明,1 包括WebLogic服务器管理概述,2 启动与终止WebLogic服务器,3 节点管理器,4 配置WebLogic服务器与集群,5 监控WebLogic域,6 用日志消息管理WebLogic服务器,7 分发应用,8 配置...

    weblogic 管理运维

    WebLogic服务器管理概述本章将介绍 WebLogic 服务器的管理知识

    weblogic管理指南

    WebLogic服务器管理概述、节点管理器、配置WebLogic服务器与集群、用日志消息管理WebLogic服务器...

    Weblogic使用手册

    Weblogic使用手册 域、管理服务器与受管服务器 9 启动管理控制台 10 运行时对象与配置对象 11 日志消息的集中访问 12 WEBLOGIC...版本WEBLOGIC服务器升级 22 从管理控制台终止WEBLOGIC服务器 22

Global site tag (gtag.js) - Google Analytics