以下示例基于Spring:
1、在Mysql中建立Spring数据库,数据库中建立user表
2、在tomcat目录下conf\context.xml中的<Context>标签中加入
<Resource name="jndi"
auth="Container"
type="javax.sql.DataSource"
password="mysql5"
username="root"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/spring"
maxActive="5"
maxIdle="2"
maxWait="3000"
/>
3、修改项目的web.xml文件,加入
<resource-ref>
<res-ref-name>jndi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4、在spring配置文件中配置Datasource
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jndi"/>
</bean>
我们也可以采用下面的方式,但是要加入以下命名空间 :
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
<!-- Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。 -->
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jndi"/>
User.java
package cn.nevo.model;
import org.springframework.stereotype.Component;
/**
* Entity
* @author Administrator
*
*/
@Component("user")
public class User {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
UserDao.java
package cn.nevo.dao;
import cn.nevo.model.User;
public interface UserDao {
public void save(User user);
}
UserDaoImpl.java
package cn.nevo.dao.impl;
import java.sql.Connection;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.stereotype.Component;
import cn.nevo.dao.UserDao;
import cn.nevo.model.User;
@Component("userDao")
public class UserDaoImpl implements UserDao {
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
//默认是by name注入
@Resource
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
System.out.println(dataSource);
}
public void save(User user) {
Connection conn = null;
try {
conn = dataSource.getConnection();
conn.createStatement().executeUpdate("insert into user values (null, '" +user.getUsername()+"')");
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println("user saved!");
}
}
UserService.java
package cn.nevo.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cn.nevo.dao.UserDao;
import cn.nevo.model.User;
@Component("userService")
public class UserService {
private UserDao userDao;
public UserDao getUserDAO() {
return userDao;
}
@Resource(name = "userDao")
public void setUserDAO(UserDao userDao) {
this.userDao = userDao;
}
public void add(User user) {
userDao.save(user);
}
}
LoginServlet.java
package cn.nevo.servlet;
import java.io.IOException;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.nevo.model.User;
import cn.nevo.service.UserService;
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet {
private User user;
public User getUser() {
return user;
}
@Resource
public void setUser(User user) {
this.user = user;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
user.setUsername(request.getParameter("username"));
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
UserService userService = (UserService)ctx.getBean("userService");
userService.add(user);
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
<!--
隐式注册 post-processors 包括了
AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,
也包括了前面提到的 RequiredAnnotationBeanPostProcessor。处理我们配置的annotation
-->
<context:annotation-config />
<!--
要检测这些类并注册相应的bean,需要在XML中包含以下元素,其中'basePackage'是类的公共父包
(或者可以用逗号分隔的列表来分别指定包含各个类的包)。
-->
<context:component-scan base-package="cn.nevo" />
<!-- 从Tomcat配置的JNDI服务获取数据源-->
<!--
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jndi"/>
</bean>
-->
<!-- Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。 -->
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jndi"/>
</beans>
index.jsp
<body>
<form action="loginServlet" method="post">
UserName:<input type="text" name="username">
<input type="submit" value="Login">
</form>
</body>
相关推荐
在这个场景中,“intellij idea使用tomcat开发时自动部署jndi数据源”是一个重要的知识点,它涉及到如何在IDE中配置和管理数据库连接,以便于在应用运行时动态地查找和使用数据源。 JNDI(Java Naming and ...
【标题】:“Tomcat配置JNDI数据源” 【描述】:“在Tomcat服务器上配置JNDI数据源,特别是通过DBCP连接池的方式” 【标签】:“tomcat,配置,JNDI数据源” 【内容】:配置JNDI数据源在Java Web应用程序中是一个...
TOMCAT8 JNDI对用户名和密码加密
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
公共数据源配置 可以在 Tomcat 的 context.xml 文件中增加公共数据源或引用公共数据源。 例如,在 context.xml 文件中增加以下代码: ```xml username="root" password="root" driverClassName=...
在Tomcat配置JNDI数据源的三种方式
根据项目名自动生成 JNDI 配置文件,使程序员从手动配置JNDI数据源中解脱出来。 使用说明: 1、把“TomcatJNDI.war”文件放入 tomcat 的 webapps 文件夹下; 2、启动tomcat,在地址栏上输入:...
Tomcat配置JNDI数据源的N种方法
"JNDI 数据源配置(tomcat)" JNDI(Java Naming and Directory Interface)是一种Java API,用于访问命名和目录服务。JNDI 数据源配置是 Java Web 应用程序中常用的数据库连接方式。Tomcat 是一个流行的 Java Web ...
总结,通过上述步骤,你已经在Tomcat中成功配置了一个JNDI数据源,使得应用程序可以通过全局名字方便地获取和释放数据库连接。这种配置方式提高了代码的可复用性和可维护性,同时利用连接池优化了数据库操作的性能。
在Spring框架与Tomcat服务器的集成中,配置JNDI数据源是将数据库连接管理交给服务器来处理,提高应用的可移植性和资源利用率。下面将详细解释配置JNDI数据源的相关知识点。 一、JNDI数据源的概念 JNDI数据源是一种...
总结来说,这个Tomcat 6.0 JNDI数据源经典实例提供了从配置到使用的全过程,包括了必要的文件和脚本,便于开发者理解和实践JNDI数据源在实际项目中的应用。正确配置和使用JNDI数据源能有效管理和优化数据库连接,...
tomcat中配置jndi 数据源!!!
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理...本文档提供了详细的 Tomcat6+Spring+JNDI 配置数据源的步骤和原理,可以帮助开发者快速了解和实现数据源配置。
总的来说,配置Tomcat 6.0的JNDI数据源是一个涉及多个配置文件和代码段的过程。正确配置后,它将使你的应用程序能够高效、灵活地管理和使用数据库连接。同时,这种解耦合的设计也有利于应用的扩展和维护。
【标题】:“Tomcat-5配置JNDI数据源” 【描述】:“配置Tomcat 5.5及以上版本中的JNDI数据源” 【标签】:“JNDI数据源”、“数据源”、“JNDI” 【正文】: 在Java应用服务器如Tomcat中,JNDI(Java Naming ...
在配置 Tomcat JNDI 时,可能会遇到一些常见的问题,例如数据源无法连接、JNDI 名称不正确等。解决这些问题的方法包括: * 检查数据源 URL 是否正确 * 检查 JNDI 名称是否正确 * 检查 JDBC 驱动类是否正确 * 检查...
### SpringMVC+JNDI+Tomcat配置数据源 ...单个应用独享数据源适合于简单的项目,而全局JNDI数据源配置则更适合于大型系统,便于资源管理和复用。同时,还需要注意避免常见的配置错误,确保系统的稳定运行。