Tomcat5.5のデータソースをコンテキスト間で共有する方法

念のため以下のTomcatで試したところ両方ともDataSourceの取得に成功

${TOMCAT_HOME}/conf/server.xmlのGlobalNamingResourcesにDataSourceの設定を追加。

	<GlobalNamingResources 〜>
		:
		
		<Resource   name="jdbc/TestDB"
		            auth="Container"
		            type="javax.sql.DataSource"
		       maxActive="100"
		         maxIdle="30"
		         maxWait="10000"
		        username="admin"
		        password="admin"
		 driverClassName="com.mysql.jdbc.Driver"
		             url="jdbc:mysql://localhost:3306/TestDB"/>
		
	</GlobalNamingResources>

${CONTEXT_HOME}/META-INF/context.xml

<Context path="/jsp-examples" 
      docBase="jsp-examples" 
        debug="5" 
   reloadable="true" 
 crossContext="true">
	
	<ResourceLink global="jdbc/TestDB"
	             name="jdbc/TestDB"
	             type="javax.sql.DataSource" />
	
</Context>

context.xmlってなんだこれ?Tomcatの拡張か!?用途的にapplication.xmlに似てる気が。
ま、context.xmlって言うのがあると言う事だけ覚えとこ。

${CONTEXT_HOME}/WEB-INF/web.xmlにresource-refを追加

	
	:
	
	<resource-ref>
		<description>DB Connection</description>
		<res-ref-name>jdbc/TestDB</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
</web-app>

${CONTEXT_HOME}/test.jspにテストコードを記述

<%@page import="java.sql.*" 
%><%@page import="javax.naming.*"
%><%@page import="javax.sql.*"
%><%
			System.out.println("lookup");
		try {
			InitialContext ic = new InitialContext();
			System.out.println("lookup2");
			DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/TestDB");
			System.out.println("lookup3");
			Connection con = ds.getConnection();
			System.out.println("got a DataSource");
		} catch (Exception e) {
			e.printStackTrace();
		}

%>HelloDataSource