JNDIを使用してJavaアプリケーションをデータベースに接続するにはどうすればよいですか?

CuriousMind

データベースに接続するためにJNDIの概念を実装しています。私は出発点を取得するためにグーグルで検索しましたが、取得できませんでした。

私がやりたいのは、データベースに接続するためにJNDIの概念を使用した単純なJavaスタンドアロンアプリケーションです。

私が持っているサンプルソースは次のとおりです。

DataSource dataSource = null;

Context context = null;





    try {       

        context = new InitialContext();

        dataSource = (DataSource) context.lookup("database_connection");
        }

    catch (NamingException e) {

            System.out.println("Got naming exception, details are -> " + e.getMessage());

        }

では、database_connectionをどこで定義しますか?それはxmlファイルで定義されていますか?もしそうなら、どこでそれを指定し、それのフォーマットは何ですか?

ポインタを提供できれば、それは素晴らしいことです。

ありがとう

user1676075

質問と例の本当の違いは、スタンドアロンのJavaアプリケーションを使用していることです。かなり-ほとんどすべての例は、JavaEEアプリケーションコンテナ内で実行していることを前提としています。その場合、コンテナへのデータベース接続を定義し、JNDIを使用してデータソースを取得し、そこから接続を取得します。

JNDIルックアップを実行してデータソースを取得すると、JNDIフレームワークは初期コンテキストファクトリ(InitialContextFactoryを実装するクラス)を検索します。Java EEアプリケーションでは、コンテナがそれを提供します。スタンドアロンJavaアプリケーションでは、初期コンテキストはnullであり、それ以上のルックアップは正しく解決されません。

これを解決する方法の1つは、独自の初期コンテキストファクトリを作成することです。

public class MyContextFactory implements InitialContextFactory

起動時にそれをJNDIに挿入します。

System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "mypackag.MyContextFactory");

次に、getInitialContext呼び出しから新しいObjectFactoryを返し、次にObjectFactoryを実装して、getConnection()呼び出しからDataSource(おそらくカスタム)を返します。

それはすべてうまくいくでしょうが、それはやり過ぎです。データソースを使用するよりも、通常のJDBC接続文字列アプローチを使用してアプリケーションで直接接続を取得する方が簡単です。または、Springのようなフレームワークを使用して挿入するか、データベース接続情報をコードから分離します(この場合、JNDIではなくSpring構成ファイルを直接使用します)。

カスタムコンテキストファクトリとデータソースアプローチの作成を推奨する理由の1つは、Java EEアプリ内とスタンドアロンアプリ内の両方で実行する共通のJPAコードがある場合です(それ以外の場合、同じコードを構成するのは簡単ではありません)両方を行うため)。それはあなたの場合のようには聞こえません。

つまり、スタンドアロンでJava EEコンテナを使用していないので、本当の答えは、ユースケースがデータソースに適していないということだと思います(Springのようなフレームワークを提供するフレームワークに移行しない限り)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#アプリケーションをAWS EC2データベースに安全に接続するにはどうすればよいですか?

分類Dev

JavaアプリケーションからOracleリモートデータベースに接続するにはどうすればよいですか?

分類Dev

後でscalaplay-frameworkアプリケーションを使用してデータベースを作成するにはどうすればよいですか?

分類Dev

Laravelを使用してアプリケーションの実行中に別のデータベースに接続するにはどうすればよいですか?

分類Dev

NHibernateを使用して単一のアプリケーションで複数のデータベースに接続するにはどうすればよいですか?

分類Dev

Flaskアプリケーションを実行しているminikube(kubernetes)ノードをmysql dockerコンテナ内の共通データベースに接続するにはどうすればよいですか?

分類Dev

dockerを介して実行しているJavaアプリケーションをCassandraに接続するにはどうすればよいですか?

分類Dev

C#Windowsアプリケーションを介してMariaDBデータベースに接続してクエリを送信するにはどうすればよいですか?

分類Dev

LDAPサーバーを使用してvb.NetアプリケーションをOracleに接続するにはどうすればよいですか?

分類Dev

ローカルマシンでサービスとして実行されているデータベースサーバーを、Pivotal Cloud FoundryでホストされているWebアプリケーションに接続するにはどうすればよいですか?

分類Dev

PHPを使用してAndroidアプリをAmazonRDS MySQLデータベースに接続するにはどうすればよいですか?

分類Dev

接続時にOracleに対して自分のJavaアプリケーションを識別させるにはどうすればよいですか?

分類Dev

多言語アプリケーションにFirestoreデータベースを使用するにはどうすればよいですか?

分類Dev

pypikaを使用してデータベースに接続するにはどうすればよいですか?

分類Dev

ADOを使用してデータベースに接続するにはどうすればよいですか?

分類Dev

外部接続を必要としないWPFアプリケーション内に内部データベースを作成するにはどうすればよいですか?

分類Dev

Javaアプリケーションでmongodbに接続するにはどうすればよいですか?

分類Dev

アプリケーションでデータベースsqliteを使用するにはどうすればよいですか?

分類Dev

Androidアプリケーションアップデートでデータベースを再作成するにはどうすればよいですか?

分類Dev

Googleアシスタントを使用してアプリケーションをトリガーするにはどうすればよいですか

分類Dev

Hibernateを使用して、必要な特権が複数のデータベースアプリケーションに正しく設定されているかどうかを確認するにはどうすればよいですか?

分類Dev

Java Springアプリケーションのメタデータファイルを生成して、Ping FederateなどのIDプロバイダーとの接続を確立するにはどうすればよいですか?

分類Dev

Hibernateを使用してアプリケーションJavaのデータベースからデータを更新するにはどうすればよいですか?

分類Dev

PHP Webアプリケーションをデスクトップアプリケーションに変換してデータベースを保持するにはどうすればよいですか?

分類Dev

WinForms C#アプリケーションを使用して電子メールを介してデータを中央のSQL Serverデータベースにマージするにはどうすればよいですか?

分類Dev

BluemixでPHPアプリケーションを変換して、mySQLデータベースの代わりにSQLデータベースを使用するにはどうすればよいですか?

分類Dev

ローカルマシン上のCassandraデータベースにAndroidアプリを接続するにはどうすればよいですか?

分類Dev

接続トークンを使用してAzureサブスクリプションに接続するにはどうすればよいですか?

分類Dev

アプリケーション全体で1つのデータベース接続オブジェクトを使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    C#アプリケーションをAWS EC2データベースに安全に接続するにはどうすればよいですか?

  2. 2

    JavaアプリケーションからOracleリモートデータベースに接続するにはどうすればよいですか?

  3. 3

    後でscalaplay-frameworkアプリケーションを使用してデータベースを作成するにはどうすればよいですか?

  4. 4

    Laravelを使用してアプリケーションの実行中に別のデータベースに接続するにはどうすればよいですか?

  5. 5

    NHibernateを使用して単一のアプリケーションで複数のデータベースに接続するにはどうすればよいですか?

  6. 6

    Flaskアプリケーションを実行しているminikube(kubernetes)ノードをmysql dockerコンテナ内の共通データベースに接続するにはどうすればよいですか?

  7. 7

    dockerを介して実行しているJavaアプリケーションをCassandraに接続するにはどうすればよいですか?

  8. 8

    C#Windowsアプリケーションを介してMariaDBデータベースに接続してクエリを送信するにはどうすればよいですか?

  9. 9

    LDAPサーバーを使用してvb.NetアプリケーションをOracleに接続するにはどうすればよいですか?

  10. 10

    ローカルマシンでサービスとして実行されているデータベースサーバーを、Pivotal Cloud FoundryでホストされているWebアプリケーションに接続するにはどうすればよいですか?

  11. 11

    PHPを使用してAndroidアプリをAmazonRDS MySQLデータベースに接続するにはどうすればよいですか?

  12. 12

    接続時にOracleに対して自分のJavaアプリケーションを識別させるにはどうすればよいですか?

  13. 13

    多言語アプリケーションにFirestoreデータベースを使用するにはどうすればよいですか?

  14. 14

    pypikaを使用してデータベースに接続するにはどうすればよいですか?

  15. 15

    ADOを使用してデータベースに接続するにはどうすればよいですか?

  16. 16

    外部接続を必要としないWPFアプリケーション内に内部データベースを作成するにはどうすればよいですか?

  17. 17

    Javaアプリケーションでmongodbに接続するにはどうすればよいですか?

  18. 18

    アプリケーションでデータベースsqliteを使用するにはどうすればよいですか?

  19. 19

    Androidアプリケーションアップデートでデータベースを再作成するにはどうすればよいですか?

  20. 20

    Googleアシスタントを使用してアプリケーションをトリガーするにはどうすればよいですか

  21. 21

    Hibernateを使用して、必要な特権が複数のデータベースアプリケーションに正しく設定されているかどうかを確認するにはどうすればよいですか?

  22. 22

    Java Springアプリケーションのメタデータファイルを生成して、Ping FederateなどのIDプロバイダーとの接続を確立するにはどうすればよいですか?

  23. 23

    Hibernateを使用してアプリケーションJavaのデータベースからデータを更新するにはどうすればよいですか?

  24. 24

    PHP Webアプリケーションをデスクトップアプリケーションに変換してデータベースを保持するにはどうすればよいですか?

  25. 25

    WinForms C#アプリケーションを使用して電子メールを介してデータを中央のSQL Serverデータベースにマージするにはどうすればよいですか?

  26. 26

    BluemixでPHPアプリケーションを変換して、mySQLデータベースの代わりにSQLデータベースを使用するにはどうすればよいですか?

  27. 27

    ローカルマシン上のCassandraデータベースにAndroidアプリを接続するにはどうすればよいですか?

  28. 28

    接続トークンを使用してAzureサブスクリプションに接続するにはどうすればよいですか?

  29. 29

    アプリケーション全体で1つのデータベース接続オブジェクトを使用するにはどうすればよいですか?

ホットタグ

アーカイブ