TomcatでのJNDI接続の構成

3239 ワード

JNDI(Java Naming and Directory Interface、Javaネーミングおよびディレクトリ・インタフェース)は、Javaアプリケーションでネーミングおよびディレクトリ・サービスにアクセスするAPIのセットです.ネーミング・サービスは、名前とオブジェクトを関連付けて、名前でオブジェクトにアクセスできます.ディレクトリサービスはネーミングサービスで、オブジェクトには名前だけでなく属性もあります.
tomcat構成jndiにはグローバル構成とローカル構成があります.大まかに以下の3つの配置方式がある.構成する前にtomcatのlibディレクトリの下にデータベースのドライバjarパッケージを入れる必要があります.
1つ目:グローバル構成
1)tomcatのconfフォルダの下にあるcontext.xmlプロファイルに追加:
<Resource name="jndi/mybatis" 
				auth="Container" 
				type="javax.sql.DataSource" 
				driverClassName="com.mysql.jdbc.Driver" 
				url="jdbc:mysql://localhost:3306/appdb" 
				username="root" 
				password="123456" 
				maxActive="20" 
				maxIdle="10" 
				maxWait="10000"/>	

   
2)プロジェクトのweb.xmlにリソースリファレンスを追加するには、次の手順に従います.

<resource-ref>
  <description>JNDI DataSource</description>
  <res-ref-name>jndi/mybatis</res-ref-name>
  <res-ref-type>javax.sql.DataSource</res-ref-type>
  <res-auth>Container</res-auth>
</resource-ref>

ここでres-ref-nameの値はcontextとする.xmlのname値は一致します.
3)jndi試験方法:
	public void testJNDI() throws NamingException, SQLException{
		Context ctx = new InitialContext();
		DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/mybatis");
		Connection conn = ds.getConnection();
		System.out.println(conn.isClosed());

	}

4)jspでjndiのロードを呼び出す方法は、mainメソッドで直接テストすることはできません.コンテナを起動してjspから呼び出す必要があります.
TestPageAccessURL test = new TestPageAccessURL();
		test.testJNDI();

2つ目:ローカル構成(推奨しません).
1)tomcatのserver.xmlのタブに、次の項目を追加します.
<Context path="/demo_jndi" docBase="/demo_jndi">
		   <Resource
			 name="jndi/mybatis"
			 type="javax.sql.DataSource"
			 driverClassName="com.mysql.jdbc.Driver"
			 maxIdle="2"
			 maxWait="5000"
			 username="root"
			 password="123456"
			 url="jdbc:mysql://localhost:3306/appdb"
			 maxActive="4"/>
		</Context>

その他の構成は第1の方法と同じです.
3つ目:ローカル構成.
1)プロジェクトのMETA-INFOの下にcontextを新規作成する.xml.参加:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource name="jndi/mybatis" 
				auth="Container" 
				type="javax.sql.DataSource" 
				driverClassName="com.mysql.jdbc.Driver" 
				url="jdbc:mysql://localhost:3306/appdb" 
				username="root" 
				password="123456" 
				maxActive="20" 
				maxIdle="10" 
				maxWait="10000"/>	
</Context>

その他の構成は第1の方法と同じです.
まとめ:ローカルを構成する場合は、tomcatに依存しない3つ目の方法をお勧めします.しかし、tomatに依存するが、グローバルであり、複数の構成が可能な第1の方法を推奨する.後で切り替えて使いやすいです.プロジェクトのweb.xmlに追加されたリソースリファレンスは有無を指定できます.