WLST迁移JDBC配置手记

rel="File-List" href="file:///C:%5CDOCUME%7E1%5CWANGYU%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">

       最近有一个平台级应用要上线,其中有一台服务器上跑了一个超级大应用,由数家公司共同开发,包含20来个子系统。为了稳妥起见,申请了一台新的服务器,先在新服务器上布署老的系统,然后更新平台。这样需要把原来WebLogic方面的配置迁移到新环境中来,我记得WLST有这方面的功能,可以把config.xml文件导出为Jython脚本,然后在新的WebLogic服务器上执行就可以完成应用迁移。因为这些应用大多是Struts+Spring+Hibernate的应用,从WebLogic角度看就是一个Web应用而已。相关的WebLogic配置主要是一些ConnectionPoolDatasource等,因为是多家公司配置的,所以我想把配置带密码一块搬过去,后来发现我的这种想法是行不通的。

       WLSTWebLogic Script Toolkit的简称,下载地址https://wlst.projects.dev2dev.bea.com/。这个工具在8.1的时候提供免费下载,9.0开始集成到WebLogic中去了,取代了原来的WebLogicAdmin系列命令。有OnlineOffline两个版本,Offline版比较大,可以创建Domain,这里用的是Online版。

       启动前要做一些准备工作,我写了一个简单的wlst.bat文件,如下:

@echo off

setlocal

 

 

set JAVA_HOME=D:/bea81/jdk142_11

SET WLS_HOME=D:/bea81/weblogic81

SET WLST_DIR=D:/DevTools/wlst_v64

 

set PATH=%JAVA_HOME%/bin;%WLS_HOME%/server/bin;%PATH%

 

SET CLASSPATH=%CLASSPATH%;%WLS_HOME%/server/lib/weblogic.jar

SET CLASSPATH=%CLASSPATH%;%WLST_DIR%/wlst.jar

SET CLASSPATH=%CLASSPATH%;%WLST_DIR%/jython.jar

 

java weblogic.WLST

 

endlocal

@echo on

然后就可以执行configToScript(“…//config.xml”,”…//config.py”)命令,会在指定的目录下生成两个文件config.pyconfig.py.propertiesconfig.xml中所有修改过的配置都会写到config.py中。执行这条命令无需登陆AdminServer,只要能找到config.xml就行。

       把这两个文件拷贝到新的服务器上,第一件事情是在config.py中修改config.py.properties的路径,在def initConfigToScriptRun():loadProperties("c:/temp/config56.properties")处,以便执行脚本时能找到相应的配置文件。因为我只需要复制JDBC相关的配置,所以还需要去掉很多无关的东西。

 

       因为对Python不是很熟悉,一开始没有什么头绪,创建domain时尽量保持相关配置完全一样,比如domain的名称,AdminServer的名字等,然后就开始执行。首先connect(“username”, “password”, “ADMIN_URL”)ADMIN_URLt3://localhost:7001等。然后执行execfile(‘…//config.py’)。注意execfile好像没有帮助,也就说help(‘execfile’)说找不到相关的东西。接下来就是不断地修改错误,因为两个服务器的配置还是有差别的,最大的一个差别是,老服务器名字在安装WebLogic后修改过,所以NodeManager会有问题,得重新创建一个新的KeyStore才能保证key的名字和服务器名字相同。而在新的服务器上这一点是不必要的。

       最先想到的办法是把Keystore有关的部分注释掉,跑着跑着除了别的问题,另外发现别的问题,如Server已经创建而出错等,有些配置无需更新过来,如SSL等。后来慢慢看出点门道来了,这个Jython文件,一开头是一堆函数定义,最后是对这些函数的调用。如下:

# Calling all the defined Functions ...

# define this global variable

startedNewServer=0

initConfigToScriptRun()

Server_landman0()

Server_GisServer1()

Server_zhywServer2()

#

# Targets that may be used

 

serverTarget1 = getTarget("Server/"+GisServerSERVER)

serverTarget2 = getTarget("Server/"+zhywServerSERVER)

serverTarget0 = getTarget("Server/"+landmanSERVER)

 

SSL_landman3()

WebServer_landman4()

Log_landman5()

ExecuteQueue_weblogic_kernel_Default6()

 

只要把调用这些函数的地方注释掉就可以了,函数定义可以不去理它,于是我把除JDBC方面的东西保留外,其它全部注释掉,速度比原来快了很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值