13

GlassFish v3 オープン ソース エディションを実稼働環境にデプロイする予定です。私が必要としている JavaDB (Apache Derby) が付属しています。唯一の問題は、GlassFish の開始時に JavaDB がデフォルトで開始されないことです。コマンドラインに移動して、次のように入力する必要があります。

asadmin start-database

サーバー (GlassFish) が起動するたびにデータベースを自動的に起動する方法はありますか? 私は自分のアプリケーションを開発している間、毎回手動でそれを行うのが嫌いでした.

前もって感謝します

4

4 に答える 4

9

これは少し古いですが、Eclipse の環境設定の GlassFish セクションに「GlassFish サーバーの起動時に JavaDB データベース プロセスを開始する」というタイトルのチェックボックスがあります。Eclipse Indigo SR1 を実行しています。

于 2012-02-21T18:20:05.927 に答える
6

本番環境に入ると、アプリサーバーの状態に関係なく、dbを一度起動して実行したままにすることができます。

start-domainとstart-databaseを単一のuber-startコマンドに「バンドル」するシェルスクリプトを作成できます。

于 2010-08-18T15:23:46.547 に答える
3

これが私が行うことです。これを EJB JAR としてパッケージ化されたサーバーにデプロイします。これにより、Derby サーバーを独自のエンタープライズ アプリケーションとして開始できるようになります。

import java.io.PrintWriter;

import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;

import org.apache.derby.impl.drda.NetworkServerControlImpl;

@Singleton
@Startup
public class LocalDatabase {

private NetworkServerControlImpl networkServerControlImpl = null;

@PostConstruct
private void init() throws Exception {
    networkServerControlImpl = new NetworkServerControlImpl();
    networkServerControlImpl.start(new PrintWriter(System.out));
}

}
于 2012-04-30T02:56:32.483 に答える
3

Derby は組み込みサーバー(つまり、アプリケーション サーバー JVM で実行) とネットワーク サーバー(つまり、ローカル ホストからデフォルト ポート 1527 にアドレス指定されたクライアント リクエストを処理する) の両方として実行できるという事実を利用することをお勧めします。したがって、組み込みモードのパフォーマンス向上の恩恵を受けながら、サーバーの実行中にデータを管理するために "ij" などからアクセスしたり、適切なセキュリティ設定を使用して TCP/IP を介して他のサーバー インスタンスからアクセスしたりできます。その構成では、Derby はアプリケーション・サーバーと一緒に始動および停止します。derby を起動するために、追加のコマンドや明示的なサーバー起動コードは必要ありません。

Glassfish 4 および derby/javaDB 10.10 の構成について以下に説明しますが、他のサーバーおよびバージョンでも同様に機能します。実際、以下のすべてのパスを自分のインストールに合わせて調整する必要があります。

.1. derby.jar、derbyclient.jar、derbynet.jar、derbytools.jar を追加して、サーバーの「共通」クラス・ローダーで derby クラスを使用できるようにします。jar のインスタンスをサーバー インスタンスの JVM lib/ext にコピーします。C:\java\J2EESDK7U1\glassfish\domains\domain1\lib\ext

.2. glassfish 管理 GUI を使用して、次の 2 つのプロパティを [構成] > [server-config] > [JVM 設定] > [JVM オプション] タブに追加し -Dderby.drda.startNetworkServer=trueます -Dderby.system.home=C:/java/J2EESDK7U1/glassfish/databases。1 つ目は、組み込みエンジンがロードされたときにネットワーク モードでリッスンを開始するように Derby に指示し、2 つ目は、Derby データベースとオプションの derby.properties ファイル (たとえば、PROD のセキュリティ設定) への必須パスを提供します。

.3. org.apache.derby.jdbc.EmbeddedDriverサーバーが起動時にクラスをロードするように手配します。これを実現する方法は、たとえば、EJB に でアノテーションを付けてから、EJB でアノテーション付きメソッドを@Startup定義すること@PostConstructです。

@PostConstruct
private void startup() {
  try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      logger.info("Started DERBY in embedded+network mode");
  } catch (ClassNotFoundException e) {
      ... your error handling
  }
}

その他の 6 つのスタートアップのヒントについては、http://blog.eisele.net/2010/12/seven-ways-to-get-things-started-java.htmlを参照してください。

于 2015-08-05T15:07:21.180 に答える