如何将websphere服务器配置(datasources,jms,...)分发到多个实例?

时间:2014-07-23 06:46:41

标签: websphere websphere-8

对于开发人员团队而言,每个人都必须设置和配置应用程序服务器。在我们的例子中,我们使用的是websphere 8.5。

我正在寻找一种简单的方法来做到这一点。通常使用位于WAS_HOME / bin / ProfileManagement中的配置文件管理工具来执行此操作,此工具可以很好地运行。但是在安装websphere服务器之后,仍然需要配置服务器配置文件 - 创建数据源,JMS队列,总线,变量等。所以我认为如果有办法将这些配置应用于现有的配置文件会很好。

我的第一次尝试是只配置一个配置文件,然后使用

进行配置备份
 %WAS_HOME%/bin/backupConfig.bat

但配置包含例如主机名和其他主机相关配置。所以backupConfig.bat工具不是我想要的。

我想到的下一个想法是,我可以创建一个特殊的profileTemplate。以便其他人可以使用配置文件管理工具并使用此模板。但模板结构似乎不是为了定制。很多文件和几乎没有文档可以找到如何创建自己的配置文件模板。

所以我遇到了扩充模板。使用这些模板(顾名思义)将特定配置添加到现有配置文件。我发现了很多关于如何将扩充应用于现有配置文件的文档,但没有关于如何创建扩充的文档。

最后我认为必须有一些方法可以导出websphere数据源,总线,jms等配置,并将它们应用到其他配置文件中,因为在非常大的安装中,运营团队必须具备这种能力。

我知道我可以向EAR添加特定于容器的描述符。例如。 META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/resources.xml。但我不想构建特定于环境的EAR文件,因为它将我们的构建与基础架构耦合,因此我们必须在操作改变基础架构时构建和重新部署,例如,主机名,IP,密码。

有没有人知道如何管理数据源,总线,jms等在多个websphere安装中的分布?

3 个答案:

答案 0 :(得分:3)

除了wsadmin脚本 - 这些脚本非常适合这类任务外,我还建议使用基于属性的配置。它可能对您更有用,因为它允许一次导出许多配置对象,然后将其应用于不同的环境。它也可能更容易一些,因为你使用纯文本文件而不是jython脚本。

基于属性文件的配置使您能够:

  • 从配置存储库中提取数据以创建属性 文件。
  • 更新属性文件以操作配置,如 需要。
  • 将属性文件中的更新数据应用于目标 配置库。

在此查看更多详情:
Properties-based configuration
Infocenter documentation
Education assistant

答案 1 :(得分:1)

我建议你使用wsadmin shell scripting并创建一个资源创建脚本。奖励是您可以直接从RAD运行它(右键单击Run As-> Administrative Script)。

以下是Jython中用于创建JDBC资源以及JAAS登录信息的完整示例(注意:我使用的是Oracle数据库,根据您使用的数据库,您的设置可能会有所不同):

cell=AdminConfig.showAttribute(AdminConfig.list("Cell"), "name")
node=AdminConfig.showAttribute(AdminConfig.list("Node"), "name")

#Add JAAS credentials 
print "Adding JAAS credentials"
security = AdminConfig.getid('/Cell:'+cell+'/Security:/') 
alias = ['alias', node+'/dbUser'] 
userid = ['userId', 'DBUSER'] 
password = ['password', 'PASSWORD'] 
jaasAttrs = [alias, userid, password] 
AdminConfig.create('JAASAuthData', security, jaasAttrs) 
AdminConfig.save()  

#Add JDBC jar path 
print "Adding JDBC jar path"
AdminTask.setVariable('[-variableName ORACLE_JDBC_DRIVER_PATH -variableValue ${WAS_INSTALL_ROOT}/lib/ext -scope Cell='+cell+',Node='+node+']') 
AdminConfig.save()

#JDBC Provider print "Adding JDBC Provider"
AdminTask.createJDBCProvider('[-scope Node='+node+',Server=server1  -databaseType Oracle -providerType "Oracle JDBC Driver" -implementationType "Connection pool data source" -name "Oracle JDBC Driver" -description "Oracle JDBC Driver-compliant Provider." -classpath ${ORACLE_JDBC_DRIVER_PATH}/ojdbc6.jar]') 
AdminConfig.save()

#JDBC Datasources print "Creating Datasource"
AdminJDBC.createDataSourceAtScope("Node="+node+",Server=server1", "Oracle JDBC Driver", "test", "jdbc/test", "com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper", "jdbc:oracle:thin:@10.0.0.1:1521:TEST",  [['componentManagedAuthenticationAlias', node+'/test'], ['containerManagedPersistence', 'true']])   
AdminConfig.save()

答案 2 :(得分:0)

我只是重新编写了wsadmin工具并猜测它是实现我的要求的最佳方式。

幸运的是,IBM提供了sample scripts,它向您展示了如何使用jython或jacl脚本创建数据源或修改它们。

例如,可以在Administration scripts (1-12) -- Jython version(zip中的文件ex7.py)中找到如何创建数据源的示例

希望这可以帮助那些有相同或类似问题的人。