Proxool与spring 进行集成配置(第二种方法)

一、

       javaee在web.xml文件中的加载顺序是:

              1、<context-param>

              2、<listener>

              3、<filter>

              4、<servlet>

由于在spring3以后去掉了ContextloaderServlet,我们在启动Spring时只能采用ContextLoaderListener(如下:)

<!--配置spring资源文件位置,然后 加载spring -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>WEB-INF/spring.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>


 

在使用之前我写的博文中采用的是使用proxool提供的<servlet>来进行加载,(在加载spring方面避开了使用listener,这种方式有他的缺点)

但是结合这里listener就报错:proxool无法加载的问题。

我们知道proxool要先于spring来进行加载,但是如果使用listener来实现spring的加载,那么如何来调整这种顺序呢?

    解决办法就是我们也使用listener来加载proxool,这个listener就需要我们自己来实现了。

public class ProxoolInitListener implements ServletContextListener {

	private static final String XML_FILE_PROPERTY = "xmlFile";
	private static final String PROPERTY_FILE_PROPERTY = "propertyFile";

	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("  proxool database pool destroyed......");
	}

	public void contextInitialized(ServletContextEvent sce) {
		try {
			System.out.println("  proxool database pool initialized.....");

			ServletContext context = sce.getServletContext();
			String appDir = sce.getServletContext().getRealPath("/");
			Properties pro = new Properties();
			Enumeration<?> names = context.getInitParameterNames();
			while (names.hasMoreElements()) {

				String name = String.valueOf(names.nextElement());
				String value = context.getInitParameter(name);
				if (name.equals(XML_FILE_PROPERTY)) {
					File file = new File(value);
					if (file.isAbsolute()) {
						JAXPConfigurator.configure(value, false);
					} else {
						JAXPConfigurator.configure(appDir + File.separator
								+ value, false);
					}
				} else if (name.equals(PROPERTY_FILE_PROPERTY)) {
					File file = new File(value);
					if (file.isAbsolute()) {
						PropertyConfigurator.configure(value);
					} else {
						PropertyConfigurator.configure(appDir + File.separator
								+ value);
					}
				}else if (name.startsWith("jdbc")) {
					pro.setProperty(name, value);
				}
			}
			if (pro.size() > 0) {
				PropertyConfigurator.configure(pro);
			}
		} catch (ProxoolException e) {
			e.printStackTrace();
		}
	}
}


这样我们只需要在web.xml配置中进行如下配置,并配置顺序先于spring listener进行配置可以解决该问题。

<!-- 配置proxool资源文件文职,然后加载proxool listener -->
	<context-param>
		<param-name>xmlFile</param-name>
		<param-value>WEB-INF/proxool-conf.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.smart.framework.listener.ProxoolInitListener</listener-class>
	</listener>

	<!--配置spring资源文件位置,然后 加载spring -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>WEB-INF/spring.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值