`
y806839048
  • 浏览: 1126967 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

配置Tomcat JNDI数据源

阅读更多

以下示例基于Spring:

1、在Mysql中建立Spring数据库,数据库中建立user表

配置Tomcat JNDI数据源

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"/>

具体sample如下所示:

配置Tomcat 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>

启动tomcat访问:
配置Tomcat JNDI数据源

 

配置Tomcat JNDI数据源

 

分享到:
评论

相关推荐

    intellij idea使用tomcat开发时自动部署jndi数据源

    在这个场景中,“intellij idea使用tomcat开发时自动部署jndi数据源”是一个重要的知识点,它涉及到如何在IDE中配置和管理数据库连接,以便于在应用运行时动态地查找和使用数据源。 JNDI(Java Naming and ...

    tomcat配置JNDI数据源

    【标题】:“Tomcat配置JNDI数据源” 【描述】:“在Tomcat服务器上配置JNDI数据源,特别是通过DBCP连接池的方式” 【标签】:“tomcat,配置,JNDI数据源” 【内容】:配置JNDI数据源在Java Web应用程序中是一个...

    tomcat8 JNDI数据源加密

    TOMCAT8 JNDI对用户名和密码加密

    tomcat jndi数据源解密factory

    自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。

    tomcat配置jndi数据源

    公共数据源配置 可以在 Tomcat 的 context.xml 文件中增加公共数据源或引用公共数据源。 例如,在 context.xml 文件中增加以下代码: ```xml username="root" password="root" driverClassName=...

    在Tomcat配置JNDI数据源的三种方式

    在Tomcat配置JNDI数据源的三种方式

    Tomcat JNDI 数据源 自动生成程序 Servlet 版

    根据项目名自动生成 JNDI 配置文件,使程序员从手动配置JNDI数据源中解脱出来。 使用说明: 1、把“TomcatJNDI.war”文件放入 tomcat 的 webapps 文件夹下; 2、启动tomcat,在地址栏上输入:...

    Tomcat配置JNDI数据源的N种方法

    Tomcat配置JNDI数据源的N种方法

    JNDI数据源配置(tomcat)

    "JNDI 数据源配置(tomcat)" JNDI(Java Naming and Directory Interface)是一种Java API,用于访问命名和目录服务。JNDI 数据源配置是 Java Web 应用程序中常用的数据库连接方式。Tomcat 是一个流行的 Java Web ...

    Tomcat jndi 配置数据源过程

    总结,通过上述步骤,你已经在Tomcat中成功配置了一个JNDI数据源,使得应用程序可以通过全局名字方便地获取和释放数据库连接。这种配置方式提高了代码的可复用性和可维护性,同时利用连接池优化了数据库操作的性能。

    配置 JNDI 数据源

    在Spring框架与Tomcat服务器的集成中,配置JNDI数据源是将数据库连接管理交给服务器来处理,提高应用的可移植性和资源利用率。下面将详细解释配置JNDI数据源的相关知识点。 一、JNDI数据源的概念 JNDI数据源是一种...

    Tomcat6.0 JNDI数据源经典实例

    总结来说,这个Tomcat 6.0 JNDI数据源经典实例提供了从配置到使用的全过程,包括了必要的文件和脚本,便于开发者理解和实践JNDI数据源在实际项目中的应用。正确配置和使用JNDI数据源能有效管理和优化数据库连接,...

    tomcat中配置jndi 数据源

    tomcat中配置jndi 数据源!!!

    Tomcat6+spring+jndi配置数据源说明.docx

    Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理...本文档提供了详细的 Tomcat6+Spring+JNDI 配置数据源的步骤和原理,可以帮助开发者快速了解和实现数据源配置。

    Tomcat6.0配置JNDI数据源完整例子(5.5与此配置相同)

    总的来说,配置Tomcat 6.0的JNDI数据源是一个涉及多个配置文件和代码段的过程。正确配置后,它将使你的应用程序能够高效、灵活地管理和使用数据库连接。同时,这种解耦合的设计也有利于应用的扩展和维护。

    Tomcat-5配置JNDI数据源

    【标题】:“Tomcat-5配置JNDI数据源” 【描述】:“配置Tomcat 5.5及以上版本中的JNDI数据源” 【标签】:“JNDI数据源”、“数据源”、“JNDI” 【正文】: 在Java应用服务器如Tomcat中,JNDI(Java Naming ...

    Tomcat JNDI配置

    在配置 Tomcat JNDI 时,可能会遇到一些常见的问题,例如数据源无法连接、JNDI 名称不正确等。解决这些问题的方法包括: * 检查数据源 URL 是否正确 * 检查 JNDI 名称是否正确 * 检查 JDBC 驱动类是否正确 * 检查...

    SpringMVC+JNDI+Tomcat配置数据源

    ### SpringMVC+JNDI+Tomcat配置数据源 ...单个应用独享数据源适合于简单的项目,而全局JNDI数据源配置则更适合于大型系统,便于资源管理和复用。同时,还需要注意避免常见的配置错误,确保系统的稳定运行。

Global site tag (gtag.js) - Google Analytics