2016-04-11 24 views
0

私はJavaのWebページコード、実際にはLiferayポートレットのベースのWebサイトをチェックしています。Javaの「コンテキスト」クラスは何のために使用されていますか?

私はサーバーサイドの.javaファイルとDAOパターンファイルをチェックしていましたが、プログラマがどのようにDB接続を処理しているかを見ていました。 、

initContext = new InitialContext(); 
envContext = (Context) initContext.lookup("java:/comp/env"); 
ds = (DataSource) envContext.lookup("jdbc/SSMoracle"); 
conn = ds.getConnection(); 

はこれを行う、オブジェクトconnは、DBへの適切な接続を取得します。私はあなたが正常にDriverManagerクラスに呼び出してConnectionオブジェクトを取得するJava SEに使用さだけど、ここでは、物事はかなり異なっていますそれは完璧に動作します。私はそれがどのように動作するかは見たことがない、特にContextクラス。

このクラスは何をしていますか、適切な接続を得るためにDriverManagerを呼び出すクラスを使用する代わりに、なぜこのクラスを使用しますか?私は知りたい!

+0

コンテキストがインターフェイスです。 –

+0

JNDIの基礎クラスです。いくつかのドキュメントを読む必要があります。広すぎます。 – EJP

答えて

2

JNDIの一部であり、Java命名とディレクトリインターフェイスです。これは、Java EEコンテナが提供するサービスの1つです。

アプリケーションは、JNDIのデータソース(データベースアクセス用)のようなものをルックアップできます。管理者は、Java EEコンテナの管理コンソールでデータソースを定義して設定できます。

あなたの質問にあるコード行は、正確には次のようになります。DataSourceをJNDIで検索し、DataSourceからデータベース接続を取得します。例えば、Apache Tomcatのドキュメントのは、あなたがTomcatサーブレットコンテナを使用するとき、これはどのように動作するかを確認するために

は、を見てください:JNDI Resources HOW-TOJNDI Datasource HOW-TO

+0

ありがとう!しかし、どうして私は抽象クラス(DriverManagerを使用しています)を取得する接続を使用するのではなく、使用するべきですか?つまり、J2EEプロジェクトでJNDIを使用する必要があると思いますか? – Zerok

+0

これにより、管理者はデータベース接続(Java EEサーバーの管理コンソール)を管理でき、[接続プール](https://en.wikipedia.org/wiki/Connection_pool)を実行できるようになるため)。 – Jesper

+0

すべてのJava EEプロジェクトに接続プーリングと一緒にJNDIを適用することを検討するには、パフォーマンスを向上させるのに接続プールが十分に適していますか? – Zerok