共计 2806 个字符,预计需要花费 8 分钟才能阅读完成。
最近换到新公司,第一次接触 JNDI 方式连接数据库。
一开始怎么找也没找到数据库地址在哪里配置的,后面跟代码发现 spring 中初始化 dataSource 是通过这个类 JndiObjectFactoryBean 传入 jndiName 参数,果断百度 JndiObjectFactoryBean 才知道有 JNDI 这种方式获取 dataSource。
由于项目是分布式的(统一使用 Jboss),如果想分开部署配置 Jboss 端口太麻烦,so 想用 tomcat 来代替。jboss 配置 JNDI 比较简单,这里不讲。eclipse 新建一个 tomcat 服务会自动建一个 Servers 工程,里面包含了 context.xml、server.xml 等配置文件,tomcat 配置就需要注意不要配置 tomcat 所在目录的配置文件,而是需要配置这里的配置文件。
配置配置方法如下:
一、在 Servers 工程下面的 context.xml 文件当添加以下的配置信息:
<Context>
<Resource name=”jdbc/test” auth=”Container”
type=”javax.sql.DataSource”
username=”sean”
password=”sean”
driverClassName=”Oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@localhost:1521:orcl”
maxActive=”100″
maxIdle=”30″
maxWait=”10000″/>
</Context>
二、在 Servers 工程下面的 web.xml 配置
<resource-ref>
<description>OracleDataSource</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
三、spring 获取 dataSource
<!– 报表数据访问方式修改为 jndi 的方式 –>
<bean id=”dataSource” name=”default_ds” class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName” value=”jdbc/test” />
<property name=”resourceRef” value=”true” />
</bean>
四、使用数据源连接数据库
private Connection getConnection() throws NamingException {
Connection conn = null;
String jndi = “jdbc/test”;
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup(“java:/comp/env”);
DataSource ds = (DataSource)envContext.lookup(jndi);
if(ds != null){
try {
conn = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
public List<String> selectById(int id) throws InstantiationException, IllegalAccessException{
Connection con = null;
try {
con = getConnection();
} catch (NamingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<String> list = new ArrayList<String>();
String sql=”select * from myusers where id=?”;
try {
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
list.add(rs.getString(1));
list.add(rs.getString(2));
list.add(rs.getString(3));
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
更多 Tomcat 相关教程见以下内容:
CentOS 6.6 下安装配置 Tomcat 环境 http://www.linuxidc.com/Linux/2015-08/122234.htm
RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目 http://www.linuxidc.com/Linux/2015-02/113528.htm
Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签) http://www.linuxidc.com/Linux/2015-02/113062.htm
Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm
CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm
CentOS 6.5 下安装 Tomcat http://www.linuxidc.com/Linux/2015-01/111415.htm
Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-01/127282.htm