技术开发 频道

WebSphere Application Server无人执守部署


【IT168技术文档】Java服务器端程序的部署问题一直让人比较头痛,特别是was6,安装一个复杂的ear包有很多配置工作需要做,不仅复杂而且散步在很多环节当中,即使是一线开发人员也很容易出错或者遗漏,交付给测试和部署人员则更是问题不断,即使连篇累牍的编写部署手册也很难取得一个比较好的效果。经过很多评估工作之后,我们决定采用was自带的命令行工具(websphere/appserver/profiles/appserver01/bin/wsadmin),编写jacl脚本,集成到ant中,利用ant强大的项目构建能力,简化测试、部署工作。下面的描述都是以我们自身项目为例。

    做为一个典型的java企业应用,我们在部署阶段要做的事情有:
1.定义一个J2C认证
2.配置一个Oracle 10g数据源
3.配置一个WebSphere MQ队列连接工厂
4.配置多个WebSphere MQ Queue队列
5.配置多个侦听器端口
6.安装多个EAR包

    以上每一个步骤都可以当作一个脚本的一部分来执行,但是为了讲述方便,我们将把不同的脚本分开描述、分开执行。脚本可以任意命名,但是因为我们使用jacl来编写的,所以我们还是遵循了*.jacl的规则,jacl脚本是一个很类似于tcl语言的东西。执行这些脚本有一个统一的方法:%WAS install%\profiles\appserver01\bin wsadmin –f test.jacl 。appserver01只是我们自己的server名称,请大家自行对照自己的was配置。test.jacl是脚本文件的名称。

首先建立J2C认证,脚本j2c.jacl:

#执行要配置的cell set myCell zxhNode01Cell set security [$AdminConfig getid /Cell:$myCell /Security:/] $AdminConfig required JAASAuthData #认证别名 set alias [list alias dcmp2] #用户id set userid [list userId dcmp2] #密码 set password [list password dcmp2] set jaasAttrs [list $alias $userid $password] $AdminConfig create JAASAuthData $security $jaasAttrs $AdminConfig save

    执行该脚本将创建一个别名、帐号、密码均为dcmp2的j2c认证,该认证会被后面的数据源使用。

    现在建立Oracle 10g数据源,脚本dbpool.jacl:

#指定cell set myCell zxhNode01Cell #指定要配置的node set myNode zxhNode01 set node [$AdminConfig getid /Cell:$myCell /Node:$myNode /] #创建jdbc provider $AdminConfig attributes JDBCProvider set implementationClassName [list implementationClassName oracle.jdbc.pool.OracleConnectionPoolDataSource] #jdbc provider的名称 set name [list name Oracle10g] set classpath [list classpath E:/DCMP2.0/lib/OracleDriver/ojdbc14_10.jar] set jdbcAttrs [list $name $implementationClassName $classpath] $AdminConfig create JDBCProvider $node $jdbcAttrs $AdminConfig save #创建DataSource set jdbc [$AdminConfig getid /Cell:$myCell /Node:$myNode/JDBCProvider:Oracle10g/] $AdminConfig attributes DataSource set jndi [list jndiName jdbc/dcmp2] set name [list name dcmp2] set dsAttrs [list $jndi $name] set newds [$AdminConfig create DataSource $jdbc $dsAttrs] $AdminConfig save #指定数据库url set url [list [list name URL] [list value jdbc:oracle:thin:@127.0.0.1:1521:workdb] [list type java.lang.String]] #指定连接池的db helper类 set helper [list datasourceHelperClassname com.ibm.websphere.rsadapter.Oracle10gDataStoreHelper] #认证别名 set xauthDataAlias_attr [list authDataAlias dcmp2] set xnewprops [list $url] set xresprops [list resourceProperties $xnewprops] set xps_attr [list propertySet [list $xresprops]] set xattrs [list $helper $xauthDataAlias_attr $xps_attr] $AdminConfig modify $newds $xattrs $AdminConfig save #配置连接池 $AdminConfig attributes ConnectionPool set maxConnections [list maxConnections 40] set minConnections [list minConnections 10] set unusedTimeout [list unusedTimeout 60] set poolAttrs [list $maxConnections $minConnections $unusedTimeout] $AdminConfig create ConnectionPool $newds $poolAttrs $AdminConfig save

该脚本执行了三个步骤,首先创建一个名为Oracle10g的jdbc provider,然后在该provider上创建了一个名为dcmp2的数据源,并且配置了一些oracle数据源独有的参数,包括数据库存储的helper类、数据库的url等。需要注意的是我们并没有指定连接数据库的帐号和密码,所以它会以J2C中指定的帐号信息去连接。当然,你也可以在这里单独配置,写到propertySet当中去就可以了。然后我们还修改了连接池的参数,包括最大连接数、最小连接数等。

0
相关文章