jndi weblogic mysql_WebLogic配置JNDI数据源
一、什么是jndi数据源
JNDI是Java命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一。
我们平时开发web程序的时候,在连接数据库的时候,往往会编写一个连接数据库的类,
例如连接Mysql的类:
package cn.edu.hpu.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DB {
// 定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定义mysql的数据库连接地址:
public static final String DBDURL = "jdbc:mysql://localhost:3306/iqweb" ;
//mysql数据库的连接用户名
public static final String DBUSER = "root" ;
//mysql数据库的连接密码
public static final String DBPASS = "1234" ;
static{
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn=null;
try {
conn=DriverManager.getConnection(DBDURL,DBUSER,DBPASS);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet rs,Statement st,Connection conn){
try {
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(Statement st,Connection conn){
close(null,st,conn);
}
}
可以看到,我们的数据库的驱动名,数据库名称,账号和密码都是通过“硬编码”写死在
程序里的。一旦我们的项目需要数据迁移,或者更换数据库的时候,我们就要停止应用,在代码中
修改数据库的连接信息,这样做非常繁琐和不安全。即使不更换数据库,我们在改变数据库的最大
连接数和最小连接数,以及数据库的其它配置等等,都需要在代码中进行修改,这十分不友好。
我们需要一种外部的数据源,来指定我们的应用程序来链接数据库,对此,我们的应用程序不必
关心数据库的配置,数据库的配置交由独立的模块管理和配置。
近年来,Web开发中涌现了许多框架,如hibernate/Mybatis/Spring,使用他们,可以通过
“数据库连接池”来管理数据库的链接和配置:
并且把数据库配置单独放置在porperties配置文件中:
这样做就在应用层实现了数据库配置信息独立的机制。这样会使应用程序的数据库配置更加灵活。
而我们的WebLogic服务器,拥有绑定Jndi数据源的功能,也就是服务器来对应用程序的数据库配置
进行托管,应用程序只需要在其应用代码中制定使用jndi模式链接WebLogic的数据源信息即可。
当需要修改数据库信息的时候,根本不需要动应用程序的东西,只需要调整WebLogic的jndi数据源
中的数据库配置信息即可。
也即是说,WebLogic的jndi机制,在服务层实现了数据库配置信息独立的机制。
二、新建Mysql的JNDI数据源
访问http://localhost:7001/console/,登录进入WebLogic控制台主页。
点击左侧“域结构”下的“服务”下的“数据源”选项:
选择新建,一般数据源。
填写数据源的名称,JNDI名称以及选择数据库类型:
选择数据库驱动版本:
其它配置按照默认即可:
填写数据库的连接信息:
接下来点击测试配置,看一下是否能连接成功:
出现“连接测试成功”即表示数据库配置没有问题。
点击下一步,勾选服务器。
点击完成之后,我们服务器端的JNDI数据源就配置完毕了。
三、应用程序引用WebLogic的jndi数据源
我们在MyEclipse中创建一个WebProject测试工程:
我们在src中创建一个数据库连接类:
编写该连接类:
package com.cn.opensource.dbConn;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DatabaseConnection {
//初始化上下文需要用到的工厂类
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 MYSQL_JNDI_NAME="JNDI-MySqlDataSource";
//存储从JNDI容器中取出来的数据源
private static DataSource dsOracle = null;
private static DataSource dsMySQL = null;
static {
try {
//初始化WebLogic Server的JNDI上下文信息
Context context = getInitialContext();
//获取数据源对象
dsMySQL = (DataSource) context.lookup(MYSQL_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: getMySQLConnection
* Description: 获取MySQL数据库连接
* @return
* @throws SQLException
*/
public static Connection getMySQLConnection() throws SQLException {
return dsMySQL.getConnection();
}
/**
* MethodName: CloseConnection
* Description: 关闭数据库连接
* @return
* @throws SQLException
*/
public static void Close()throws SQLException {
if(dsMySQL!=null){
dsMySQL.getConnection().close();
}
}
}
然后,我们创建一个Servlet,测试数据库是否连接成功并取到数据:
编写Servlet内容:
package com.cn.opensource.dbConn;
import java.io.IOException;
import java.io.PrintWriter;
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;
public class JndiConnectionServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("");
out.println("
A Servlet");
out.println("
");
out.print("
测试JNDI数据源连接
");
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = DatabaseConnection.getMySQLConnection();
String sql = "select * from teacher";
st = conn.createStatement();
rs = st.executeQuery(sql);
int i=0;
while (rs.next()) {
i++;
out.println("第"+i+"个教师信息");
out.println("编号:"+rs.getInt("number"));
out.println("姓名:"+rs.getString("name"));
out.println("性别:"+rs.getString("sex"));
out.println("所属班级:"+rs.getString("classname"));
out.println("住址:"+rs.getString("address"));
out.println("
");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
DatabaseConnection.Close();
} catch (SQLException e) {
e.printStackTrace();
}
}
out.println(" ");
out.println("");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
如果编译器没有给你自动在Web.xml中配置Servlet,别忘记自己配置:
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
JndiConnectionServlet
com.cn.opensource.dbConn.JndiConnectionServlet
JndiConnectionServlet
/servlet/JndiConnectionServlet
接下来,将我们的测试程序部署在WebLogic服务器中:
启动服务器,访问应用路径,可以看到:
打开数据库的teacher表,数据一致
说明我们配置的数据源连接成功了!
jndi weblogic mysql_WebLogic配置JNDI数据源相关推荐
- jndi weblogic mysql_WebLogic配置JNDI数据源及在项目的使用方法
一.在WebLogic新建针对Oracle数据库的JNDI数据源 点击左侧[ 域结构]→[base domain] → [服务] → [数据源] 然后点击右侧[ 新建] → [般数据源], 如下图所示 ...
- jndi weblogic mysql_Tomcat配置JNDI数据源连接池
[Tomcat数据源连接池加密] Tomcat 5.0.28 Jndi配置: 1)部署你的应用到Tomcat,并且确保能正常访问. 2)进放admin控制台,如果你无法进入控制台,请参考常用的一些Ja ...
- weblogic 11g 配置oracle数据源 数据库驱动选哪个,weblogic11g配置db2数据源驱动有关问题...
weblogic11g配置db2数据源驱动问题 今天在weblogic10.33上配置db2 9.7数据源,采用type4方式连接,驱动选择weblogic db2 type4驱动,配置成功后,开启应 ...
- WebLogic配置JNDI数据源
进入weblogic管理控制台,此处是本地访问:http://127.0.0.1:7001/console 点击左侧[ 域结构]→[base domain]→[服务]→[数据源] 然后点击右侧[新建] ...
- 【WebLogic使用】3.WebLogic配置jndi数据源
一.什么是jndi数据源 JNDI是Java命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一. 我们平时开发web程序的时候, ...
- WebLogic 配置JNDI数据源
WebLogic使用总结(三)--WebLogic配置JNDI数据源 一.在WebLogic新建针对Oracle数据库的JNDI数据源 进入weblogic管理控制台,此处是远程访问:http://1 ...
- 在Tomcat配置JNDI数据源的三种方式
转载自 在Tomcat配置JNDI数据源的三种方式 在我过去工作的过程中,开发用服务器一般都是Tomcat,数据源的配置往往都是在applicationContext.xml中配置一个dataSo ...
- jndi weblogic mysql_在WebLogic新建针对Oracle数据库的JNDI数据源
一.在WebLogic新建针对Oracle数据库的JNDI数据源 点击左侧[ 域结构]→[base domain]→[服务]→[数据源]然后点击右侧[新建]→[般数据源],如下图所示: 填写JDBC数 ...
- Tomcat下使用Druid配置JNDI数据源
转:Tomcat下使用Druid配置JNDI数据源 http://blog.csdn.net/houbin0912/article/details/52535982
最新文章
- 布尔值_Python基础知识点手册——布尔值及布尔运算
- Appcan跨域交互
- tiny4412 linux+qtopia nfs网络文件系统的挂载
- 超乎想象,数据揭示自学成才的码农为何备受青睐
- C# 图解教程 第四章 类的基本概念
- CloudStack核心类ApiServlet、ApiServer、ApiDispatcher、GenericDaoBase源码分析
- 通过jclasslib修改class文件
- 层次分析matlab例题,层次分析法例题
- library genesis (libgen)及Book系列网站的使用方法,外文图书下载神器,Springer学术书籍免费下载
- 普中51控制火焰传感器_火焰传感器的应用
- Unity3D导入图片资源
- 刚入职的新人如何快速了解公司业务--转载
- 背景图片上面写字的方法。
- 小白篇:阿里云 对象存储 OSS
- Linux locale命令
- 全球365隐私政策服务协议
- Python爬虫之获取淘宝商品数据
- cma盲均衡matlab,qam信号cma盲均衡(CMA_MMA_16QAM.asv)
- 当人工智能渐渐成熟,健康医疗将更专注于数据整合
- 在苹果电脑MAC上执行Linux命令