3

Java プロジェクトがあり、Ingres データベース用の JNDI 接続を作成しようとしましたが、失敗しました。含める必要がある ingres に固有のものがあるかどうかはわかりませんが、かなりの調査を行った後、物事を機能させることができませんでした。

私のプロジェクトでは、web.xml ファイルと context.xml にデータソース情報があります。

context.xml には次の情報があります

<Context>
<Resource name="jdbc/myDB" auth="Container" type="javax.sql.Datasource"   
  username="myUser" password="password" driverClassName="com.ingres.jdbc.IngresDriver"
  url="databaseURL" maxActive="8" maxIdle="4" maxWait="100" />

 </Context>

私のweb.xmlには次の情報があります

<web-app>
<resource-ref>
    <description>Project Descrip</description>
    <res-ref-name>jdbc/myDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
</web-app>

私のJavaコードでは、次の4行を使用して接続を取得しようとしています

Context initContext = new InitialContext();
Context envContext = (Context) initContent.lookup("java:comp/env");
Datasource ds = (DataSource) envContext.lookup("jdbc/myDB");

return ds.getConnection();

3 行目が実行された後、次のような例外が発生します: NamingException - リソース インスタンスを作成できません

この同じ例外を含む多数の投稿を見つけ、提案された解決策を試してみましたが、うまくいきませんでした。Tomcat 7 サーバーを使用しており、必要な ingres jar (iijdbc.jar) を WEB-INF/lib フォルダーと tomcat lib フォルダーに確実に含めました。

どんな助けや提案も大歓迎です

4

2 に答える 2

0

Ingres についてはよくわかりませんが、データソースを作成しようとすると、JBOSS と DB2 または MySQL に似ています。WEB.XML で resource-ref を定義していることに気付きましたが、サーブレットのパラメーターについては何も言及していません。

<servlet>
    <description>Servlet Description</description>
    <display-name>MyServlet</display-name>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>servlet.MyServlet</servlet-class>

    <init-param>
        <param-name>MyDB</param-name>
        <param-value>java:comp/env/jdbc/MyDB</param-value>
     </init-param>

     <load-on-startup>1</load-on-startup>
</servlet>

次に、サーブレットでコーディングする必要があります。

InitialContext initialContext = new InitialContext();
DataSource dataSource = (DataSource)initialContext.lookup(this.getInitParameter("MyDB"));

お役に立てれば。

于 2014-04-13T13:34:47.353 に答える