簡體   English   中英

WebLogic多個連接

[英]WebLogic multiple Connections

我的WebLogic Server上有兩個數據源,每個數據源都訪問不同的數據庫。
在我的客戶端應用程序,我有一些需要連接到第二個方法是需要連接到第一 DB,等等。
但是,當我運行它時,它只會得到我執行的第一個方法的連接。
例如,如果我執行一個獲取冷杉數據庫連接的方法 ,則只有訪問該數據庫的方法才可以使用 ,而我無法執行任何需要其他連接的方法。
有人可以幫我嗎? 我正在使用WebLogic 12c

這是我的獲得數據源的班級:

package com.henrique.dao;

import java.sql.Connection;

import javax.naming.*;
import javax.sql.*;

public class KironMySql {

    private static DataSource KironMySql = null;
    private static Context context = null;

    public static DataSource KironMySqlConn() throws Exception{
        if (KironMySql != null) {
            return KironMySql;
        }
        try{
            if(KironMySql == null){
                context = new InitialContext();
                KironMySql = (DataSource) context.lookup("KironLocal");
            }           
        }catch(Exception e){
            e.getMessage();
        }
        return KironMySql;
    }

    public static DataSource KironMySqlConnIp() throws Exception{
        if (KironMySql != null) {
            return KironMySql;
        }
        try{
            if(KironMySql == null){
                context = new InitialContext();
                KironMySql = (DataSource) context.lookup("KironTabelaApp");
            }           
        }catch(Exception e){
            e.getMessage();
        }
        return KironMySql;
    }

    public static Connection KironConnection(){
        Connection conn = null;
        try{
            conn = KironMySqlConn().getConnection();
            return conn;
        }catch(Exception e){
            e.getMessage();
        }
        return conn;
    }

    public static Connection KironConnectionIp(){
        Connection conn = null;
        try{
            conn = KironMySqlConnIp().getConnection();
            return conn;
        }catch(Exception e){
            e.getMessage();
        }
        return conn;
    }

}

這是使用不同連接的方法的兩個示例:

public JSONArray Login(String usu_login, String usu_senha) throws Exception{
        PreparedStatement query = null;
        Connection conn = null;
        ToJson converter = new ToJson();
        JSONArray json = new JSONArray();

        try{
            conn = KironMySql.KironConnection();
            query = conn.prepareStatement("select usu_nome from usuario where usu_login = ? and usu_senha = ?");
            query.setString(1, usu_login);
            query.setString(2, usu_senha);
            ResultSet rs = query.executeQuery();
            json = converter.toJSONArray(rs);
            query.close();          
        }catch(Exception e){
            e.printStackTrace();
            return json;
        }finally{
            if(conn != null) conn.close();
        }
        return json;
    }

    public JSONArray getIp(String emp_codigo) throws Exception{
        PreparedStatement query = null;
        Connection conn = null;
        ToJson converter = new ToJson();
        JSONArray json = new JSONArray();

        try{
            conn = KironMySql.KironConnectionIp();
            query = conn.prepareStatement("select con_ip from conexaoapp where emp_codigo = ?");
            query.setString(1, emp_codigo);
            ResultSet rs = query.executeQuery();
            json = converter.toJSONArray(rs);
            query.close();          
        }catch(Exception e){
            e.printStackTrace();
            return json;
        }finally{
            if(conn != null) conn.close();
        }
        return json;
    }   

在這兩種情況下,您都使用private static DataSource KironMySql = null; 實例。 具有用於不同DS的單獨的DataSource對象。

實質上,當您嘗試獲取KironTabelaApp DS連接時,您是在屏蔽KironLocal DS。

因此,更新后的代碼如下所示:

package com.henrique.dao;

import java.sql.Connection;

import javax.naming.*;
import javax.sql.*;

public class KironMySql {

    private static DataSource KironMySql = null;
    private static DataSource KironMySqlIp = null;  //This is new line for code fix, and using "KironMySqlIp" instance later in the code where connection with "KironTabelaApp" data source is needed.
    private static Context context = null;

    public static DataSource KironMySqlConn() throws Exception{
        if (KironMySql != null) {
            return KironMySql;
        }
        try{
            if(KironMySql == null){
                context = new InitialContext();
                KironMySql = (DataSource) context.lookup("KironLocal");
            }           
        }catch(Exception e){
            e.getMessage();
        }
        return KironMySql;
    }

    public static DataSource KironMySqlConnIp() throws Exception{
        if (KironMySqlIp != null) {
            return KironMySqlIp;
        }
        try{
            if(KironMySqlIp == null){
                context = new InitialContext();
                KironMySqlIp = (DataSource) context.lookup("KironTabelaApp");
            }           
        }catch(Exception e){
            e.getMessage();
        }
        return KironMySqlIp;
    }

    public static Connection KironConnection(){
        Connection conn = null;
        try{
            conn = KironMySqlConn().getConnection();
            return conn;
        }catch(Exception e){
            e.getMessage();
        }
        return conn;
    }

    public static Connection KironConnectionIp(){
        Connection conn = null;
        try{
            conn = KironMySqlConnIp().getConnection();
            return conn;
        }catch(Exception e){
            e.getMessage();
        }
        return conn;
    }

}

數據源

在此處輸入圖片說明

這是我的數據源和“監視”選項卡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM