com.j2mvc.framework.dao.DataSourceJndi Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of j2mvc-framework-web Show documentation
Show all versions of j2mvc-framework-web Show documentation
强烈建议使用J2mvc 2.1以后的版本。
version 2.1.01
1.优化路径跳转,Servlet和Filter方式的路径设置
2.优化内存销毁
3.更换JSON依赖包
4.优化接收方法RequestMethod,封装不同ContentType格式提交
封装JSON,XML数据提交模块
JSON请求示例
{
"id":"JSON134851",
"title":"JSON提交的标题",
"price":65.1,
"stock":100
}
XML请求示例
<!DOCTYPE root [
<!ELEMENT root ANY>
<!ATTLIST Product SSN ID #REQUIRED>]>
<root>
<Product SSN='id'>XMLID12354</Product>
<Product SSN='title'>XML提交的标题 </Product>
<Product SSN='price'>55 </Product>
<Product SSN='stock'>32 </Product>
</root>
version 2.1.02
1.解决URL无后缀情况无法加载静态资源,解决无法渲染CSS文件。
version 2.1.03
1.移除com.j2mvc.StringUtils.getUtf8()方法调用
更改为getCharset()
version 2.1.04
1.去除Servlet和Filter的全局变量销毁,只交给Listener处理。
version 2.1.05,2.1.06,2.1.07
1.完善POST提交的JSON数据
支持接收基础数据类型、任意对象类型、任意数组类型。
不支持接收参数为集合类型或Map类型,但可以定义为接收对象类型的元素。
version 2.1.05,2.1.06,2.1.07
1.修改连接池变量
version 2.1.09
增加上传功能,修改RequestMethod,ContentType设置方式
version 2.1.10,2.1.11
更改上传文件名格式为UUID格式,移除JSON映射类,更改接收多文件上传。
version 2.1.12
删除文件列有的空对象
version 2.1.13
增加配置文件目录/conf,加载上传功能配置/conf/upload.properties
version 2.1.18
拦截器也能获取ActionBean
version 2.1.20
添加上传文件只读权限
version 2.1.21
支持同时接收文件和文本数据
version 2.1.22
增加文件接收类型media
version 2.1.23
删除upload类printJson方法
The newest version!
package com.j2mvc.framework.dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.log4j.Logger;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import com.j2mvc.framework.Session;
/**
* 绑定多个数据源
*
* 2014-8-18 创建@杨朔
* @version 1.1.6
*/
public class DataSourceJndi {
static final Logger log = Logger.getLogger(DataSourceJndi.class);
static InitialContext ctx;
/**
* 绑定数据源
*/
public static void init() {
Set> set = Session.dataSourceBeanMap.entrySet();
Iterator> iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = iterator.next();
DataSourceBean bean = entry.getValue();
String name = bean.getName().replaceAll("/", ":");
try {
BasicDataSource dataSource = new BasicDataSource();
// 设置数据库驱动
dataSource.setDriverClassName(bean.getDriverClassName());
// 设置JDBC的URL
dataSource.setUrl(bean.getUrl());
dataSource.setUsername(bean.getUsername());
dataSource.setPassword(bean.getPassword());
dataSource.setValidationQuery(bean.getValidationQuery());
if(bean.getMaxActive()>0)
dataSource.setMaxActive(bean.getMaxActive());
if(bean.getMaxIdle()>0)
dataSource.setMaxIdle(bean.getMaxIdle());
if(bean.getMaxWait()>0)
dataSource.setMaxWait(bean.getMaxWait());
// 设置连接池初始大小
if(bean.getInitialSize()>0)
dataSource.setInitialSize(bean.getInitialSize());
// JNDI配置
ctx = new InitialContext();
// 数据源绑定到JNDI
ctx.bind(name, dataSource);
log.info("绑定JNDI,数据源名称:"+bean.getName().replaceAll(":", "/"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 销毁数据源
*/
public static void destroy(){
try {
Set> set = Session.dataSourceBeanMap.entrySet();
Iterator> iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = iterator.next();
DataSourceBean bean = entry.getValue();
// 数据源解绑定
ctx.unbind(bean.getName().replaceAll("/", ":"));
log.info("解除绑定JNDI,数据源名称:"+bean.getName().replaceAll(":", "/"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接
*/
public static Connection getConnection() {
try {
// 在命名空间和目录空间中查找 数据源名称 返回数据库连接池对象 JNDI
String name = Session.dataSourceBean.getName().replaceAll("/", ":");
DataSource dataSource =(DataSource)ctx.lookup(name);
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取数据库连接
*/
public static Connection getConnection(String name) {
try {
// 在命名空间和目录空间中查找 数据源名称 返回数据库连接池对象 JNDI
DataSource dataSource =(DataSource)ctx.lookup(name.replaceAll("/", ":"));
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy