JNDIはJava Naming and Directory Interfaceの略です。
JNDIは、一般に「ネーミングサービス」や「ディレクトリサービス」と言われる名前検索により情報を取り出すサービスへ、Javaプログラムからアクセスする手段を提供します。
JDBC 2.0で導入されたJDBCデータソースはJNDIと組み合わせて使用することにより、アプリケーションの自由度を高めています。
JNDI APIは、「ネーミングサービス」や「ディレクトリサービス」にJavaプログラムからアクセスするための共通APIです。実際に「ネーミングサービス」や「ディレクトリサービス」へ対する処理は、JNDIサービスプロバイダと呼ばれるライブラリに実装されます。アプリケーションは使用するJNDIサービスプロバイダを切り替えるだけで、別のサービスにアクセスすることができます。
JDBCドライバでは、JDBCデータソースのためのネーミングサービスとJNDIサービスプロバイダ、およびJDBCデータソース登録ツールを提供しています。
ネーミングサービスはJDBCデータソースを登録および管理します。
JDBCアプリケーションは、登録されたJDBCデータソースを、JNDIを使用して取得し、利用します。
JDBCデータソースを使用する場合、事前にネーミングサービスを起動しておく必要があります。
ネーミングサービスの起動には、以下の2種類の方法があります。
Windows(R)サービス機能を利用したネーミングサービスの起動
Javaコマンドを使用したネーミングサービスの起動
注意
ネーミングサービスは、同時に2つ以上起動しないでください。
処理のタイミングにより、ネーミングサービスで管理している情報に矛盾が発生し、JDBCデータソースの登録情報が壊れる可能性があります。
ネーミングサービスをWindows(R)サービスに登録して起動する方法について説明します。
ネーミングサービスをWindows(R)のサービスに登録することで、パソコンの起動と共に、ネーミングサービスを自動で起動し、バックグラウンドで動作させることができます。上記のOS上でネーミングサービスを起動する場合、ネーミングサービスをWindows(R)のサービスに登録することを推奨します。
Windows(R)サービスへの登録方法
Windows(R)サービスへの登録は、symjddefnsコマンドを使用します。登録されるサービス名は、Symfoware JDBC Naming Serviceです。登録手順は、以下のとおりです。
参照
symjddefnsコマンドの詳細については、“コマンドリファレンス”を参照してください。
コマンドプロンプトを起動します。
注意
Windows Server(R)において、symjddefnsコマンドは、“管理者: コマンドプロンプト”から実行する必要があります。[コマンドプロンプト]を右クリックして表示されるメニューから[管理者として実行]を選択し、“管理者:コマンドプロンプト”を起動してください。
symjddefnsコマンドを実行して、Symfoware JDBC Naming ServiceをWindows(R)サービスに登録します。
以下の画面と同じ[ユーザー アカウント制御]ダイアログが表示された場合は、[続行]ボタンをクリックし、処理を継続してください。
JDKをC:\Interstage\openjdk\jdk8にインストールしていて、ネーミングサービスのポート番号を26600にする場合
symjddefns -add -jdk C:\Interstage\openjdk\jdk8 -port 26600
注意
Windows(R)のコントロールパネルにある、[サービス]画面を表示させた状態で Symfoware JDBC Naming ServiceをWindowsサービスに登録すると、一部のバージョンのWindows(R)で、エラーが発生する場合があります。このような事象が発生した場合、[サービス]画面を閉じてから、再度登録作業を行ってください。
すでに使用されているポート番号を使用して、Symfoware JDBC Naming Serviceを起動することはできません。Symfoware JDBC Naming Serviceの起動に失敗した場合、Symfoware JDBC Naming Serviceで使用するポート番号に誤りがないか確認してください。
Microsoft(R) Windows(R) Defenderがインストールされている場合の注意事項
symjddefnsコマンドを実行した場合、Microsoft(R) Windows(R) Defenderおよびイベントビューアの履歴にSymfoware Serverのサービス登録時のメッセージが出力されます。これは、Microsoft(R) Windows(R) Defenderのリアルタイム保護エージェントがサービスのソフトウェアを監視しているためです。
Symfoware Serverのサービスは、以下のとおりです
リソース: ファイル
JDBC: インストール先フォルダ\JDBC\fjjdbc\bin\SYMJDDEFNS.EXE
Microsoft(R) Windows(R) Defenderのアイコンが通知領域に表示される場合があります。この場合、Microsoft(R) Windows(R) Defenderのアイコンをクリックし、発行元が "FUJITSU LIMITED"の項目について操作に“許可”を設定し[操作を適用する]ボタンをクリックしてください。
Windows(R)サービスの起動方法
Symfoware JDBC Naming Serviceは、パソコン起動時に自動的に起動します。
手動で起動する場合、以下の手順で行ってください。
[管理ツール]で[サービス]を起動します。
Symfoware JDBC Naming Serviceを選択し、[サービスの開始]ボタンをクリックします。
Windows(R)サービスの停止方法
Symfoware JDBC Naming Serviceは、パソコンのシャットダウン時に自動的に停止します。手動で停止する場合、以下の手順で行ってください
[管理ツール]で[サービス]を起動します。
Symfoware JDBC Naming Serviceを選択し、[サービスの停止]ボタンをクリックします。
サービスの削除方法について
Symfoware Server クライアント機能をアンインストールすると、Symfoware JDBC Naming Serviceも削除されます。
Symfoware JDBC Naming Serviceを手動で削除したい場合、以下の手順で行ってください。
コマンドプロンプトを起動します。
symjddefnsコマンドを実行して、Symfoware JDBC Naming Serviceを削除します。
symjddefns -del
Windowsファイアウォール機能について
Windowsファイアウォール機能を有効にする場合、以下の手順でWebサーバのポート番号を有効にしてください。
[コントロールパネル]から[システムとセキュリティ]を選択し、[Windows Defender ファイアウォール]をクリックします。
[Windows Defender ファイアウォール]画面で、[詳細設定]をクリックします。
[セキュリティが強化されたWindows Defender ファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックします。
右側のウィンドウの[新しい規則]をクリックします。
[新規の受信の規則ウィザード]画面の[ポート]ラジオボタンを選択し、[次へ]をクリックします。
[TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、[次へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。
[接続を許可する]を選択し、[次へ]をクリックします。
この規則を適用するプロファイルを選択し、[次へ]をクリックします。
[名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。
[セキュリティが強化されたWindows Defender ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規則が有効になっていることを確認します。
[コントロールパネル]から[システムとセキュリティ]を選択し、[Windowsファイアウォール]をクリックします。
[Windowsファイアウォール]画面で、[詳細設定]をクリックします。
[セキュリティが強化されたWindowsファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックします。
右側のウィンドウの[新しい規則]をクリックします。
[新規の受信の規則ウィザード]画面の[ポート]ラジオボタンを選択し、[次へ]をクリックします。
[TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、[次へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。
[接続を許可する]を選択し、[次へ]をクリックします。
この規則を適用するプロファイルを選択し、[次へ]をクリックします。
[名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。
[セキュリティが強化された Windows ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規則が有効になっていることを確認します。
JDBCドライバをインストールしたマシンで以下のjavaコマンドを実行し、ネーミングサービスを起動します。
java com.fujitsu.symfoware.jdbc2.naming.SYMNameService [<port_no>]
ネーミングサービスの使用するポート番号を指定します。
省略した場合、26600になります。
ポート番号は、1024~32767の範囲で、未使用の値を指定してください。
ポート番号は、1024~49151の範囲で、未使用の値を指定してください。
ポート番号が26600の場合
java com.fujitsu.symfoware.jdbc2.naming.SYMNameService 26600
注意
Solaris/Linuxの場合
SolarisまたはLinuxでネーミングサービスを起動する場合には、環境変数(CLASSPATH)の設定が必要となります。
環境変数の設定方法については、“5.3.2 Javaアプリケーションの環境設定”を参照してください。
ネーミングサービスをBシェルで起動した場合、ネーミングサービス起動後にexitコマンドでログアウトしてください。
システム管理者権限(root権限)を持つユーザがjavaコマンドを実行してください。
ネーミングサービスは、アプリケーションを実行している間サービスとして運用を続ける必要があります。
そのため、SolarisマシンまたはLinuxマシンではコマンドの最後に“&”を付けて、マシンの起動と同時にバックグラウンドで実行するように設定することを推奨します。
ネーミングサービスの停止方法は、起動方法によって異なります。
fgコマンドを実行し、バックグラウンドで動いているジョブをフォアグランドに戻します。
その後、Ctrlキー + Cで停止してください。
記述例を以下に示します。
fg 1
killコマンドで、ネーミングサービスのプロセスを終了させてください。
記述例を以下に示します。
kill -9 プロセスID
以下のコマンドを実行することで、ネーミングサービスのプロセスIDを調べることができます。
ps -ef | grep fujitsu.symfoware.
ネーミングサービスの使用時のエラーについて
ネーミングサービスが停止した状態でネーミングサービスを使用すると、以下のエラーメッセージが出力されます。アプリケーション実行時に以下のエラーメッセージが出力された場合、ネーミングサービスの状態を確認してください。
ネーミングサービスが起動しているか
ネーミングサービスのポート番号が正しいか
javax.naming.CommunicationException:SYMNameServer isn't being started.
起動中のJDBCネーミングサービスが使用しているポート番号を、以下の手順で確認してください。
各コマンドは、システム管理者権限(root権限)を持つユーザが実行してください。
以下のコマンドを実行し、ネーミングサービスのプロセスIDを取得します。
ps -ef | grep fujitsu.symfoware.
以下のコマンドを実行し、ネーミングサービスの状態を表示します。
ss -a -p | grep (ネーミングサービスのプロセスID)
表示される“Local Address:Port”の数字がポート番号ですので確認してください。
Windowsファイアウォール機能について
Windowsファイアウォール機能を有効にする場合、以下の手順でWebサーバのポート番号を有効にしてください。
[コントロールパネル]から[システムとセキュリティ]を選択し、[Windows Defender ファイアウォール]をクリックします。
[Windows Defender ファイアウォール]画面で、[詳細設定]をクリックします。
[セキュリティが強化されたWindows Defender ファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックします。
右側のウィンドウの[新しい規則]をクリックします。
[新規の受信の規則ウィザード]画面の[ポート]ラジオボタンを選択し、[次へ]をクリックします。
[TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、[次へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。
[接続を許可する]を選択し、[次へ]をクリックします。
この規則を適用するプロファイルを選択し、[次へ]をクリックします。
[名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。
[セキュリティが強化されたWindows Defender ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規則が有効になっていることを確認します。
[コントロールパネル]から[システムとセキュリティ]を選択し、[Windowsファイアウォール]をクリックします。
[Windowsファイアウォール]画面で、[詳細設定]をクリックします。
[セキュリティが強化されたWindowsファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックします。
右側のウィンドウの[新しい規則]をクリックします。
[新規の受信の規則ウィザード]画面の[ポート]ラジオボタンを選択し、[次へ]をクリックします。
[TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、[次へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。
[接続を許可する]を選択し、[次へ]をクリックします。
この規則を適用するプロファイルを選択し、[次へ]をクリックします。
[名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。
[セキュリティが強化された Windows ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規則が有効になっていることを確認します。