当前位置:首页 > 开发 > 编程语言 > XML > 正文

web.xml之资源管理对象配置 resource-env-ref

发表于: 2014-02-11   作者:bijian1013   来源:转载   浏览:
摘要: resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联 <resource-env-ref> <resource-env-ref-name>资源名</resource-env-ref-name> <resource-env-ref-type>查找资源时返回的资源类

resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联

<resource-env-ref>
    <resource-env-ref-name>资源名</resource-env-ref-name>
    <resource-env-ref-type>查找资源时返回的资源类名</resource-env-ref-type>
</resource-env-ref>

<resource-env-ref-name>:资源的名称 相对于java:comp/env >>context

<resource-env-ref-type>:当web应用查找该资源的时候,返回的Java类名的全称

 

建立步骤:

一.先在meta-inf目录下新建一个Context.xml文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!--对于javax.sql.DataSource资源类型 Tomcat容器提供了默认factory org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory -->
<Resource name="jdbc/mssql" auth="Container"
          type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver"
          url="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=spring3mvc"
          username="sa" password="wlyoa_)*#!" >
</Resource>
<Resource name="bean/MyBeanFactory" auth="Container"
          type="com.myapp.domain.MyBean"  factory="org.apache.naming.factory.BeanFactory" projectName="我的测试项目">
</Resource>
</Context>

二.在web.xml中添加资源引用

<!--定义外部资源管理对象 在Web容器目录的conf\Catalina\localhost\工程名.xml文件中(可见示例文件:WebContext.xml) -->
<resource-env-ref>
  <resource-env-ref-name>bean/MyBeanFactory</resource-env-ref-name>
  <resource-env-ref-type>com.myapp.domain.MyBean</resource-env-ref-type>
</resource-env-ref>
<resource-env-ref>
  <resource-env-ref-name>jdbc/mssql</resource-env-ref-name>
  <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>

三.在Servlet类中可通过如下方式查找或使用资源

package com.myapp.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

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 com.myapp.domain.MyBean;

/**
 * 
 */
public class MyFirstServlet extends HttpServlet {

	private String servletInitParam="";
	
	public MyFirstServlet() {
		// TODO Auto-generated constructor stub
	}

	public void init(){
		servletInitParam=this.getInitParameter("ServletInitParam");
	}
	public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
		
		testDataSourceJNDI();
		testBeanSourceJNDI();
		String parame1=getServletContext().getInitParameter("MyContextParam");
		String projectName=getServletContext().getInitParameter("ProjectName");
		System.out.println("上下文初始化参数1:"+parame1);
		System.out.println("上下文初始化参数2:"+projectName);
		PrintWriter writer=response.getWriter();
		writer.println("<html><head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>");
		writer.println(projectName);
		writer.println("</title></head>");
		writer.println("<body>");
		writer.println(servletInitParam+":"+servletInitParam+"<br/>");
		writer.println("上下文初始化参数1:"+parame1+"<br/>");
		writer.println("上下文初始化参数2:"+projectName+"<br/>");
		writer.println("</body></html>");
	}
	public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
		doGet(request, response);
	}
	public void destroy() {
		super.destroy();
		System.out.println("我是destroy()方法!用来进行销毁实例的工作");
	}
	/**
	 * Java-Bean资源读取测试
	 */
	private void testBeanSourceJNDI()
	{
		try {
			System.err.println("testBeanSourceJNDI");
			Context context=new InitialContext();
			Context envContext=(Context)context.lookup("java:/comp/env");
			MyBean mBean=(MyBean)envContext.lookup("bean/MyBeanFactory");
			System.out.println(mBean.getHello()+":"+mBean.getProjectName());
			
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
	/**
	 * DataSource资源测试
	 */
	private void testDataSourceJNDI() 
	{
		try {
			
		System.err.println("DataSourceJNDI");
		Connection connection=null;
	    ResultSet result = null;
	    Statement stmt = null;
		Context context=new InitialContext();
		Context envContext=(Context)context.lookup("java:/comp/env");
		DataSource dataSource=(DataSource)envContext.lookup("jdbc/mssql");
		try {
			connection=dataSource.getConnection();
			stmt=connection.createStatement();
			result=stmt.executeQuery("select * from Author");
			while (result.next()) {
				System.out.println(result.getString("name"));
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			result.close();
			stmt.close();
			connection.close();
		}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

 

package com.myapp.domain;

/**
 *
 */
public class MyBean {
private String projectName;
private String hello="欢迎使用";
public String getProjectName() {
	return projectName;
}
public void setProjectName(String projectName) {
	this.projectName = projectName;
}
public String getHello() {
	return hello;
}
public void setHello(String hello) {
	this.hello = hello;
}
}

web.xml之资源管理对象配置 resource-env-ref

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
信息资源管理,算是按计划进行最好的一门了,因为比起管理经济学它不是难理解的,就选择先看这本书
原文: http://tech.meituan.com/cgroups.html 引子 cgroups 是Linux内核提供的一种可以限制单个进程
项目的成功,除了管理好时间、成本、范围以及质量外,在项目管理中“人”的因素也非常重要。因为项
今天复习到数据库管理,突发奇想花了这么几幅图!描述一下我们管理数据库与管理我们的箱子! 第一步
“信息资源管理”是信息管理与信息系统专业的一门骨干专业课程,该课程涵盖了信息资源管理的基本概
一、对象语义与值语义 1、值语义是指对象的拷贝与原对象无关。拷贝之后就与原对象脱离关系,彼此独立
一、对象语义与值语义 1、值语义是指对象的拷贝与原对象无关。拷贝之后就与原对象脱离关系,彼此独立
  在使用c++进行windows编程时,程序员除了管理使用new/malloc动态在堆上分配出来的内存外,还需
引文: 对于一个J2EE领域的程序员而言,基本上每天都会和web应用打交道。 什么是web应用?最简单的w
web.xml配置过程中出现了配置顺序问题,在<web-app>左侧总是有红色警告 ! 但是程序仍然启动
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号