如何将websphere服务器配置(数据源、jms等)分发到多个实例?

如何将websphere服务器配置(数据源、jms等)分发到多个实例?,websphere,websphere-8,Websphere,Websphere 8,对于开发团队来说,每个人都必须设置和配置应用服务器。在本例中,我们使用的是WebSphere8.5 我正在寻找一个简单的方法来做到这一点。通常,您可以使用WAS_HOME/bin/ProfileManagement中的概要文件管理工具来执行此操作,并且此工具运行良好。但是在安装websphere server之后,仍然需要配置服务器概要文件——创建数据源、JMS队列、总线、变量等等。因此,我认为如果有一种方法可以将这些配置应用到现有的概要文件中,那就太好了 我的第一次尝试是只配置一个配置文件,然

对于开发团队来说,每个人都必须设置和配置应用服务器。在本例中,我们使用的是WebSphere8.5

我正在寻找一个简单的方法来做到这一点。通常,您可以使用WAS_HOME/bin/ProfileManagement中的概要文件管理工具来执行此操作,并且此工具运行良好。但是在安装websphere server之后,仍然需要配置服务器概要文件——创建数据源、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安装的分发吗?

我刚刚想起了wsadmin工具,并猜测这是实现我的需求的最佳方式

幸运的是,IBM提供了一些示例,向您展示了如何使用jython或jacl脚本创建或修改数据源

例如,可以在(zip中的ex7.py文件)中找到如何创建数据源的示例

希望这能帮助其他有相同或类似问题的人。

我建议您使用并创建一个用于资源创建的脚本。另外一个好处是,您可以直接从RAD运行它(右键单击RunAs->Administrative Script)

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


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

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

  • 从配置存储库中提取数据以创建属性 档案
  • 更新属性文件以操纵配置,如图所示 需要
  • 将属性文件中的更新数据应用于目标 配置存储库
请参见此处的更多详细信息:



谢谢,我导出了完整的配置,现在我尝试将其导入到另一个配置文件中。有些配置工作正常,但有些会导致错误。我将在接下来的几天内对此进行调查。
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()