最近换到新公司,第一次接触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;
}

eclipse中tomcat配置JNDI链接Oracle数据源例子的更多相关文章

  1. eclipse中tomcat配置(待完善)

    tomcat版本:apache-tomcat-6.0.29 项目结构:     一.新建server方式 二.eclipse tomcat plugin方式   tomcat plugin方式必须保证 ...

  2. Eclipse中tomcat配置

    配置这两个东西 tomcat,在eclipse中启动 tomcat 才会可以访问   来自为知笔记(Wiz)

  3. 在Eclipse中Tomcat配置图片保存路径

    在上一篇二维码功能实现的时候发现,若将二维码保存在项目路径下,服务器起了之后存入的二维码图片是无法实时读取的,所以在Tomcat上配置图片保存位置,将图片保存到项目外的地方. 查找资料的时候看见一个方 ...

  4. Eclipse中Tomcat的配置及简单例子

    Eclipse中Tomcat的配置及简单例子 Eclipse中Tomcat的配置是很简单的一个工作 一. 工具下载 Eclipse,最新版的eclipse为Mars版本.下载地址为: http://w ...

  5. Tomcat配置JNDI

    JNDI是什么?使用JNDI有什么好处? JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一. 我个人对j ...

  6. maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程。

    注:本文来源于:杨四郎2018  <maven的安装.路径配置.修改库文件路径和eclipse中的配置.创建maven工程> 一.maven的安装 首先,先到官网去下载maven.这里是官 ...

  7. eclipse中tomcat 中server location灰色,如何修改?

    Eclipse中tomcat service设置选择window ----show view---services可以看到服务的面板双击tomcat进入配置界面Service Locations(Sp ...

  8. eclipse中tomcat的add and Remove找不到项目

    在我们运行项目前,都需要将项目部署到tomcat上,但是有时我们会遇到这种情况:项目明明存在,但是eclipse中tomcat的add and remove找不到项目,无法部署,那么这个问题该如何解决 ...

  9. Eclipse中tomcat更改部署路径 deply path

    默认是部署在项目元数据文件夹.metadata文件夹下,需要更改到tomcat/webapps目录下 Eclipse中tomcat service设置 选择window ----show view-- ...

随机推荐

  1. 微信公众帐号开发教程第4篇-----开发模式启用及接口配置Java

    欢迎加入群:347245650   345531810 进行讨论相互交流  我的微信号:572839485 我的微信公众账号  我的微社区欢迎关注 索取源码←请点击 图床:没有服务器 拖拽图片 外网即 ...

  2. 15个重要Python面试题 测测你适不适合做Python?

    http://nooverfit.com/wp/15%E4%B8%AA%E9%87%8D%E8%A6%81python%E9%9D%A2%E8%AF%95%E9%A2%98-%E6%B5%8B%E6% ...

  3. android中listview点击事件失效的灵异事件

    首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAda ...

  4. [置顶] 安卓弹出ProgressDialog进度框之后触摸屏幕就消失了的解决方法

    安卓在4.0之前对话框都是模态的,之后就改成非模态了. 解决方法吗,使用progressdialog.setCancelable(false)也行,但是这样就不能响应返回键的事件了,最好的方法是调用p ...

  5. VMware Workstation的网络连接方式:NAT、桥接和Host Only

    安装完VMware Workstation后会自动生成两个网络连接:VMware Network Adapter VMnet8 和 VMware Network Adapter VMnet1(通常称为 ...

  6. Hadoop之MapReduce命令

    概述 全部的Hadoop命令都通过bin/mapred脚本调用. 在没有不论什么參数的情况下.执行mapred脚本将打印该命令描写叙述. 使用:mapred [--config confdir] CO ...

  7. 【PM】关于系统数据库和服务现场升级的一些看法

    工作快满一年了,立即着手准备第二次出差去升级我们的系统,可是突然想到一件事情,让我颇有感触,是关于系统现场升级的. 我们迭代开发的系统隔一段时间就会须要到用户的现场去为其进行系统升级,当中升级包含cl ...

  8. ssh 安装笔记

    debian 6.0 的一台32位机器,aptitude search openssh-server-x509 没结果(其他机同样源配置是有结果的),于是上内部源下载openssh-server-x5 ...

  9. Inno Setup Pascal Script to search for running process

    I am currently trying to do a validation at the uninstall moment. In a Pascal script function, in In ...

  10. 重要:Linux下IDE--KDevelop (用来跟踪调试C++) Ubuntu下QT4开发环境的搭建及初体验

    Linux下安装Qt4有两大问题,一是环境变量,二是IDE(集成开发环境).安装Qt4也有两种方法,一种是apt-get,一种是下载源码包,而后 一种方法已经人证实是最有可能不好使的方法.所以我最终采 ...