2017-05-25 9 views
0

学校のために、彼らは私たちを平易なold daoとtomcatのpostgresDBトラフに接続させています。しかし、与えられたコードは動作していません。私は今ここでかなり詰まっています。Java/TomCat BaseDao NoInitialContextException

だからここに行く。我々は(これまでのところは良い)のcontext.xmlファイルにサーバーの仕様を書き、とTomcatのlibフォルダにjarファイルドライバをインポートする必要がありました

package nl.hu.v1wac.firstapp.persistence; 

import java.sql.Connection; 
import javax.naming.InitialContext; 
import javax.sql.DataSource; 

public class BaseDao { 
    protected final Connection getConnection() { 
    Connection result = null; 

    try { 
     InitialContext ic = new InitialContext(); 
     DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/PostgresDS"); 

     result = ds.getConnection(); 
    } catch (Exception ex) { 
     throw new RuntimeException(ex); 
    } 

    return result; 
    } 
} 

与えconnectiondao。 context.xmlには、私のダオさんを設定した後のcontext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
<Resource name="jdbc/PostgresDS" 
url="jdbc:postgresql://localhost:5432/worlddb" 
driverClassName="org.postgresql.Driver" 
auth="Container" 
type="javax.sql.DataSource" 
username="postgres" 
password="secret" /> 
</Context> 

のsrc /メイン/ webappの/ META-INFディレクトリに

ですが、私はメインでそれらを起動して取得しよう次のエラー:ACCとして、誰が助けることができるだろう

DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/PostgresDS"); 

:によって引き起こさ言われ

Exception in thread "main" java.lang.RuntimeException: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 

スライド/マニュアルのordingは、すべてこれにする必要があります:/

ありがとうございます!

P.S.我々は、Tomcat 8.5を使用してEclipseのジヨンネオン

編集メインクラス

package nl.hu.v1wac.firstapp.persistence; 

import java.sql.SQLException; 

public class Pattern { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     CountryDao cdao = new CountryDaoPostgreSQL(); 
     try { 
      cdao.findALl(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

答えて

0

あなたは確かにそれを取得するべきではありませんしています。

あなたはこのコードをTomcat内で実行していますか?外にはない?不平はInitialContextがルックアップをする基礎となる "配管"を持たないということです。通常、これは実行している環境によってすべて管理されますが、Java SEアプリケーションで「スタンドアローン」を実行している場合を除き、これは決して見るべきではありません。

+0

Daoを使って特定のdao.methodを実行するEclipse Jee Neonでメインを実行した後、このエラーが発生します。このDAOは、DAOインタフェースとスーパークラスをベースに実装しています。 (私は上記コードにメインを追加しました) – Edo

+0

あなたのコードをサーブレットに入れてTomcatにデプロイする必要があります。あなたには欠けている基本的なステップがありますが、クラスですべてのことを明確にする必要があります。 –

関連する問題