2016-10-12 90 views
-1

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

<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"/> 

我知道当我添加的数据源,有在路径中相应的域而产生的xml文件域\ BASE_DOMAIN \配置\ JDBC但恰好包含一个加密密码。 因此,当我尝试使用手动添加数据源生成的xml文件添加新数据源时,无法添加该数据源。任何帮助将不胜感激。

回答

1

使用以下格式的TESTDB-1234-jdbc.xml,在域\ base_domain \ config \ jdbc文件夹中创建具有唯一文件名的新数据源配置文件。通常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实用程序按照以下方式对数据库密码进行加密。您首先需要设置确保WebLogic环境是通过进入域\ BASE_DOMAIN \ bin文件夹并运行以下命令

source ./setDomainEnv.sh 

现在,您可以进入域\ 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管理实用程序重新启动,你可以测试连接池是否存在活动,然后运行下面

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 

的命令。如果连接正常,你会得到

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

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

+0

嘿,谢谢,是的,你说得对,通过控制台创建数据源要容易得多。还有一个问题:可以说我创建了一个数据源并且生成了相应的jdbc文件。如果我将这些文件提供给其他人,以便他不需要手动添加数据源。会这样吗?如果你喜欢的话,你也可以加快我的排队。 –

+0

更好的方法是使用WLST脚本创建数据源并将其指向您的域。手动更新域的配置文件不是推荐方式,有点危险。 –

+0

是的,你确实可以把生成的文件给别人。他们将需要用它们在Weblogic实例上生成的值替换密码加密的值。按照上述步骤,他们还需要将新复制和更新的数据源文件链接到他们的Weblogic实例。 @EmmanuelCollin完全正确地做到这一点有点冒险,使用WLST脚本是另一个好方法。 –