java - 在 weblogic 12c 中添加数据源

标签 java xml database weblogic datasource

有没有办法在 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"/>

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

最佳答案

在 domains\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实用程序按照以下方式加密您的数据库密码。您首先需要通过进入 domains\base_domain\bin 文件夹并运行以下命令来设置确保 Weblogic 环境已设置

source ./setDomainEnv.sh

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

java weblogic.security.Encrypt dbpassword

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

Unable to initialize encryption service, verify you are in the domain directory or have specified the correct value for -Dweblogic.RootDirectory

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

{AES}H8B3Lp73h/9XghMXUmtq5f3CRSpqAzQ0gwoOm5NHYXg=

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

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

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

  <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 实例以使数据源处于 Activity 状态。 重新启动后,您可以使用 Weblogic Admin 实用程序测试连接池是否存在并处于 Activity 状态,方法是像以前一样设置 Weblogic 环境,然后运行以下命令

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

如果连接池存在并处于 Activity 状态,您将获得

There is already a pool named TESTDB

否则你会得到下面的异常

Pool TESTDB does not exist.

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

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

如果连接正常你会得到

JDBC Connection Test Succeeded for connection pool "TESTDB".

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

关于java - 在 weblogic 12c 中添加数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992499/

相关文章:

java - intellij 如何计算对象实例的 4 位数字 ID?

android - 左侧图标和文本完美对齐的按钮

database - 避免 CakePHP $this->data 安全漏洞的方法?

java - 使用 ArrayList 存储字符串

javascript - 从mysql表递归问题构建树数据结构

java - 获取网页内容

java - 使用 jni 和 OpenCV 创建的带有 lib 的 undefined symbol

java - 联合Java OpenCV中的两个矩形

xml - 在 Linux 上,将 XML 解析为 MYSQL 的最有效方法是什么?

java - 如何在 View 上存储数据?