2016-06-20 4 views
0

Ich muss ein EJB schreiben, das auf einem WebLogic 12c-Cluster gehostet wird, der zwei Server enthält. Das Programm muss Single-Thread sein, daher dürfen beide Server diesen Code nicht gleichzeitig ausführen.So wird ein Thread in einer WebLogic 12c-Clusterumgebung erstellt

Gibt es eine andere Möglichkeit als das Schreiben eines benutzerdefinierten Tokensystems, um mein EJB als single-threaded für den gesamten Cluster zu konfigurieren?

Edit: hier ist der Pseudo-Code von dem, was ich im Sinn hatte, als ich „custom Token-System“ genannt:

public void myEJBMethod() { 
    String tokenUUID = getTokenFromDB("IMSToken"); 
    if (tokenUUID != "TokenNotAvailable") { 
     doMyEJBStuff(); 
     releaseToken("IMSToken", tokenUUID); 
    } 
} 

private String getTokenFromDB(String tokenName) { 
    int tokenQty=0; 
    String myThreadUUID = java.util.UUID.randomUUID().toString(); 

    INSERT INTO TOKEN_TRACKER (TOKEN_NAME, THREAD_UUID, CREATED_DATE) VALUE ({tokenName}, {myThreadUUID}, new Date()); 
    COMMIT; 
    tokenQty= SELECT COUNT(*) FROM TOKEN_TRACKER WHERE TOKEN_NAME = {tokenName} AND THREAD_UUID NOT LIKE {myThreadUUID}; 
    if (tokenQty>0) { 
     logger.trace("Token not available"); 
     releaseToken(tokenName, myThreadUUID); 
     return "TokenNotAvailable"; 
    } 
    else {   
     return myThreadUUID;  
    } 
} 

private void releaseToken(String tokenName, String tokenUIID) { 
    DELETE FROM TOKEN_TRACKER WHERE THREAD_UUID = {myThreadUUID}; 
    COMMIT; 
} 
+5

WebLogic Server verfügt über eine Singleton-Service-Funktion solche Anwendungsfälle zu erreichen diesen Beitrag zu lesen: https://developsimpler.blogspot.fr/2012/03/weblogic-clusters-and-singleton-service.html –

+0

Danke für Ihre Eingabe, es hat einen großen Wert. Aber ich zögere immer noch zwischen dieser Option und der benutzerdefinierten Token-Option. Ich habe Details in der Frage zum benutzerdefinierten Token hinzugefügt. Ich finde es einfacher (nur 3 Methoden). Es fügt jedoch einen Punkt des Scheiterns hinzu, denn wenn ich aus irgendeinem Grund den Token nicht freigeben kann, wird die App gesperrt und erfordert einen manuellen Eingriff. – Olivier

Antwort

Verwandte Themen