Hi,
ich hab da mal ein Problem mit redundanten Servern. Meine Anwendung läuft auf zwei Servern, verbunden durch einen Loadbalancer, die beide auf dieselbe Datenbank zugreifen.
Seit ich endlich die Datenbanken Servermanaged hin bekommen habe, habe ich ein Problem identifiziert.
Wenn ich auf der Oberfläche in den Optionen etwas umstelle, dann ist das auf dem System, auf dem die Umstellung passiert ist, sofort aktualisiert, auf dem anderen System erst nachdem dieses neu gestartet wurde.
Die Klasse, mit der geändert und gelesen wird:
Kann das etwas mit dem ApplicationScoped zu tun haben. Ich dachte, das würde lediglich dazu führen, dass die Bean in der gesamten Application zur Verfügung steht, und nicht, dass Results bis zum St. Nimmerleinstag gebuffert werden.
Das flush hatte ich deswegen hinzugefügt, aber musste leider feststellen, dass das nicht die Lösung war.
ich hab da mal ein Problem mit redundanten Servern. Meine Anwendung läuft auf zwei Servern, verbunden durch einen Loadbalancer, die beide auf dieselbe Datenbank zugreifen.
Seit ich endlich die Datenbanken Servermanaged hin bekommen habe, habe ich ein Problem identifiziert.
Wenn ich auf der Oberfläche in den Optionen etwas umstelle, dann ist das auf dem System, auf dem die Umstellung passiert ist, sofort aktualisiert, auf dem anderen System erst nachdem dieses neu gestartet wurde.
Die Klasse, mit der geändert und gelesen wird:
Java:
import java.util.List;
import javax.enterprise.context.ApplicationScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.transaction.Transactional;
import main.java.persistence.entities.AtcParameter;
@ApplicationScoped
public class AtcParameterDbInterface {
@PersistenceContext(unitName = "atcdb")
private EntityManager em;
@Transactional
public void changeParameter(AtcParameter par) {
em.merge(par);
em.flush();
}
public List<AtcParameter> loadMiscParameterTable() {
TypedQuery<AtcParameter> query = em.createNamedQuery("AtcParameter.miscParameter", AtcParameter.class);
List<AtcParameter> resultList = query.getResultList();
return resultList;
}
}
Das flush hatte ich deswegen hinzugefügt, aber musste leider feststellen, dass das nicht die Lösung war.