一、简介 JNDI : Java Naming and Directory Interface (JNDI) 首先关于jndi的配置网上资料很多,但大多都不是我想要的,原因很简单,改的配置文件太多,耦合度还是太高。 据网上资料所言,需要更改的配置文件有三:tomcat的server.xml,工程下的WEB-INF/web.xml和spring的数据源bean的配置。虽然只有三个,但在我看来还是太多,WEB-INF/web.xml是及其不愿意经常改动的。于是就有了以下的方案,只需改动tomcat配置和spring的配置,步骤有二。 1、更改tomcat的server.xml或context.xml 2、配置spring数据源bean 二、JNDI配置 1、更改tomcat的server.xml或context.xml 在context.xml的根节点Context里加入Resource配置;如果需要配置全局的 Resource,则在server.xml的GlobalNamingResources节点里加入Resource,再在Context节点里加入ResourceLink的配置。全局的resource只是为了重用,方便所有该tomcat下的web工程的数据源管理,但如果你的tomcat不会同时加载多个web工程,也就是说一个tomcat只加载一个web工程时,是没有必要配置全局的resource的。 <Resource name="jdbc/testDB" //指定的jndi名称,会用于spring数据源bean的配置和ResourceLink的配置 这里的factory指的是该Resource 配置使用的是哪个数据源配置类,这里使用的是tomcat自带的标准数据源Resource配置类,这个类也可以自己写,实现javax.naming.spi.ObjectFactory 接口即可。某些地方使用的commons-dbcp.jar中的org.apache.commons.dbcp.BasicDataSourceFactory,如果使用这个就需把commons-dbcp.jar及其依赖的jar包,都放在tomcat的lib下,光放在工程的WEB-INF/lib下是不够的。 ResourceLink 的配置有多种: a)tomcat安装目录下的conf/context.xml,把全局的resource直接公开给该tomcat下的所有web工程,在Context节点中加入: <ResourceLink global="jdbc/testMDB" name="jdbc/testMDB" type="javax.sql.DataSource"/> b)tomcat安装目录下的conf/server.xml,该方法可以指定把哪些source绑定到哪个web工程下,但貌似tomcat6.0不支持,tomcat5.5倒可以。 <!-- 新增,第一行为加载的工程配置,第二行是该工程需要的ResourceLink配置 --> c)安装目录下的conf/localhost/下建立一个xml文件,文件名是<yourAppName>.xml。比如工程名为test,则该xml名为test.xml。 <?xml version="1.0" encoding="UTF-8"?>
d)tomcat安装目录下的\webapps\test\META-INF\context.xml的Context节点中增加: <ResourceLink global="jdbc/testMDB" name="jdbc/testMDB" type="javax.sql.DataSource"/> 综上所述,a方法还不如直接把resource定义在context.xml中,免去ResourceLink 配置,也就少了犯错的可能;b、c、d就看个人习惯了,个人还是偏向把所有的resource配置在context.xml中,即方便管理又少了配置。 2、配置spring数据源bean,相当的简单。 <bean id="testDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> ok,配置完成了,至于之后该如何取到这个bean,就不是这次讨论的内容了。 三、常见的报错及解决方案 再看看通常会报的错及解决方案吧。 1、java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSourceFactory 报错详情: …… 问题描述:这是找不到org.apache.commons.dbcp.BasicDataSourceFactory类,这个类在commons- dbcp.jar中,这jar包时放在工程的WEB-INF/lib下的,而不是tomcat的lib下,但tomcat启动时读取它自身的配置(如 server.xml),用的不是工程的lib而是tomcat自带的lib,所以必然报错。就算把这个包拷到tomcat的lib下也不行,因为 commons-dbcp.jar与其他jar包还存在一定的依赖关系。 2、Caused by: javax.naming.NameNotFoundException: Name memberMDB is not bound in this Context 3、Cannot load JDBC driver class 'com.mysql.jdbc.Driver' java.lang.ClassNotFoundException: com.mysql.jdbc.Driver over…… |
- 浏览: 476814 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (501)
- java基础 (45)
- struts2 (22)
- WebService (9)
- JavaScript (21)
- Java多线程 (37)
- Hibernate (5)
- Spring (31)
- 数据库 (4)
- 软件设计 (1)
- J2ee (8)
- oracle (2)
- Linux (41)
- Hadoop (1)
- Java集合 (3)
- 设计模式 (3)
- 高并发 (1)
- JVM (15)
- xml (2)
- 数据库事务 (3)
- 动态代理 (1)
- tomcat (9)
- 其他 (4)
- DNS域名 (3)
- CDN (2)
- javaapi (1)
- 编码问题 (6)
- CSS样式 (1)
- TCP学习 (3)
- Java IO (6)
- 常见异常问题 (1)
- 网络编程 (1)
- 开发工具 (5)
- Maven (10)
- ibatis (12)
- Velocity (8)
- Jquery (11)
- HTTP (9)
- 中间件 (3)
- 软件管理 (2)
- Html (2)
- Redis (3)
- 服务器 (1)
- 分布式文件系统 (1)
- 异常 (1)
- 杂谈 (1)
- ICE (4)
- cxf (1)
- Apache ActiveMQ (1)
- 好文 (1)
- Json (1)
- junit (2)
- JMS (1)
- java工具 (1)
- memcache (5)
- 加密解密 (1)
- powerdesigner (3)
- Enterprise Architect (1)
- ide (0)
- hessian (3)
- svn (1)
- xstream (1)
- idea (12)
- HttpClient (2)
- solr (4)
- lucene (2)
- 正则 (2)
- 商品设计 (1)
- poi (1)
- nginx (8)
- java基础;Java集合类 (1)
- javassist (1)
- JMeter (1)
- springmvc (1)
- Java对象序列化 (2)
- java nio (4)
- RandomAccessFile (1)
- socket (1)
- netty (3)
- 博客 (1)
- Spring AOP (7)
- mysql (10)
- 远程调用 (2)
- https (3)
- 加密 (3)
- sql (1)
- git (1)
- webx (1)
- eclipse (1)
- 上传下载 (2)
- log4j (4)
- Mac 系统使用 (6)
最新评论
-
wanxiaotao12:
aswang 写道总结的不错,
正在读《java并发编程实战 ...
Java并发编程实战-学习笔记 -
aswang:
总结的不错, 正在读《java并发编程实战》,看到其中的不变性 ...
Java并发编程实战-学习笔记 -
lianhan3344:
感谢博主分享!!!!
深入剖析Tomcat How+Tomcat+Works中文367页.pdf -
vict0323:
真的是酱紫么?求真相
Spring 实际开发项目中, 是否要default-autowire="byName"
发表评论
-
ThreadLocal 浅析
2015-07-20 23:15 615ThreadLocal使用场景及用法 ThreadLoca ... -
ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别
2014-08-05 10:16 672Class.getResour ... -
Java 可变参数
2014-08-03 23:17 604Java1.5增加了新特性:可变参数:适用于参数个数不确定, ... -
Java property 的加载读取
2014-08-03 18:22 446Properties properties = new P ... -
Java property文件中文乱码解决方案
2014-08-03 17:53 7071,原理 Property文件中,使用的编码方式根 ... -
JDK native2ascii工具用法
2014-08-03 00:09 621背景:在做Java开发的时候,常常会出现一些乱码,或者无法正 ... -
IDEA properties中文unicode转码问题
2014-08-02 20:02 754在IDEA中创建了properties文件,发现默认中文不会 ... -
Java中Vector和ArrayList的区别
2014-03-19 21:44 571转:Java中Vector和ArrayLi ... -
java 7 Reflection详解(二),获取class对象信息
2014-03-07 15:36 725java 7 Reflection详解(二),获取class对 ... -
内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、
2014-02-28 15:34 472内省IntroSpector JavaBean主要用于传递 ... -
java自定义annotation学习
2014-02-10 20:00 693补课了,30分钟让你学会java自定义annotation ... -
java中finally子句的分析
2013-12-12 23:41 906参考:java中finally子句的分析 p ... -
javap反编译命令的使用
2013-11-15 14:16 757Javap 用法 用习惯了著名的反编译工具ja ... -
string
2013-11-15 00:03 513http://www.cnblogs.com/A_ming/a ... -
Java 中 Vector、ArrayList、List 使用深入剖析(转)
2013-11-13 23:55 434Java 中 Vector、ArrayList、List 使用 ... -
java逻辑运算符与位运算符
2013-11-11 14:52 463一. 与、或、非、异或运算 与 0&&0 ... -
HashMap学习
2013-11-11 10:55 321深入理解HashMap HashMap深度分析 ... -
Java过滤特殊字符的正则表达式
2013-10-15 09:35 1051Java过滤特殊字符的正则表达式 正则表达式说明 ... -
Java数字格式化
2013-10-09 13:21 740Java数字的格式化 : Java代码 ... -
Java读取文件内容并转换为字符串
2013-09-30 17:05 1250String FileName="d:/2.txt& ...
相关推荐
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...
。。Spring11MVC+JNDI+Tomcat配置数据源.docx
。。Spring11MVC+JNDI+Tomcat配置数据源.pdf
Spring框架作为一个强大的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,提供了多种配置数据源的方式,其中包括通过JNDI(Java Naming and Directory Interface)来查找和配置数据源。JNDI...
本示例主要讲解如何在Tomcat6中结合JNDI(Java Naming and Directory Interface)和C3P0库来配置数据库连接池,这对于初学者理解Web应用服务器与数据库的交互方式具有很大帮助。 首先,C3P0是一个开源的JDBC连接池...
在Tomcat中配置JNDI资源,以便Spring可以使用这些数据源。具体的XML配置如下: ```xml auth="Container" factory="org.objectweb.jndi.DataSourceFactory" type="javax.sql.DataSource" driverClassName=...
12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...
通常,了解Tomcat6.0中JNDI的配置涉及的主要源码包括`server.xml`配置文件解析和Spring的JNDI查找逻辑。这些源码可以在Tomcat和Spring的GitHub仓库中找到,对于深入理解配置原理非常有帮助。 总的来说,配置Tomcat...
NULL 博文链接:https://yubolg.iteye.com/blog/1544898
然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...
12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...
6. C3P0的配置也需在Spring配置文件中进行,包括数据源的初始化大小、最大连接数等。 7. 启动Tomcat服务器,访问应用的URL以查看应用是否正常运行。 通过这个简单的示例,你可以了解到如何将这些组件整合在一起,...
4. **配置JNDI**:JBOSS可以通过JNDI(Java Naming and Directory Interface)查找并连接到TOMCAT,需要在JBOSS的`jboss-service.xml`中添加相应的配置。 5. **测试集成**:启动JBOSS,检查TOMCAT是否能正常工作,...
Struts2+Spring+Hibernate(SSH)是一种经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。本教程将详细介绍如何配置这三个组件,以确保一个完整的开发环境。 首先,我们来了解一下SSH的组成部分...
1. 在Spring中配置Hibernate,例如使用SessionFactoryBean创建SessionFactory,实现数据访问层(DAO)和Service层的集成。 2. 通过Spring的AOP实现事务管理,确保数据操作的一致性。 3. 利用Spring的IoC管理...
下面我们将深入探讨如何在Spring中配置JNDI数据源。 首先,了解JNDI的基本概念。JNDI是一个接口,提供了在命名和目录服务中查找和管理对象的API。在Java应用服务器中,JNDI通常用于查找数据源,这些数据源已经预先...
一个简单的tomcat6.0+mysql5.5整合spring3.0和hibernate3.3的一个简单的实例,其中的datasource是tomcat JNDI配置的 type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://...
1. **配置数据源**:在`applicationContext.xml`中定义数据源,通常使用JNDI数据源或Spring内置的数据源。 2. **配置SessionFactory Bean**:基于`hibernate.cfg.xml`创建SessionFactory Bean。 3. **配置DAO层**:...
如果你的服务器支持JNDI,那么需要在服务器配置文件中添加相应的数据源定义,并确保与Spring中的配置一致。 3. 编译和部署:根据你的开发环境,可能需要编译项目(如使用Maven或Gradle),然后将生成的WAR文件部署...