`

服务器运行的状态,修改Spring中的applicationContext.xml配置文件

阅读更多
最近在做一个项目,需要访问多个数据库,而且需要在服务器运行不重新启动的情况下,动态的修改spring中配置的数据源datasource,在网上找了很多资料,最后找到了适合我的方法,下面总结一下。
spring的配置文件是在容器启动的时候就加载到内存中的,如果手动改了application.xml,我们必须要重新启动服务器配置文件才会生效。而在spring中提供了一个类WebApplicationContext,这个类可以让你获得一些bean,可以修改内存中的信息,我就是通过这个类来实现的。下面是我具体的代码。

package com.southdigital.hospital;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ChangeSpringConfig extends HttpServlet
{

private String ipAddress = "127.0.0.1";

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}

/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//先取得servleContext对象,提供给spring的WebApplicationUtils来动态修改applicationContext.xml

ipAddress = request.getParameter("ipAddress");
System.out.println(ipAddress);

ServletContext servletContext = this.getServletContext();
WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    ComboPooledDataSource cpds = (ComboPooledDataSource) applicationContext.getBean("dataSource");
    cpds.setJdbcUrl("jdbc:mysql://"+ipAddress+":3306/ssh");

}

}
注意:通过这种方法修改applicationContext.xml文件的时候用c3p0,而不可以用dbcp,dbcp不支持动态修改读取到内存里面的数据。


分享到:
评论
1 楼 youjianbo_han_87 2013-01-18  
spring 3.1已经支持了。

相关推荐

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件6

    1. **使用`@ImportResource`注解**:在Spring Boot的主配置类(通常标注了`@SpringBootApplication`)上添加`@ImportResource`注解,指定XML配置文件的路径。例如: ```java @SpringBootApplication @...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件1

    在Spring Boot应用中,我们通常使用YAML或properties文件来管理配置,但有时也需要与传统的XML配置文件集成,特别是当我们需要处理遗留系统或是利用Spring的一些特定功能时。本篇文章将详细探讨如何在Spring Boot...

    spring在web.xml中和在struts中的不同配置.[收集].pdf

    总结一下,Spring在`web.xml`中的配置主要关注ApplicationContext的初始化和配置文件的位置,而Struts中的配置则是在Struts2配置文件中声明Action和其依赖。两者的主要区别在于初始化时机和依赖管理的方式,Spring的...

    spring + redis + sentinel 配置

    接下来,`applicationContext.xml`是Spring的配置文件,用于定义bean并描述它们之间的依赖关系。在这里,我们需要配置Spring Data Redis和Redis Sentinel的相关bean: 1. 创建`JedisConnectionFactory`,它将用于与...

    Spring配置文件集合

    9. `applicationContext.xml`: 这是Spring容器的主配置文件,用于定义Bean的实例化、依赖注入、bean之间的关系等。它是Spring应用上下文的基础,包含了所有业务对象和服务的配置。 通过这些配置文件的组合,我们...

    java解决org.springframework.web.context.ContextLoaderListener

    8. **检查外部配置**:如果你的Web应用依赖于外部配置文件(如`context.xml`或`applicationContext.xml`),确保它们被正确地引用,并且包含在WAR文件中。 总的来说,`org.springframework.web.context....

    web.xml中ContextLoaderListener的运行过程解析

    4. **创建ApplicationContext**:在`contextInitialized()`方法中,`ContextLoaderListener`首先查找`/WEB-INF/applicationContext.xml`或自定义的配置文件路径,然后根据这些配置文件创建Spring的...

    spring mvc 读取配置文件

    首先,Spring MVC中的配置文件通常是指XML配置文件,如`applicationContext.xml`或`servlet-context.xml`,它们位于`src/main/resources`目录下。这些文件包含了Spring MVC应用的所有组件配置,如控制器(Controller...

    jsf+spring+hibernate.pdf

    在web.xml中,我们定义了一个Spring的ContextLoaderListener,它会在应用启动时加载ApplicationContext.xml配置文件。同时,还配置了JSF的FacesServlet,用于处理JSF的请求。`load-on-startup`设置为0,意味着该...

    idea 配置文件.zip

    总结,"idea配置文件.zip"是一个包含IntelliJ IDEA项目配置的压缩包,主要涉及Spring框架的`applicationContext.xml`,Maven的`pom.xml`,以及Java Web的`web.xml`。这些文件对数据库的支持,尤其是SQLServer,可以...

    如何在spring中等价配置得到原本由jndi配置实现的数据源

    然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...

    Spring依赖包和配置文件

    2. **applicationContext.xml**:此文件通常用于定义整个应用上下文,包含所有bean的定义,是Spring应用的主配置文件。 3. **web.xml**:虽然不是Spring框架的一部分,但在Spring MVC应用中,它是部署描述符,用于...

    spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext

    标题提到的“ClassPathXmlApplicationContext”是 Spring 提供的三种 ApplicationContext 实现之一,主要用来加载类路径下的 XML 配置文件。 ApplicationContext 的主要功能包括: 1. **Bean的管理**:...

    S2SH xml配置文件

    ### S2SH XML配置文件详解 #### 一、概述 S2SH,即Struts2 + Spring + Hibernate,是Java Web开发中一个经典的三层架构框架组合。本文将深入解析一个典型的S2SH项目的XML配置文件内容,帮助初学者更好地理解和掌握...

    spring 所有包和配置文件

    在描述中提到的"applicationContext.xml"就是ApplicationContext的配置文件,它是Spring应用的入口点,用于定义bean的定义和它们之间的依赖关系。 在Spring中,配置文件通常采用XML格式,但随着版本的升级,也支持...

    spring-itcast.zip

    这个压缩包可能包含Spring项目的各种资源,如配置文件(如`applicationContext.xml`)、源代码(`.java`文件)、文档(`.doc`文件,如本例中的`spring-itcast.doc`)、测试文件等。其中,`spring-itcast.doc`可能是...

    spring配置文件加密实现

    在Spring框架中,配置文件通常包含了应用程序的重要信息,如数据库连接、bean的定义以及服务器的配置等。为了保护这些敏感信息不被非法访问或篡改,我们可以对Spring配置文件进行加密处理。本文将深入探讨如何在Java...

    eclipse_spring_jpetstore.rar

    1. 依赖注入:通过XML配置或注解方式实现,例如在`applicationContext.xml`中声明bean并指定其依赖。 2. AOP:在JPetStore中,事务管理是AOP的一个典型应用,通过声明式事务管理,可以在不修改业务代码的情况下,...

    Xfire配置Web Service+Spring+Hibernate详细流程

    - 直接在Spring配置文件中集成,仅需`web.xml`和`applicationContext.xml`。 - 增加`xfire-servlet.xml`文件,此方式适用于更复杂的场景,需要将文件放置在特定目录下。 11. **Web.xml配置** - 更新`web.xml`...

Global site tag (gtag.js) - Google Analytics