在weblogic 12c中添加数据源

时间:2016-10-12 07:08:28

标签: 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"/>

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

1 个答案:

答案 0 :(得分:2)

在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文件夹中。如果您在任何其他文件夹中运行它将获得异常

  

无法初始化加密服务,请确认您位于域目录中或为-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实例以使数据源处于活动状态。 重新启动后,您可以像以前一样设置Weblogic环境,然后运行以下命令,使用Weblogic Admin实用程序测试连接池是否存在并处于活动状态

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

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

  

已经有一个名为TESTDB的池

否则您将获得以下异常

  

Pool TESTDB不存在。

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

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

如果连接正常,您将获得

  

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

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