2016-10-24 3 views
0

Ich habe zwei Wildfly-Server in einer Domäne konfiguriert, und ich muss einen Singleton, der mit HA läuft. Ich brauche es nur auf einem Server laufen, und wenn dieser Server ausfällt, sollte es auf dem Slave-Server gestartet werden. Ich verwende die default-Konfiguration und ich habe nur die "/META-INF/singleton-deployment.xml" in meinem WAR erstellt. Wenn ich die WAR bereitstellen, startet es auf beiden Servern! Nicht nur in einem. Was fehlt? Muss ich etwas in domain.xml bearbeiten?Wildfly 10.1.0 Singleton funktioniert nicht

nur Mein Singletons einen Text in die Protokolldatei und Konsole, nur zum Testen schreibt:

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

Paket haben nicht vergessen? – igilfanov

Antwort

2

in https://stackoverflow.com/a/27956003/653069

Wie pro EJB 3.1-Spezifikation beantwortet wurde, die @Singleton ist nur per-JVM und nicht pro Cluster.

In Fällen, in denen der Container über viele virtuelle Maschinen verteilt ist, hat jede Anwendung für jede JVM eine Bean-Instanz des Singleton.

Trotzdem können Sie JBoss spezifische Weise verwenden. Werfen Sie einen Blick in die cluster-ha-singleton quickstart - EAP 7.0, die auch auf WildFly 10.x funktionieren sollte.

Verwandte Themen