2016-10-24 11 views
0

ドメイン内に2つのWildflyサーバが設定されており、HAで動作するシングルトンを作成する必要があります。私はそれが1つのサーバーでのみ実行する必要があり、そのサーバーが失敗した場合はスレーブサーバーで起動する必要があります。 私はdefult設定を使用しています。私はWAR内に "/META-INF/singleton-deployment.xml"を作成しました。 WARをデプロイすると、両方のサーバーで起動します。 1つだけではありません。何が欠けている? domain.xmlで何かを編集する必要がありますか?Wildfly 10.1.0シングルトンが動作しない

私のシングルトンが唯一のちょうどテストのために、ログファイルとコンソールにテキストを書き込みます。

import java.net.InetAddress; 
import java.net.UnknownHostException; 
import javax.ejb.ConcurrencyManagement; 
import javax.ejb.ConcurrencyManagementType; 
import javax.ejb.Schedule; 
import javax.ejb.Singleton; 
import org.apache.logging.log4j.Level; 
import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) 
@Singleton 
public class TesteAPP { 

    final Logger logger = LogManager.getLogger(TesteAPP.class); 

    @Schedule(second = "*/1", minute = "*", hour = "*", persistent = false) 
public void executaTarefa() { 
    try { 
     logger.log(Level.INFO, "Tarefa executada com sucesso! Nome da   máquina: {} Endereço da máquina: {}", 
       InetAddress.getLocalHost().getHostName(), 
       InetAddress.getLocalHost().getHostAddress()); 
     System.out.println(String.format("Tarefa executada com sucesso! Nome da máquina: %s Endereço da máquina: %s", 
       InetAddress.getLocalHost().getHostName(), 
       InetAddress.getLocalHost().getHostAddress())); 
    } catch (UnknownHostException e) { 
     logger.log(Level.ALL, "Tarefa executada com sucesso!"); 
     System.out.println(String.format("Tarefa executada com sucesso!")); 
    } 
} 


} 
+0

パッケージはお忘れですか? – igilfanov

答えて

2

@SingletonのみごとのJVMで、EJB 3.1仕様を1としてhttps://stackoverflow.com/a/27956003/653069

に答えたとクラスター単位ではありません。

コンテナが多数の仮想マシンに分散されている場合、各アプリケーションは各JVMに対して1つのSingletonのBeanインスタンスを持ちます。

ただし、JBoss固有の方法を使用できます。 cluster-ha-singleton quickstart - EAP 7.0を調べてください。これもWildFly 10.xでも動作します。

関連する問題