信息化 频道

CRM理念、软件、实施,一个都不能少

【IT168 技术文档】

    在一个使用weblogic管理项目中,可能有众多的配置。每个人需要建立domain,需要发布程序,配置Connection Pool,Data Source,JMS等程序中需要的资源,我们不得不为大家准备一个文档,每个人按照文档操作自己的Weblogic,这样不仅繁琐,也容易出错,通过建立这些简单的ant任务,每个人就可以省去这样的步骤。另外,在程序上机发布的时候,我们通常不得不为客户说明配置的过程,而使用这样的Ant任务,我们可以建立简单的安装程序,将程序自动安装配置好,并且生成启动脚本。

   环境介绍

操作系统:Windows XP sp1
Weblogic:weblogic8.1 server sp3
我的BEA安装在D:/bea,Weblogic在D:/bea/weblogic81
所以:
beahome=D:/bea
wlhome=D:/bea/weblogic81 

    建立准备的环境与初始化的Ant任务

    1.1 准备可以运行的环境
    根据weblogic的admin_ref文档中说明,使用wlserver和wlconfig,必须首先运行WL_HOMEserverbin下的setWLSEnv.cmd(UNIX下是setWLSEnv.sh),我开始以为并不必要的,但是经过验证发现wlserver可以指定classpathref参数,所以可以不必从系统环境变量中读取,但wlconfig却不可以使用classpathref参数,而只可以从环境变量中得到参数,所以在运行ant的命令之前确实需要用setWLSEnv.cmd处理一下环境变量,为此可以写了个最简单的脚本。

    首先介绍一下目录结构:
│ build.properties
│ build.xml
│ projectcmd.bat
│ readme.txt

└─web
│ index.jsp
│ index.jsp.bak

└─WEB-INF
web.xml

    build.properties存放一些需要更改的变量值,build.xml是Ant的build文件,web是我们需要发布的Web Application的目录,这里做的非常简单,只包括一个简单的jsp。为了能够从一个已经设定好环境变量的命令行窗口开始我们写下这个脚本,然后存放为projectcmd.bat,内容为:

start D:/bea/weblogic81/server/bin/setWLSEnv.cmd

    这样的话,在Windows下直接点击projectcmd.bat就会弹出一个新窗口,然后我们得到一个准备好的命令行窗口,输出如下:

CLASSPATH=d:beaJDK141~1libtools.jar;d:beaWEBLOG~1serverlibweblogic_sp.j
ar;d:beaWEBLOG~1serverlibweblogic.jar;d:beaWEBLOG~1serverlibojdbc14.ja
r;D:tooljavamysqlmysql-connector-java-3.0.12-production-bin.jar

PATH=d:beaWEBLOG~1serverbin;d:beaJDK141~1jrebin;d:beaJDK141~1bin;C:W
INDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;D:BorlandJBuilder2005thir
dpartyantbin;d:beaWEBLOG~1serverbinoci920_8

Your environment has been set.
E:projectleon>

    在这个窗口下就可以直接运行我们后面使用的Ant命令。 

    1.2 Ant的初始化任务
<target name="init" description="建立需要的任务">
<taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer"/>
<taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig"/>

<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/>
</target>
    这三个任务,就是我们整个文章中需要的weblogic任务。
    在运行ant init后,如果没有错误,说明三个任务,已经建立起来,注意我们没有指定classpathref,因为环境变量中已经有了。

    1.3设置build.properties的基本配置
    修改开头的两项参数为自己的机器安装的参数

beahome=D:/bea
wlhome=D:/bea/weblogic81

    2,使用wlserver任务建立Domain和Server

    为建立自己的运行环境,首先必须建立自己的Domain及相应的Server,wlserver任务为我们提供机会可以自动化这个过程。
<target name="new-server" depends="init" description="初始化Domain和Server">
<delete dir="${server.dir}"/>
<mkdir dir="${server.dir}"/>
<wlserver host="${server.host}"
port="${server.port}"
username="${server.username}"
password="${server.password}"
dir="${server.dir}"
action="start"
beahome="${beahome}"
weblogichome="${wlhome}"
generateConfig="true"
servername="${server.name}"
domainname="${domain.name}"
/>
</target>

    里面所有的变量定义在build.properties

domain.name=antdomain
server.host=localhost
server.port=7001
server.username=weblogic
server.password=weblogic
server.name=antserver
server.dir=./myserver

    这些参数的意思显而易见,server.dir是将要建立的domain的目录,这里有一些语义上矛盾,我们注意些就可以了。username和password是将来要建立的admin server的管理员用户与密码,这里没有使用加密的方式,是因为简单的原因,后面再说加密的方式。

generateConfig="true"这样表示我们是建立一个新的domain。
action="start"表示是开始server。

    还有一个参数是productionmodeenabled,也就是是否为生产模式,可以设为true或是false,默认识开发模式。

    在以上参数下运行,在根目录生成myserver目录
├─antserver
│ ├─.internal
│ ├─.wlnotdelete
│ │ └─extract
│ │ ├─antserver_console_console
│ │ │ ├─jarfiles
│ │ │ └─public
│ │ ├─antserver_uddiexplorer_uddiexplorer
│ │ │ ├─jarfiles
│ │ │ └─public
│ │ ├─antserver_uddi_uddi
│ │ │ ├─jarfiles
│ │ │ │ └─WEB-INF
│ │ │ │ └─lib
│ │ │ └─public
│ │ ├─antserver_wl_management_internal1_wl_management_internal1
│ │ │ ├─jarfiles
│ │ │ └─public
│ │ └─antserver_wl_management_internal2_wl_management_internal2
│ │ ├─jarfiles
│ │ └─public
│ └─ldap
│ ├─backup
│ ├─conf
│ ├─ldapfiles
│ ├─log
│ └─replicadata
├─applications
│ └─.wlnotdelete
└─configArchive

    这个目录非常像通过Configuration Wizard生成的domain目录,要简单一些,但对于开发已经足够了。我们可以使用myserver目录下生成的startantdomain.cmd来启动我们生成的domain,我们后面的一些操作也需要这个server启动中运行,有些操作则需要关掉这个server。

    一个小问题,在我的环境下会出现以下这个错误:
[wlserver] java.io.IOException: CreateProcess: chmod +x startantdomain.sh error=2
    这是个小Bug,这条语句必须在UNIX环境下才能运行,用来赋予startantdomain.sh执行权,在Windows环境下当然是错误,希望Bea在下个版本运行这个命令前判断一下系统环境。

0
相关文章