我正在使用在线WLST脚本在Docker镜像构建期间配置WebLogic服务器。基本上,docker镜像构建启动WebLogic并执行以下脚本
import os
import time
import getopt
import sys
import re
# Deployment Information
domainname = os.environ.get('DOMAIN_NAME', 'base_domain')
domainhome = os.environ.get('DOMAIN_HOME', '/u01/oracle/user_projects/domains/' + domainname)
cluster_name = os.environ.get("CLUSTER_NAME", "DockerCluster")
admin_name = os.environ.get("ADMIN_NAME", "AdminServer")
connect(username,password,server_url)
edit()
print ""
print "================== DataSource ==================="
startEdit()
# Create Datasource
# ==================
cd('/')
cmo.createJDBCSystemResource(dsname)
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cmo.setName(dsname)
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cd('JDBCDataSourceParams/' + dsname)
set('JNDINames', jarray.array([String(dsjndiname)], String))
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cd('JDBCDriverParams/' + dsname)
cmo.setDriverName(dsdriver)
cmo.setUrl(dsurl)
set('PasswordEncrypted', encrypt(dspassword))
print 'create JDBCDriverParams Properties'
cd('Properties/' + dsname)
cmo.createProperty('user')
cd('Properties/user')
cmo.setValue(dsusername)
print 'create JDBCConnectionPoolParams'
cd('/JDBCSystemResources/' + dsname + '/JDBCResource/' + dsname)
cd('JDBCConnectionPoolParams/' + dsname)
set('TestTableName','SQL SELECT 1 FROM DUAL')
# Assign
# ======
#assign('JDBCSystemResource', dsname, 'Target', admin_name)
#assign('JDBCSystemResource', dsname, 'Target', cluster_name)
cd('/SystemResources/' + dsname)
set('Targets',jarray.array([ObjectName('com.bea:Name=' + targetname + ',Type=' + targettype)], ObjectName))
# Update Domain, Close It, Exit
# ==========================
#save()
activate()
print ""
#disconnect()
exit()
问题是,数据库主机在构建时不存在,因为它是docker-compose环境中另一个docker容器的容器名称。使用此脚本,在数据源上设置目标会引发异常,因为无法解析主机名,因此激活调用失败,以及依赖于数据源的所有以下WLST脚本。但是,我不希望在整个环境启动并运行后手动设置目标。在这种情况下如何避免异常?
答案 0 :(得分:0)
将数据源的初始容量和最小容量设置为0,这样可以在不进行测试的情况下进行激活,并且应该跳过错误。