Home

NUNU

18 Apr 2020

使用 weblogic 的 oracle 数据源

1. 生成数据源需要的wlfullclient.jar

wlfullclient.jar生成方式

进入weblogic的安装目录例如 E:\tools\weblogic\wls12213\wlserver\server\lib 运行 java -jar wljarbuilder.jar就能生成wlfullclient.jar文件

weblogic-jndi-20200427191514

2. weblogic 配置数据源

基本上一路下一步。填写数据库基本信息即可。

weblogic-jndi_20200427191858

weblogic-jndi_20200427192050

weblogic-jndi_20200427192346

weblogic-jndi_20200427192546

看到测试成功,即为配置正常。

3. 项目配置修改

此处只列出spring项目想改方式。

修改spring-context.xml,注释掉原有的dataSource的

添加以下注解

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" >
   <property name="jndiName">
      <value>bgc-web-test</value>
   </property>
   <property name="resourceRef">
      <value>true</value>
   </property>
   <property name="jndiEnvironment">
      <props>
         <prop key="java.naming.provider.url">t3://127.0.0.1:7001</prop>
         <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
      </props>
   </property>
</bean>

4. 部署项目

操作步骤

部署 ==> 安装 ==> 选择war包 ==> 下一步 ==> ··· ==> 完成

5. 通过其他方式验证数据源是否正确


import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * @author: pnunu
 * @Date: 2020/4/27 16:03
 * @description:
 */
public class DatabaseConnection {
    public static void main(String[] args) throws Exception {
        System.out.println(getConnection());
    }
    //初始化上下文需要用到的工厂类
    private final static String INITIAL_CONTEXT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
    //WebLogic服务器的访问地址
    private final static String PROVIDER_URL = "t3://127.0.0.1:7001";
    //WebLogic服务器中的JNDI数据源名称
    private final static String ORACLE_JNDI_NAME = "jdni-name";


    //存储从JNDI容器中取出来的数据源
    private static DataSource dsOracle = null;

    static {
        try {
            //初始化WebLogic Server的JNDI上下文信息
            Context context = getInitialContext();
            //获取数据源对象
            dsOracle = (DataSource) context.lookup(ORACLE_JNDI_NAME);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * MethodName: getInitialContext
     * Description: 获得WebLogic ServerJNDI初始上下文信息
     *
     * @return
     * @throws Exception
     */
    private static Context getInitialContext() throws Exception {
        Properties properties = new Properties();
        //指定工厂类
        properties.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
        //指定服务器访问地址
        properties.put(Context.PROVIDER_URL, PROVIDER_URL);
        return new InitialContext(properties);
    }

    /**
     * MethodName: getOracleConnection
     * Description: 获取Oracle数据库连接
     *
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return dsOracle.getConnection();
    }


    /**
     * MethodName: CloseConnection
     * Description: 关闭数据库连接
     *
     * @return
     * @throws SQLException
     */
    public static void Close() throws SQLException {
        if (dsOracle != null) {
            dsOracle.getConnection().close();
        }
    }
}

业精于勤,荒于嬉; 行成于思,毁于随。
pnunu at 19:01

Flag Counter