【问题标题】:How to distribute websphere server configuration (datasources,jms,...) to multiple instances?如何将 websphere 服务器配置(数据源、jms、...)分发到多个实例?
【发布时间】:2014-07-23 06:46:40
【问题描述】:

对于一个开发团队来说,每个人都设置和配置应用程序服务器至关重要。在我们的例子中,我们使用的是 websphere 8.5。

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

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

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

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

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

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

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

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

有谁知道如何管理数据源、总线、jms 等到多个 websphere 安装的分布?

【问题讨论】:

    标签: websphere websphere-8


    【解决方案1】:

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

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

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

    在此处查看更多详细信息:
    Properties-based configuration
    Infocenter documentation
    Education assistant

    【讨论】:

    • 谢谢,我导出了完整的配置,现在我尝试将其导入另一个配置文件。一些配置有效,但有些会导致错误。我将在接下来的几天内对此进行调查。
    【解决方案2】:

    我建议您使用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()
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-29
        • 2013-03-31
        • 1970-01-01
        相关资源
        最近更新 更多