精华内容
下载资源
问答
  • Java使用JNDI配置WEB项目数据源 参考http://www.devzeng.com/blog/java-jndi-datasource.html JNDI(Java Naming and Directory Interface,Java命名与目录接口)是Java提供的一种标准的命名系统接口,JNDI提供...

    Java使用JNDI配置WEB项目数据源

    参考http://www.devzeng.com/blog/java-jndi-datasource.html

    JNDI(Java Naming and Directory Interface,Java命名与目录接口)是Java提供的一种标准的命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI(Service Provider Interface,服务提供者接口)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。

    使用传统的方式

    一般对于普通的项目,习惯上使用.properties的文件来配置数据源的一些信息。在.properties文件中配置数据源连接字符串、用户名、密码和驱动的类,然后在代码中读取配置文件的信息再通过DriverManager.getConnection(url, username, password)的方式获取数据源连接对象,步骤如下,以SQLServer为例:

    (1)注册驱动

    Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

    (2)获取连接对象

    Connection conn = DriverManager.getConnection(url, username, password);

    (3)示例代码

    public static Connection getDefaultConnection() {
        try {
            String url = "jdbc:sqlserver://localhost:1433;databaseName=DBName";
            String username = "sa";
            String password = "*";
            String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            //注册SQLServer的驱动
            Class.forName(driver);
            //获取数据源连接对象
            Connection conn = DriverManager.getConnection(url,  username, password);
            return conn;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    

    使用JNDI的方式

    1、获取数据源的连接对象Connection

    public static Connection getConnection(String jndi) {
        DataSource datasource = null;
        Connection connection = null;
        try {
            Context context = new InitialContext();
            Context envContext = null;
            try {
                envContext = (Context) context.lookup("java:/comp/env");
            } catch (Exception e1) {
                // 无法通过java:方式获得换用/comp/env的方式
                try {
                    envContext = (Context) context.lookup("/comp/env");
                } catch (Exception fff) {
                    e1.printStackTrace();
                }
            }
            //如果数据源的名称不为空的话使用指定的数据源的名称来获取数据库连接对象
            if(StringUtils.isNotEmpty(jndi)) {
                datasource = (DataSource) envContext.lookup(jndi);
            } else {
                datasource = (DataSource) envContext.lookup("sqlserver/default");
            }
            connection = datasource.getConnection();
        } catch (Exception e2) {
            e2.printStackTrace();
        }
        return connection;
    }
    

    2、在Tomcat中的webapp中加入Resource配置

    <Resource name="sqlserver/default"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="sa"
        password="*"
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://localhost:1433;databasename=DBNAME"/>
    

    常见配置属性描述:

    • name:JDBC数据源的名称

    • auth:认证方式,一般设置为Container,还有一种是Application

    • type:当前配置资源的类别

    • factory:数据源工厂,默认为"org.apache.commons.dbcp.BasicDataSourceFactory"

    • driverClassName:驱动的全路径类名

    • maxActive:当前数据源支持的最大并发数

    • maxIdle:连接池中保留最大数目的闲置连接数

    • maxWait:当连接池中无连接时的最大等待毫秒数,在等当前设置时间过后还无连接则抛出异常

    • username:访问数据库的用户名

    • password:访问数据库的密码

    • url:JDBC驱动的连接字符串

    • validationQuery:在返回应用之前,用于校验当前连接是否有效的SQL语句,如果指定了,当前查询语句至少要返回一条记录,可以写成select top 1 * from sysobjects

    3、在Tomcat的lib目录下面添加数据库的驱动文件

    MySQL:mysql-connector-java-5.1.20-bin.jar

    SQLServer:sqljdbc4.jar

    Oracle:ojdbc14.jar

    4、在web.xml加入如下配置

    <resource-ref>
        <res-ref-name>sqlserver/default</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    

    注:属于可选配置,如果在web.xml中加入了上面的配置,则需要在Tomcat中一定要配置对应的Resource,否则会报错。

    5、使用方式

    Connection conn = getConnection("sqlserver/default");
    ...
    展开全文
  • tomcat 默认web jndi配置

    2015-12-24 17:02:28
    用eclipse开发项目,tomcat为web server.   1. 配置项目在server.xml中    这样访问自己的项目,将没有web名称的context, 例如: 127.0.0.1/login  2. 在tomcat/conf/context.xml中添加数据源配置   ...

          用eclipse开发项目,tomcat为web server. 

          1.  配置项目在server.xml中

               <Context docBase="wishone" path="/" reloadable="true" source="org.eclipse.jst.jee.server:wishone"/>

               这样访问自己的项目,将没有web名称的context, 例如:  127.0.0.1/login


         2. 在tomcat/conf/context.xml中添加数据源配置

              <Resource name="jdbc/your jndi" auth="Container" type="javax.sql.DataSource"
                  initialSize="10" maxActive="100" maxIdle="30" maxWait="10000"
                  username="*" password="*" driverClassName="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost:3306/youdblink"
                  validationQuery="SELECT 1" testOnBorrow="true"/>


          3. 在项目的web.xml中添加

               <resource-ref> 
     <description>JNDI DataSource</description> 
     <res-ref-name>jdbc/wishone</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
      </resource-ref>

    展开全文
  • JNDIweb项目数据源配置

    千次阅读 2017-02-23 22:21:00
    JNDIweb项目数据源配置 1.把数据源配置到Server下context.xml 文件中(也可以配置在web.xml中) <WatchedResource>WEB-INF/web.xml name="jdbc

    JNDI 之web项目数据源配置
    1.把数据源配置到Server下context.xml 文件中(也可以配置在web.xml中)
    这里写图片描述

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <Resource  
        name="jdbc/mysql"   
        scope="Shareable"   
        type="javax.sql.DataSource"  
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
        url="jdbc:mysql://localhost:3306/test"  
        driverClassName ="com.mysql.jdbc.Driver"  
        username="root"
        password="123456"  
        />  
    </Context>

    这样Spring等框架可以引用了. 下面做了一个简单的测试,在该web项目中获取数据库里的数据.

    package com.iris.coon;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    
    public class Jndi {
        public static void testConnection() {  
            String message = "Not Connected";  
            Connection conn=null;  
            ResultSet rst = null;  
            Statement stmt = null;  
            Context ctx;  
            try {  
                ctx = new InitialContext();  
                Context envContext = (Context) ctx.lookup("java:comp/env");  
                Object datasourceRef=envContext.lookup("jdbc/mysql");  
                DataSource  ds=(DataSource)datasourceRef;  
                conn=ds.getConnection();  
                if (conn != null) {  
                        message = "Got Connection " + conn.toString() + ", ";  
                        stmt = conn.createStatement();  
                        rst = stmt.executeQuery("select t.prp_code,t.prp_no from proposal t");  
                        while(rst.next()){
                            int prp_code = rst.getShort("prp_code");
                            String prp_no = rst.getString("prp_no");
                            System.out.println(prp_code+" "+prp_no+"\t");
                        }
                        System.out.println("Jndi Test Succeed!");  
                     }  
            } catch (NamingException e) {  
                e.printStackTrace();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }finally{  
                if(conn!=null){  
                    try {  
                        conn.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
    } 
    

    新建index.jsp文件,调取testConnection方法得到结果.表示数据源配置是正确的.

    对于这样的配置,spring的jee:jndi-lookup 直接就获取到.

    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql"></jee:jndi-lookup>
    展开全文
  • Web项目配置数据源——JNDI

    千次阅读 2016-10-13 12:52:47
    Tomcat-->conf-->在context.xml节点中添加配置    WEB-INF/web.xml        -->    on session expiration as well as webapp lifecycle) -->      --> auth=

    Tomcat-->conf-->在context.xml节点中添加配置

    <?xml version='1.0' encoding='utf-8'?>
    <Context>
        <!-- Default set of monitored resources -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>

        <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->


        <!-- Uncomment this to enable Comet connection tacking (provides events
             on session expiration as well as webapp lifecycle) -->
        <!--
        <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
        -->
    <Resource name="jdbc/source"
    auth="Container" 
                     type="javax.sql.DataSource" 
                     maxActive="100" 
                     maxIdle="30" 
                     maxWait="10000" 
                     username="scott" 
                     password="smq" 
                     driverClassName="oracle.jdbc.OracleDriver"  
                     url="jdbc:oracle:thin:@localhost:1521:XE" />

    </Context>


    Web项目-->Web-Root-->在web.xml节点中添加配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    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_2_5.xsd">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <resource-ref>
      <res-ref-name>jdbc/source</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>

    </web-app>

    web项目-->src-->com.niit.util-->DBUtil.Java

    public class DBUtil {

    private DBUtil(){}

    //JNDI方式配置数据源
    public synchronized static Connection getConnectionByJNDI(){
    Connection con = null;
    try {
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/source");
    con = ds.getConnection();
    } catch (NamingException e) {
    System.out.println("连接错误!");
    // e.printStackTrace();
    }catch(SQLException e){
    System.out.println("获取连接失败!");
    // e.printStackTrace();
    }
    return con;
    }


    public static void closeResource(ResultSet rs,Statement stmt,Connection con){

    try {
    if(rs != null){
    rs.close();
    }
    if(stmt != null){
    stmt.close();
    }
    if(con != null){
    con.close();
    }
    }catch (SQLException e) {
    System.out.println("关闭资源失败!");
    // e.printStackTrace();
    }
    }
    }


    注意事项:
    1、在context.xml中的引用的资源名称必须和web.xml中保持一致;
    2、web容器中要添加数据库的驱动jar,将tomecat目录中lib文件夹下的class12文件替换为ojdbc14;
    3、java中访问数据源应在web容器开启后在jsp或servlet中进行访问,不能再main方法中直接调用。

    JNDI配置数据源就是应用服务器通过WEB容器连接数据库,达到分布式的开发并集成服务器的目的,不像JDBC直接使用应用程序进行数据库连接。不开启任何WEB服务器,就无法启动JNDI。

    展开全文
  • 前言:最近在研究邮箱激活账号,借此介绍一下Tomcat配置数据源的...在Tomcat服务器中配置JNDI参数,定义一个数据源,在程序中通过数据源名称引用数据源从而与数据库交互,避免了程序与数据库之间的紧耦合,使应用...
  • jndi配置

    2016-04-11 19:22:18
    web项目中的META-INF文件夹下的WEB.XML中加入下列代码 DB Connection jdbc/onlineshop javax.sql.DataSource Container 在WEB项目中的meta——inf文件夹下建立一个context。xml WEB-INF/web.xml ...
  • JNDI配置

    千次阅读 2014-08-19 16:41:25
    OK,进入正题:使用myeclipse 10,新建一个web项目在Web-Root下的META-INF文件夹下面建立一个名为content.xml文件,里面加入如下内容:&lt;span style="font-size:18px;"&gt;&lt;Context&...
  • SpringBoot内嵌Tomcat JNDI配置

    千次阅读 2020-01-21 14:02:37
    对于外部Tomcat的JNDI配置可以参考我的文章使用JNDI连接数据库。此时我们开发环境使用SpringBoot内嵌Tomcat无法连接Sybase,那么我们就需要在SpringBoot内嵌Tomcat中配置Sybase的内嵌资源,并...
  • 当我们使用web服务器配置JNDI,而在项目中使用dataSource.getConnection()时取出的链接往往是经过web容器包装后的Connection,如Websphere包装后的连接是com.ibm.ws.rsadapter.jdbc.WSJdbcConnection,但在应用中...
  • 首先你需要在你D:\java\apache-tomcat-7.0.42\conf\Catalina\localhost中配置你要用的项目,此文件必须为你的项目名字 比如我的是day20配置如下; 前三句是规定的不容改变的,当然导入包是不可缺少的,配置之后,...
  • WEB项目中,数据库的链接的资源绝对不要轻易的浪费,一股都会在服务器上配置一个JNDI数据源,然后在程序中使用它,FR要整合到项目中,自然也要考虑到如何使用现有的数据源链接,FR下也可以配置各种JNDI链接,但...
  • JNDI配置数据库连接

    2011-06-14 13:40:17
    JNDI配置数据库连接首先新建一个Web Project 名字随便起首先把数据库的驱动jar包 例如 Oracle 的jar包 Ojdbc14.jar放在Tomcat的lib目录下,紧接着展开项目WebRoot目录下的META-INF里新建一个context.xml文件内容...
  • mybatis+Tomcat使用JNDI配置数据源

    千次阅读 2018-11-20 20:13:35
    我自己做了一个练手的项目项目已经基本完成,但是项目开始用的是jdbc配置数据源,一切都没有问题,后来我想把它改成用jndi配置数据源。下面是我改造时查了很多资料后整理的学习笔记,自己试过了没问题。仅供参考,...
  • tomcat JNDI配置数据源

    2012-12-04 14:37:36
    网上很多资料都说配置JNDI需要更改context.xml或者server.xml,而且要配置项目里的web.xml文件,看起来都觉得麻烦!!! 但是我试了一下,发现其实并不需要那么麻烦。我是SSH项目在Spring层配置JNDI数据源,其实很...
  • 使用JNDI配置数据源

    2013-03-21 23:19:17
    项目中用JNDI方式配置了数据源。...1.mysql驱动程序添加到web项目的lib文件下。 2.META-INF下创建一个context.xml(也可以不写在这,在tomcat的server.xml下也可以,这里只放在自己项目下只供自己项目使用。
  • java web项目与oracle rac连接JNDI

    千次阅读 2016-04-28 12:32:09
    某环境使用的oralce数据库采用了rac的策略做了负载均衡,现需要将开发的项目部署至该环境...但部署web项目时,使用传统的spring配置与某一个IP相连时,web项目启动失败,报错:数据库SID无效,  【解决方法】: 
  • jndi配置属性的含义

    2007-11-06 21:09:56
    先说流程:(根据tomcat有关jndi的文档,这个文档应该是针对单个项目配置,下面有比较好的可以配置全局使用的例子) 1.先安装jdbc驱动,这一步很简单,只需将对应数据库驱动放到tomcat对应common/lib目录下就行了; ...
  • JNDI配置c3p0连接池

    2017-08-11 17:46:00
    JNDI是什么呢? 就是java命名和文件夹接口。是SUN公司提供的一种标准的Java命名系统接口。 不好理解?...首先我们新建web项目: 新建项目叫:JNDI_demo然后在tomcat文件夹:F:\apache-tomca...
  • java web项目与oracle rac 连接 JNDI

    千次阅读 2014-04-11 16:13:55
    某环境使用的oralce数据库采用了rac的策略做了负载均衡,现需要将开发的项目部署至...但部署web项目时,使用传统的spring配置与某一个IP相连时,web项目启动失败,报错:数据库SID无效,   【解决方法】: 修
  • 1.创建web项目 2.在MEAT-INF创建context.xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;Context&gt; &lt;Resource auth="Container" ...
  • 有关tomcat配置jndi的一些简单介绍: 先说流程:(根据tomcat有关jndi的文档,这个文档应该是针对单个项目配置,下面有比较...2.修改对应项目WEB-INF/web.xml文件,用来声明你的jndi名字以供你的项目使用: ...
  • 在我们已经有了Mybatis基础的情况下,我们可以使用Tomcat部署web项目 1.创建Maven项目 选择webapp 2.配置pom.xml 在pom.xml中添加依赖 这里的依赖比单纯的Mybatis配置多了两个 一个是jsp的依赖,另一个是...
  • 有关tomcat配置jndi的一些简单介绍:先说流程:(根据tomcat有关jndi的文档,这个文档应该是针对单个项目配置,下面有比较好的可以配置全局使用的例子)1.先安装jdbc驱动,这一步很简单,只需将对应数据库驱动放到...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 237
精华内容 94
关键字:

web项目jndi配置