JNDI Datasource HOW-TO

 

 上面博客给了一份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>



3.调用我们的JavaBean

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

4.配置Tomcat的工厂资源

 打开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>


 注意,资源名称(在这里,bean/ MyBeanFactory必须匹配web应用程序部署描述符中指定的值。

 通过上述几个步骤,就可以把我们的JavaBean部署到Tomact中。


你可能感兴趣的:(JNDI Datasource HOW-TO)