WebLogic配置JDBC数据源

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dream_lixiang/article/details/54708600

1. 

最近针对某银行的web项目上线,部署在他们的weblogic机器上,根据银行的规范,部署在WebLogic Server上的应用程序如果需要访问数据库,原则上需要通过WebLogic提供的JDBC连接池来管理数据库连接。

WebLogic Server中,通过配置JDBC数据源创建数据库连接。将数据源定向或部署到服务器或集群的时候,数据库连接就建立了。每个数据源包含一组池化的数据库连接。应用程序按名称在JNDI树上查找数据源,获取数据源连接,完成数据库操作,调用connection.close()将连接归还给连接池。

2.配置步骤讲解

(1)开启weblogic管理服务器,进入weblogic管理控制台点击左侧服务→【数据源然后点击右侧【新建→【般数据源



(2)填写JDBC数据源的【名称】、【jndi名称】,选择数据库类型

数据源名称WebLogic用于在本域内唯一标识资源项的,不仅要求一个域内配置的多个数据源不能重名,而且不能与域中配置的其他实体如:主机、集群、服务器的名称重名

JNDI名称:是应用程序获取数据源所使用的名称,由应用决定。



(3)选择Oracle数据库的驱动程序在驱动的种类中,non-XA驱动通常比XA驱动性能好在非特殊情况下均采用4种JDBC驱动如图所示


(4)事务处理选项,默认即可。


(5)根据所连数据库的信息,填写数据库的连接信息:要连接的数据库,数据库的IP地址,连接数据库时使用的端口号,登录数据库时使用的用户名和密码


(6)点击【测试配置】.按钮,测试数据源是否正常。



这时候如果出现如下场景:


检查URL的值,这里值为:jdbc:oracle:thin:@10.0.2.55:1521:orcl.localdomain改为jdbc:oracle:thin:@10.0.2.55:1521/orcl.localdomain。即把服务名前:改为/

再次点击测试配置,出现如下,表示数据源创建成功。


(7)点击完成,回到数据源界面,目标为空,点击数据源链接


(8)点击目标选项卡,选择要部署数据源的服务器,点击保存,数据源配置成功。


(9)连接池容量配置建议:

选择【配置】【连接池】,可以看到连接池的相关容量配置:


初始容量:根据应用需要配置,对于实时交易类应用系统,一般设置为能满足日常运行需求峰值要求,同时考虑数据库对连接数的限制和容量限制

最大容量:根据应用需要和数据库连接数限制相应设置

最小容量:一般和初始容量相同。

3.在程序中获取及还回连接

public class DBUtil {
	// 获取日志类
	private static  final Logger log = Logger.getLogger("DBUtil.class");
	// 初始化上下文需要用到的工厂类
	private static final String INITIAL_CONTEXT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
	// weblogic服务器的访问地址
	private static final String PROVIDER_URL = "t://10.0.2.181:8101";
	// Weblogic服务器中的JNDI数据源名称
	private static final String JNDI = "JNDI/SplOrcl";
	private static Context context = null;

	static {

		Hashtable<String, String> ht = new Hashtable<String, String>();
		ht.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
		ht.put(Context.PROVIDER_URL, PROVIDER_URL);

		try {
			// 初始化weblogic server的JNDI上下文信息
			context = new InitialContext(ht);
		} catch (NamingException e) {
			log.info("DBUtils : Exit -->[Context init error]");
			log.error("InitialContext(naming)--[message:" + e.getMessage()
					+ "]");
		}
	}

	
	public static Connection getConnect() {
		Context ctx = null;
		Connection conn = null;
		try {

			ctx = context;
			// 获取数据源对象
			javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup(JNDI);
			// 获取数据源连接
			conn = ds.getConnection();
		} catch (SQLException e) {
			log.info("DBUtils : Exit-->[getConnection error because : "
					+ e.getMessage() + " ]");
			log.error("get db connection error(sql)--[errorCode:"
					+ e.getErrorCode() + ";message:" + e.getMessage()
					+ "]");
		} catch (NamingException e) {
			log.info("DBUtils : Exit-->[getConnection error because:"
					+ e.getMessage() + "]");
			log.error("get db connection error(naming)--[message:"
					+ e.getMessage() + "]");
		} catch (Exception e) {
			log.info("DBUtils : Exit-->[getConnection error because:"
					+ e.getMessage() + "]");
			log.error("get db connection error(other)--[message:"
					+ e.getMessage() + "]");
		}
		return conn;
	}

	
	public static void close(ResultSet rs, Statement stat, Connection conn) {
		try {
			if (rs != null)
				rs.close();
			if (stat != null)
				stat.close();
			if (conn != null)
				conn.close();
		} catch (SQLException e) {
			log.info("DBUtils : Exit-->[close resource error because:"
					+ e.getMessage() + "]");
			log.error("close db connection error--[errorCode:"
					+ e.getErrorCode() + ";message:" + e.getMessage()
					+ "]");
		}
	}

}




展开阅读全文

没有更多推荐了,返回首页