Tomcat6を実行していて、サーブレットからデータソースにアクセスしたいとします。Java JNDIコンテキストルックアップを使用してオブジェクトにアクセスできません
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/HomeController">
<Resource name="jdbc/HomeController" auth="Container" type="javax.sql.DataSource" driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
acquireIncrement="5"
username="client"
password="1234"
jdbcUrl="jdbc:sqlserver://192.168.1.5:1433;databaseName=myDB;autoReconnect=true" />
</Context>
は、私も私のWebアプリケーション "にHomeController" に改名同じのcontext.xmlを持っています。しかし、私は
javax.naming.OperationNotSupportedException: can''t generate an absolute name for this namespace
at org.apache.naming.NamingContext.getNameInNamespace(NamingContext.java
:772)
私のcontext.xmlがにHomeController/META-INF/context.xmlに下で取得していますTOMCAT_HOME/conf/Catalina/localhost/HomeController.xmlの下に置かれます。私は、この持っている私のサーブレットで
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Home Controller</display-name>
<servlet>
<servlet-name>HomeController</servlet-name>
<servlet-class>com.home.controller.HomeController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HomeController</servlet-name>
<url-pattern>/HomeController</url-pattern>
</servlet-mapping>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/HomeController</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
:
私のweb.xmlは次のようになり
Connection conn = null;
Context ctx = null;
java.sql.Statement stmt = null;
try {
ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env"); //<--FAILS HERE
DataSource ds = (DataSource) envCtx.lookup("jdbc/EmscribeWS");
conn = ds.getConnection();
DatabaseMetaData mt = conn.getMetaData();
stmt = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
を私はTomcat6の新しいコピーをインストールし、TOMCAT_HOME/libの下にあるsqljdbc4.jarを置い。 私はHomeController/WEB-INF/libの下にJARSがありません。
私のサーブレットで "(Context)ctx.lookup(" java:comp/env ");"を実行すると失敗します。
オブジェクトを取得するときに失敗する理由は誰でも知っていますか?
Tomcatを起動したときに他のエラーがスローされました。私はそれらをすべて修正した後、うまくいった。 – Marquinio