下面的例子是在Tomcat7中配置JNDI DataSource,并把这个JNDI注册为Spring的Bean。
把JDBC驱动包放到$CATALINA_HOME/lib文件夹下。
注意:
1. 这个在Tomcat7下有效,其它容器就不清楚了。
2. 注意xml中不要忘记写
把上述Resource代码放到${CATALINA_HOME}/conf/context.xml中即可。如下图所示:
把上述Resource代码放到${CATALINA_HOME}/conf/server.xml的GlobalNamingResource节点下。如下图所示:
方案1:在META-INF下添加context.xml | 针对当前Context有效。如果使用的容器是Tomcat,则这种方式更佳。 |
方案2:修改${CATALINA_HOME}/conf/context.xml | 针对当前Context有效,对Tomcat有侵入 |
方案2:修改${CATALINA_HOME}/conf/server.xml | 可多个Context共享使用,对Tomcat有侵入 |
在WEB-INF/web.xml声明需要使用的Resource。建议总是声明如下代码,这样就能知晓程序使用了哪些JNDI。
JNDI Datasource
jdbc/UserDB
javax.sql.DataSource
Container
注意:试了下,方案1和方案2不加上面的代码也可以,但是方案3不加就会提示找不到jdbc/UserDB。
1.Spring提供的支持
2.主要使用的就是JndiObjectFactoryBean
属性简单说明:
resourceRef:设置为true,表示会拼接"java:comp/env/",最终JDNI的名称为"java:comp/env/"+jndiName指定的名称="java:comp/env/jdbc/XXXDB"
lookupOnStartup:设置为false,表示在启动时不会是寻找JNDI,而是在使用时寻找
expectedType:需要指定这个JNDI的类型,如果使用懒加载(即lookupOnStartup=false),则必须指定proxyInterface或者expectedType
defaultObject:表示如果JNDI找不到,则返回默认对象
1.[Tomcat7官方JNDI Datasource配置实例](http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html)
2.[Tomcat7官方对Context的介绍](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html)
3.[Web项目开发环境中运行在Tomcat时涉及到JNDI的Datasource的解决方法](https://www.oschina.net/question/234345_51126)
4.[Tomcat 7.0 JNDI连接池配置](https://blog.csdn.net/jokes000/article/details/7463345)
5.[JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源](https://www.cnblogs.com/xdp-gacl/p/4040103.html)