【问题标题】:Adding datasource in weblogic 12c在 weblogic 12c 中添加数据源
【发布时间】:2017-02-20 21:29:13
【问题描述】:

有没有办法在 weblogic 中使用 xml 文件添加数据源,而不是通过控制台手动添加。 像这样的:

<Resource name="DS_WFMT_DATA" auth="Container"
        type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@10.81.34.8:1526:wfmtswvu"
        username="wfmt_data" password="sa1dview"
        maxActive="150" maxIdle="20" maxWait="10000"
        removeAbandoned="true" removeAbandonedTimeout="300" logAbandoned="true" />

        <Resource name="DS_DIRECTSTAFFWARE" auth="Container"
        type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@10.81.34.8:1526:wfmtswvu"
        username="swpro" password="staffpro1"
        maxActive="150" maxIdle="20" maxWait="10000" logAbandoned="true"/>

        <Resource name="DS_NIMS" auth="Container"
        type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@10.75.105.167:1521:nimsc"
        username="nims" password="nims123"
        maxActive="20" maxIdle="10" maxWait="10000"
        removeAbandoned="true" removeAbandonedTimeout="120" logAbandoned="true"/>

我知道当我添加数据源时,在路径 domain\base_domain\config\jdbc 的相应域中生成了一个 xml 文件,但它恰好包含加密密码。 因此,当我尝试使用手动添加数据源生成的 xml 文件添加新数据源时,无法添加。任何帮助将不胜感激。

【问题讨论】:

    标签: java xml database weblogic datasource


    【解决方案1】:

    在 domain\base_domain\config\jdbc 文件夹中创建一个新的数据源配置文件,该文件具有以下格式 TESTDB-1234-jdbc.xml 的唯一文件名。通常 MYDS 是数据源名称。

    打开 TESTDB-1234-jdbc.xml 文件并按如下进行编辑。 (请记住更改以下值以匹配您的设置)

    <?xml version='1.0' encoding='UTF-8'?>
    <jdbc-data-source xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/jdbc-data-source http://xmlns.oracle.com/weblogic/jdbc-data-source/1.2/jdbc-data-source.xsd">
      <name>TESTDB</name>
      <jdbc-driver-params>
        <url>jdbc:oracle:thin:@host:port:db</url>
        <driver-name>oracle.jdbc.OracleDriver</driver-name>
        <properties>
          <property>
            <name>user</name>
            <value>user</value>
          </property>
        </properties>
        <password-encrypted></password-encrypted>
          </jdbc-driver-params>
          <jdbc-connection-pool-params>
            <max-capacity>40</max-capacity>
            <connection-creation-retry-frequency-seconds>120</connection-creation-retry-frequency-seconds>
            <test-connections-on-reserve>true</test-connections-on-reserve>
            <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
            <init-sql>SQL SELECT 1 FROM DUAL</init-sql>
          </jdbc-connection-pool-params>
        <jdbc-data-source-params>
        <jndi-name>TESTDB</jndi-name>
        <global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
      </jdbc-data-source-params>
    </jdbc-data-source>
    

    创建的文件缺少加密密码。您可以使用weblogic.security.Encrypt 实用程序来加密您的数据库密码,如下所示。您首先需要通过进入 domain\base_domain\bin 文件夹并运行以下命令来设置确保 Weblogic 环境已设置

    source ./setDomainEnv.sh
    

    您现在可以进入 domain\base_domain 文件夹并运行 weblogic.security.Encrypt 实用程序,指定数据库密码,如下所示

    java weblogic.security.Encrypt dbpassword
    

    您必须位于 base_domain 文件夹中。如果你在任何其他文件夹中运行它,你会得到一个异常

    无法初始化加密服务,请验证您是否在域目录中或为 -Dweblogic.RootDirectory 指定了正确的值

    如果您不希望数据库密码在操作系统历史记录中可见,请在运行命令时将其忽略,系统会提示您提供密码。生成的密码将采用以下格式

    {AES}H8B3Lp73h/9XghMXUmtq5f3CRSpqAzQ0gwoOm5NHYXg=

    将此值复制到 TESTDB-123-jdbc.xml 配置文件中的密码加密标签中,使标签现在看起来像这样

    <password-encrypted>{AES}H8B3Lp73h/9XghMXUmtq5f3CRSpqAzQ0gwoOm5NHYXg=</password-encrypted>
    

    您已经使用 xml 成功创建了一个数据源,但现在您需要将它链接到 Weblogic 实例。转到 domain\base_domain\config 文件夹并编辑 config.xml 文件。在关闭域标记之前添加新配置的 jdbc 系统资源。这是一个sn-p

      <jdbc-system-resource>
        <name>TESTDB</name>
        <target>AdminServer</target>
        <descriptor-file-name>jdbc/TESTDB-1234-jdbc.xml</descriptor-file-name>
      </jdbc-system-resource>
    

    请记住使用适用于您的应用程序服务器的值。完成后,您已成功将数据源链接到 Weblogic 实例,但数据源尚未激活。重新启动 weblogic 实例以使数据源处于活动状态。 重新启动后,您可以使用 Weblogic Admin 实用程序测试连接池是否存在并处于活动状态,方法是像以前一样设置 Weblogic 环境,然后运行以下命令

    java weblogic.Admin -username weblogic -password password -url t3://localhost:port EXISTS_POOL  TESTDB
    

    如果连接池存在且处于活动状态,您将获得

    已经有一个名为 TESTDB 的池

    否则你会得到下面的异常

    池 TESTDB 不存在。

    您也可以像以前一样设置Weblogic环境,然后运行下面的命令,对数据源进行连接测试

    java weblogic.Admin -username weblogic -password password -url t3://localhost:port TEST_POOL  TESTDB
    

    如果连接正常,你会得到

    连接池“TESTDB”的 JDBC 连接测试成功。

    请记住,不能成功测试连接并不意味着数据源没有添加到 Weblogic。可能是数据库未运行,因此您可能需要根据需要进行故障排除。 另请注意,您也可以直接使用Weblogic Admin 实用程序来创建数据源。 当按照上述使用 Weblogic 管理实用程序时,weblogic 密码将在您的历史记录中可见。 这是您从 xml 文件创建数据源的方式。然而,使用 Weblogic 控制台要容易得多。

    【讨论】:

    • 嘿,谢谢,是的,您是对的,通过控制台创建数据源要容易得多。还有一个问题:假设我创建了一个数据源并生成了相应的 jdbc 文件。如果我将这些文件提供给其他人,以便他无需手动添加数据源。会这样吗?如果您愿意,也可以为我的问题投票。
    • 更好的方法是使用 WLST 脚本来创建数据源并将其定位到您的域。手动更新域的配置文件不是推荐的方式,而且有点冒险。
    • 是的,您确实可以将生成的文件提供给其他人。他们需要将密码加密的值替换为他们在 Weblogic 实例上生成的值。他们还需要按照上述步骤将他们新复制和更新的数据源文件链接到他们的 Weblogic 实例。 @EmmanuelCollin 绝对正确,这样做有点冒险,使用 WLST 脚本是另一种好方法。
    猜你喜欢
    • 2015-02-10
    • 2020-03-06
    • 1970-01-01
    • 2016-06-22
    • 2012-03-20
    • 2018-06-25
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多