進入weblogic管理控制檯,此處是遠程訪問: http://192.168.1.144:7001/console java
點擊左側【 域結構】→【base domain】 → 【服務】 → 【數據源】 而後點擊右側【 新建】 → 【般數據源】, 以下圖所示: mysql
填寫JDBC數據源的【名稱】、【jndi名稱】,選擇數據庫類型,如選擇【oracle】,下一步web
選擇Oracle數據庫的驅動程序,以下圖所示:sql
這裏選擇【Oracle' s Driver (Thin)for Instance connections;Version:Any】,點擊【下一步】按鈕,進入下一個配置步驟:數據庫
這裏使用默認配置便可 ,點擊【下一步】按鈕,進入下一個配置步驟:以下圖所示:服務器
填寫數據庫的鏈接信息:要鏈接的數據庫,數據庫的IP地址,鏈接數據庫時使用的端口號,登陸數據庫時使用的用戶名和密碼oracle
點擊【下一步】按鈕,進入下一個配置步驟:以下圖所示:app
鏈接測試結果以下:dom
點擊【下一步】按鈕,進入下一個配置步驟:以下圖所示:ide
點擊【完成】,這樣WebLogic就會建立一個新的JDBC數據源,以下圖所示:
到此,在WebLogic新建針對Oracle數據庫的JNDI數據源就算是所有完成了。數據源建立以後,咱們就能夠在應用程序中使用數據源了。
上面咱們已經配置好了一個針對Oracle數據庫的JNDI數據源,這裏咱們在新建一個針對MySQL數據庫的數據源,配置步驟和上述針對Oracle數據庫建立的JDBC數據源大部分是同樣的,針對不同的地方給出以下的截圖說明:
到此,在WebLogic新建針對MySQL數據庫的JNDI數據源就算是所有完成了。查看jndi樹,能夠看到JNDI樹上面掛載了兩個數據源,以下圖所示:
新建一個測試項目,以下圖所示:
編寫一個WebLogicJndiUtil工具類,用於從WebLogic的JNDI容器中取出數據源。
WebLogicJndiUtil工具類代碼以下:
/** * */ package me.gacl.util; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; /** * <p>ClassName: WebLogicJndiUtil<p> * <p>Description: 獲取WebLogic服務器中的JNDI數據源工具類<p> * @author xudp * @version 1.0 V * @createTime 2015-1-4 下午03:54:39 */ public class WebLogicJndiUtil { //初始化上下文須要用到的工廠類 private final static String INITIAL_CONTEXT_FACTORY="weblogic.jndi.WLInitialContextFactory"; //WebLogic服務器的訪問地址 private final static String PROVIDER_URL="t3://192.168.1.144:7001"; //WebLogic服務器中的JNDI數據源名稱 private final static String ORACLE_JNDI_NAME="JNDI/OracleDataSource"; private final static String MYSQL_JNDI_NAME="JNDI/MysqlDataSource"; //存儲從JNDI容器中取出來的數據源 private static DataSource dsOracle = null; private static DataSource dsMySQL = null; static { try { //初始化WebLogic Server的JNDI上下文信息 Context context = getInitialContext(); //獲取數據源對象 dsOracle = (DataSource) context.lookup(ORACLE_JNDI_NAME); dsMySQL = (DataSource) context.lookup(MYSQL_JNDI_NAME); } catch (Exception e) { e.printStackTrace(); } } /** * MethodName: getInitialContext * Description: 得到WebLogic ServerJNDI初始上下文信息 * @author xudp * @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數據庫鏈接 * @author xudp * @return * @throws SQLException */ public static Connection getOracleConnection() throws SQLException { return dsOracle.getConnection(); } /** * MethodName: getMySQLConnection * Description: 獲取MySQL數據庫鏈接 * @author xudp * @return * @throws SQLException */ public static Connection getMySQLConnection() throws SQLException { return dsMySQL.getConnection(); } }
編寫一個測試Servlet,JndiTestServlet的代碼以下:
package me.gacl.test; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import me.gacl.util.WebLogicJndiUtil; /** * <p>ClassName: JndiTestServlet<p> * <p>Description: <p> * @author xudp * @version 1.0 V * @createTime 2015-1-4 下午03:37:53 */ public class JndiTestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Oracle數據庫鏈接對象 Connection oracleConn = null; //MySQL數據庫鏈接對象 Connection mysqlConn = null; Statement stmt = null; ResultSet rs = null; try { String sqlOracle = "SELECT * FROM LEAD_OAMS_APPLICATIONS"; //獲取數據庫鏈接對象 oracleConn = WebLogicJndiUtil.getOracleConnection(); stmt = oracleConn.createStatement(); rs = stmt.executeQuery(sqlOracle); while (rs.next()) { System.out.println(rs.getString("RESOURCEID")+"---"+rs.getString("APP_NAME")); } System.out.println("-----------------------------分割線-------------------------------------"); String sqlMySQL = "SELECT * FROM LEAD_OAMS_DBSOURCES"; //獲取數據庫鏈接對象 mysqlConn = WebLogicJndiUtil.getMySQLConnection(); stmt = mysqlConn.createStatement(); rs = stmt.executeQuery(sqlMySQL); while (rs.next()) { System.out.println(rs.getString("RESOURCEID")+"---"+rs.getString("DBSOURCE_NAME")); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); stmt.close(); oracleConn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
在Web.xml文件中註冊JndiTestServlet,以下:
<servlet> <servlet-name>JndiTestServlet</servlet-name> <servlet-class>me.gacl.test.JndiTestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>JndiTestServlet</servlet-name> <url-pattern>/servlet/JndiTestServlet</url-pattern> </servlet-mapping>
將測試項目部署到WebLogic服務器中運行,以下圖所示:
輸入JndiTestServlet的訪問地址:http://localhost:7001/WebLogic_Jndi_Test/servlet/JndiTestServlet進行測試,以下圖所示:
訪問JndiTestServlet的過程當中沒有出現任何錯誤,後臺的控制檯中輸出了從數據庫中取出來的數據,以下圖所示:
這就證實了咱們已經成功地從WebLogic服務器中的JNDI樹中取出了JDBC數據源,再經過數據源獲取到了數據庫鏈接,執行SQL從數據庫中查詢出數據。
以上就是關於在WebLogic配置JNDI數據源以及如何在應用程序中使用配置好的JNDI數據源的所有內容。