2005.07.11
ある意味では、Cloudscapeは常に組み込み型のデータベースであるといえます。 ひとつのJVMからのみユーザアクセスを受け付けるアプリケーションに組み込むことも、 異なったJVMから、同時に複数のユーザアクセスを受け付けるサーバフレームワークに組み込むこともできます。 Cloudscapeがアプリケーションに組み込まれた場合、ローカルのJDBCドライバが、ローカルのCloudscapeを呼び出します。 Cloudscapeがサーバフレームワークに組み込まれた場合は、そのサーバフレームワークの接続プログラムが、 複数ユーザ対応のJDBCアプリケーションに、ネットワークやインターネットを介してデータを提供します。
ローカルまたは、リモートの複数ユーザ接続(複数ユーザの異なるJVMからの接続)には、Cloudscape Network Server を利用します。 もし、Network Serverに含まれる以外の機能が必要であれば、Cloudscapeの基本機能を他のサーバフレームワークに埋め込む事もできます。
サーバフレームワークにCloudscapeを組み込むには幾多の方法があります。
これが、Cluoudscapeで、異なったJVMの複数ユーザへ接続を提供する最も簡単な方法です。 Cloudscape Network Service はその種の接続機能を提供します。
多くのサーバフレームワーク、たとえばIBMのWebsphere Application Serverとともに、Coudscapeを利用できます。
Cloudscapeは、複数ユーザ接続アプリケーション開発に便利な、以下の機能を含んでいます。
Cloudscape Network Serverは、単一システム、または、ネットワークを介した複数ユーザ接続を提供します。 Network Serverは、クライアントから問い合わせを受け、返答します。問い合わせには、標準の Distributed Relational Database Architecture(DRDA) プロトコルを使用します。 データベースは、IBM JDBCドライバ、DB2 JDBC Universal ドライバを使用し、Cloudscape Network Server を通して、アクセスされます。
Network Serverは、複数のJVMからのデータベース接続を解決します。
CloudscapeがひとつのJVMで稼動するアプリケーションに組み込まれた場合、JDBCドライバが、ローカルのCloudscapeを呼び出します。
Cloudscapeがサーバフレームワークに組み込まれた場合は、そのサーバフレームワークの接続プログラムが、
複数ユーザ対応のJDBCアプリケーションに、ネットワークやインターネットを介してデータを提供します。
Cloudscape Network Serverを実行するためには、以下のファイルをインストールする必要があります。
サーバ側 |
---|
derby.jar |
derbynet.jar |
クライアント側 |
---|
db2jcc.jar |
db2jcc_license_c.jar |
Cloudscape Network Serverを管理するにはいくつかの方法があります。
現在、組み込みモードで起動しているJavaアプリケーションに対して、Cloudscape Network Serverを 適用させるためには、以下の変更を間違いなく行う必要がある。
Cloudscape Network Serverは、Java 2 Platform, Standard Edition, v 1.3.1(J2SE) 以上に対応しています。
以下の JarファイルがNetwork Server および Universal Driver を使用するサーバのクラスパスに設定されていること。
Jarファイル | 内容 |
---|---|
derbynet.jar | Network Server Jarファイルは Network Serverのコードを含みます。 Cloudscape Jarファイルに、このJarファイルを追加すれば、Network Serverを開始することができます。 |
derby.jar | このJarファイルは、どんなCloudscape Network Serverの機能を使用する場合も、クラスパスに設定されている必要があります。 |
db2jcc.jar | このJarファイルは、DB2 JDBC Universal Droverを使用する場合、クラスパスに含める必要があります。 db2jcc.jarファイルは、クライアント側のクラスパスに設定されている必要があります。 |
db2jcc_license.jar | このライセンスJarファイルも、DB2 JDBC Universal Droverを使用する場合、クライアントマシンのクラスパスに含める必要があります。 |
Cloudscapeでは、Nerwork Server を起動させるためのクラスパスを設定するスクリプトファイルを提供しています。
$CLOUDSCAPE_INSTALL/frameworks/NetworkServer/bin
startNetworkServer.bat (Windows)、もしくは startNetworkServer.ksh(UNIX) スクリプトで、サーバを開始できます。
これらのスクリプトは、
$CLOUDSCAPE_INSTALL/frameworks/NetworkServer/bin
ディレクトリにあります。
Network Serverが開始されたホストでのみ、NetworkServerControlコマンドを起動することができます。
Network Server自体は $CLOUDSCAPE_INSTALL/lib にあります。
たとえば、Windowsで、Cloudscapeを規定のディレクトリにインストールした場合で、正しくクラスパスが設定されているなら、
"%CLOUDSCAPE_INSTALL%\frameworks\NetworkServer\bin\startNetworkserver.bat"
とタイプすることで、Nerwork Serverを起動できます。 デフォルトでは、Network Server は、localhostからのループバック接続のみを受け付けるようになっています。
次の何れかの方法で、startNetworkServerスクリプトを変更することができます。
変更箇所 | 内容 |
---|---|
ポート番号 |
デフォルトでは (1527)のポート番号を変更できます。 java org.apach.derby.drda.NetworkServerControl start -p 1368 |
ホスト名もしくは、IPアドレス |
デフォルトでは、localhosutをリッスンしています。 java org.apache.derby.drda.NetworkserverControl start -h myhost -p 1368 |
もし、提供されるスクリプトを使用したくないのなら、Network Server を以下のようにコマンドラインから起動することができます。
java org.apache.drby.drda.NetworkServerControl start [-h host ] [-p portNumber]
Javaアプリケーションから Network Serverを起動するには二つの方法があります。
derby.drda.startNetworkServer=true
これで、ローカルホストのデフォルト 1527ポートでサーバが開始されます。別のポートに変更したい場合、derby.drda.portNumber=1110 derby.drda.host=myhost
等としてください。startNetworkServer や ポート番号を Java コマンドから変更したい場合は、以下のようにしてください。
java -Derby.drda.startNetworkServer=true
-Dderby.drda.portNumber=1110
-Dderby.drda.host=myhost yourApp
NetworkServerControl server = new NetworkServerControl(null); server.start(null);NetworkServerControl.start メソッドは、サーバがシャットダウンされるまで制御を戻しません。 なので、別スレッドを作成し、この処理を行ってください。
Network Serverについて、たとえばバージョンや、プロパティの値、JavaやCloudscapeの情報を、 sysinfo ツールを使用して得ることができます。Sysinfoは、スクリプト、コマンドライン、NetworkServerControl API サーブレットのインターフェースを通して利用できます。
次のスクリプトは、$CLOUDSCAPE_INSTALL/frameworks/NetworkServer/bin ディレクトリにあります。
Cloudscape Network Server が起動されていないと、エラーを返します。
Windowsにて、sysinfo を起動するには、
sysinfo.bat [-h <host>][-p <portnumber>]
Unixでは、
sysinfo.ksh [-h <host>][-p <portnumber>]
コマンドラインから sysinfo を起動するには、NetworkServer起動中に、以下のコマンドを実行してください。
java org.apache.derby.drda.NetworkServerControl sysinfo [-h <host>][-p <portnumber>]
sysinfo コマンドと同じ情報を以下のメソッドにて取得することができます。
String getSysinfo()
以下のように使用します。
NetworkServerControl serverControl = new NetworkServerControl(); String myinfo = serverControl.getSysinfo();
runtimeinfo コマンドを使用することによって、現在のセッションのメモリ使用量など、 Network Serverのランタイム情報を取得できます。
java org.apache.derby.drda.NetworkServerControl runtimeinfo [-h <host>][-p <portnumber>]
String getRuntimeInfo()
NetworkServerControl serverControl = new NetworkServerControl(); String myinfo = serverControl.getRuntimeInfo();
Network Serverの現在のプロパティを取得できます。
Properties getCurrentProperties()
NetworkServerControl server = new NetworkServerControl(); Properties p = server.getCurrentProperties(); p.list(System.out); System.out.println(p.getPropertye("defby.drda.host"));
Network Serverへ接続するとき、アプリケーションはドライバのロードと、接続URLの設定、 さらに、ユーザ名とパスワードの設定が必要です。 もし、認証を設定していないなら、任意のユーザ名とパスワードを設定することができます。 ネットワークを介してサーバに接続するのに必要なドライバは
com.ibm.db2.jcc.DB2Driver
です。
また、ネットワークを介してサーバに接続するURLは、
jdbc:derby:net://server:[<port>]/
<databaseName>[;<Cloudscape URL attribute>=<value>[;...]]
[:<Universal Driver attribute>=<value>[;...]]
Network Serverへ接続する構文は、組み込みモードで、Cloudscapeへ接続する場合の構文と少し違います。 データベース名とその属性の後に、DB2 JDBC ドライバの属性を含めることができますし、 最終のUniversal Driverの属性には、末尾にセミコロンをつけなければなりません。
設定項目 | 内容 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
server |
サーバが起動しているマシン名。buffyのようなマシン名もしくは、158.58.62.225のようなアドレス。 注意 : Network Server が -h オプションつきで起動されているか、 derby.drda.host プロパティが設定されていない場合、この値は localhost を設定しなければなりません。 |
|||||||||||||||||||||
port | サーバがリスンしているポート。デフォルトでは、1527 | |||||||||||||||||||||
database name | 接続しようとしているデータベース名。データベース名は、最大18桁に設定できる。 データベース名にパス情報を含む場合、二重引用符(")で囲まなければならない。 derby.system.nome、derby.propertieファイル、 Network Server 起動時の Java環境のいずれにも、パス情報を設定した場合のシステムホームの決定については、 IBM Cloudscape Developer's Guide に情報があります。 | |||||||||||||||||||||
cloudscape URL attribute=value | Cloudscapeは、データベース接続URLのオプション属性をサポートしています。IBM Cloudscape Developer's Guide に情報があります。 | |||||||||||||||||||||
Universal Driver Attribute=value |
DB2 Universal JDBC ドライバは、データベース接続URLのオプション属性をサポートしています。 DB2 Universal JDBC ドライバは、nullでない、ユーザIDとパスワードを要求します。 以下に、DB2 Universal JDBC ドライバで、Network Serverに対して使用可能な属性示します。
|
String databaseURL = "jdbc:derby:net://localhost:1527/sample"; // IBM JDBC Universal Driver のロード Class.forName("com.ibm.db2.jcc.DB2Driver"); // ユーザ名、パスワード、プロパティのセット Properties properties = new Properties(); properties.put("user", "APP"); properties.put("password", "APP"); properties.put("retreiveMessagesFromServerOnGetMessage", "true"); // コネクションの取得 Connection conn = DriverManager.getConnection(databaseURL, properties);
DB2 Universal Driver DataSource、com.ibm.db2.jcc.DB2SimpleDataSource 、 および、 com.ibm.db2.jcc.DB2ConnectionPoolDataSource は、Network Server をサポートしています。 詳細は、DB2 Universal Driver のドキュメントを参照してください。
public static javax.sql.DataSource getDS(String database, String user, String password) throws SQLException { com.ibm.db2.jcc.DB2SimpleDataSource ds = new com.ibm.db2.jcc.DB2SimpleDatasource(); // DatabaseName は、Cloudscapeの URL属性を含むことができます ds.setDatabaseName(database); if (user != null) ds.setUer(user); if (passowrd != null) ds.setPassword(password); ds.setServerName("localhost"); ds.setPortNumber(1527); // Driver タイプは、4で、Network Serverに接続すること ds.setDriverType(4); return ds; }このプログラムは、以下のように接続できます。
javax.sql.DataSource ds = getDS("mydb;create=true", null, null); // 注意: ユーザと、パスワードは接続に必要です Connection con = ds.getConnection("usr2", "pass2");
|