上面博客给了一份Tomact中web.xml文件的实例,那么这篇博客就来分析下如何在Tomact中注入数据源。
在做SSH项目的时候,一般都把dataSource配置在applicationContext.xml文件中,通过dbcp或者其他第三方连接池以Bean的形式进行注入。那么下面就来分析一下通过Tomact来注入我们的数据源。有三种方式,主要是作用域不同而已。
在Tomcat配置JNDI数据源的三种方式
上面的博客中,已经讲解的很详细了,小编就不不在这里多写了,下面来通过一个实例来讲解一下,如何通过Tomact来注入JavaBean
1.创建JavaBeanClass
<span style="font-family:Comic Sans MS;font-size:18px;"><span style="font-family:Comic Sans MS;font-size:18px;">/** * @FileName: MyBean.java * @Package:com.test * @Description: TODO * @author: LUCKY * @date:2015年10月12日 下午4:07:27 * @version V1.0 */ package com.test; /** * @ClassName: MyBean * @Description: TODO * @author: LUCKY * @date:2015年10月12日 下午4:07:27 */ public class MyBean { private String foo = "Default Foo"; public String getFoo() { return (this.foo); } public void setFoo(String foo) { this.foo = foo; } private int bar = 0; public int getBar() { return (this.bar); } public void setBar(int bar) { this.bar = bar; } } </span></span>
2.部署声明JavaBean
接下来,修改web应用程序下的Web.xml文件,来描述我们的这个Bean实例。使用一个< resource - env - ref >元素
<span style="font-family:Comic Sans MS;font-size:18px;"><resource-env-ref> <description> Object factory for MyBean instances. </description> <resource-env-ref-name> bean/MyBeanFactory </resource-env-ref-name> <resource-env-ref-type> com.test.MyBean </resource-env-ref-type> </resource-env-ref> </web-app></span>
<span style="font-family:Comic Sans MS;font-size:18px;">/** * @FileName: test.java * @Package:com.test * @Description: TODO * @author: LUCKY * @date:2015年10月11日 下午5:00:02 * @version V1.0 */ package com.test; import java.io.IOException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * @ClassName: test * @Description: TODO * @author: LUCKY * @date:2015年10月11日 下午5:00:02 */ public class testServlet extends HttpServlet { /** * @Fields: serialVersionUID * @Todo: TODO */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Context initCtx; Context envCtx; DataSource ds; Connection conn; try { initCtx = new InitialContext(); envCtx = (Context) initCtx.lookup("java:comp/env"); MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory"); System.out.println("foo = " + bean.getFoo() + ", bar = " + bean.getBar()); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } </span>
打开Tomact目录下的conf/Context.xml,修改如下信息
<span style="font-family:Comic Sans MS;font-size:18px;"><Context> <!-- Default set of monitored resources --> <Resource name="bean/MyBeanFactory" auth="Container" type="com.test.MyBean" factory="org.apache.naming.factory.BeanFactory" bar="23"/> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context></span>
通过上述几个步骤,就可以把我们的JavaBean部署到Tomact中。