1

デフォルト設定のドメイン モードで Jboss を実行しており、war をmain-server-groupおよびデフォルトで 2 つのサーバーにデプロイしていますserver-one, server-two。サーバー側で実行されているアプリからのデータをDBに挿入したいのですが、2つのサーバーで実行されているため、DBへの挿入が重複しているため、MySQLを使用しています。

両方のサーバーへの展開が同時に行われるため、既にデータベースに挿入されているかどうかを確認できません。

MySQL に挿入する前に確認できるクエリはありますか?

または、実行中のサーバーにアクセス(server-one or server-two)して、実行中の場合にのみ DB に挿入することserver-oneもできますが、アプリが実行されているサーバーにアクセスするにはどうすればよいですか?

4

2 に答える 2

1

行が存在しない場合にINSERTのみ、次のようなものを使用できます (mySQL 用に調整する必要がある場合があります。インスタンスがありません)。

INSERT INTO Registrar (name) (SELECT name
                              FROM (VALUES ('NEW'), ('EXISTING')) as tmp(name)
                              WHERE NOT EXISTS (SELECT '1'
                                                FROM Registrar
                                                WHERE Registrar.name = tmp.name))

(実用的な SQL Fiddle の例- これは PostgreSQL に対して実行されたことに注意してください。これは、mySQL ウィンドウではINSERT.

INSERTステートメントを生成するには行が多すぎる場合はVALUES、それらを一時 (切断時にクリーンアップ) テーブルに貼り付けてから、参照の代わりにその参照を使用しVALUESます。

とにかく、私はあなたが何をしようとしているのかまだ少し疑わしい.

于 2012-11-12T17:00:59.600 に答える
0

シングルトン サービスを実装することにより、HA シングルトンで挿入をトリガーできます。以下に例を示します: http://www.jboss.org/jdf/quickstarts/jboss-as-quickstart/cluster-ha-singleton/

于 2012-11-10T12:08:07.650 に答える