Wie geht man mit Konstanten in EJB um?

Status
Nicht offen für weitere Antworten.

j-guy

Neues Mitglied
Hallo,

ich bin ein EJB-Neuling, habe mich schon etwas an programmieren gemacht, einiges läuft auch, aber nun habe ich ein Problem.

Wie geht man mit Konstanten in EJB um?
Da es ja verboten ist auf statische Variablen zuzugreifen, passt das nicht in mein Weltbild ;)


Nein mal im Erstn, wie geht das?
Ich war gewohnt Konstanten als static member einzubinden.
Im Speziellen interessiert mich, wie ich Properties aus einer xml-Datei in meinen EJB-Klassen nutzen kann.

Bisher habe ich es so gemacht ...
Es gibt eine Konstantendatei ('Constants'). Diese liest initial das Propertyfile aus und stellt die benötigten Werte allen anderen Klassen zur Verfügung.

Sagen wir mal die sieht so (oder so ähnlich aus):
Code:
public class Props
  
  public static String FOO = null;

  static
  {
    Properties props = new Properties();		
    try
    {
      props.loadFromXML(CConstants.class.getClass().getClassLoader().getResourceAsStream("propertyFile.xml"));
      FOO = props.getProperty("FOO");
    }
    catch(Exception e){...}
  }

}



Und diese Klasse nutzt nun die Konstante
Code:
public class MyClass
{
  ...
  public void doSomething()
  {
    ...
    String s = Props.FOO + " BAR";
    ...
  }
  ...
}


Unglücklicherweise ist es EJBs aber verboten statische Dinge zu verwenden.
Mir leuchtet zwar ein wieso, aber ich weiß nicht, wie ich dann meine Konstanten nutzen kann ... ?

Und jedesmal, wenn ein EJB zum Leben erweckt wird, die XML-Datei erneut auszulesen wäre schon ziemlicher Schwachsinn.
Aber wie ist hier der Königsweg?
Wie machen das andere EJB-Programmieren?
Oder wo gibt es was zu lesen über EJB best practices ?

Danke für die Hilfe
 
G

Gast

Gast
Wofür benötigst du denn die Properties? Gib mal ein paar Beispiele, vielleicht lässt sich ja ein anderer weg finden...
Und wenns gar nicht anders geht, erstellst du halt eine Stateless Session Bean, diese hält denn alle Daten bereit, muss denn allerdings bei Aufruf noch einmal nachgucken, ob sich die Datei nicht schon geändert hat.
Denn Stateless Session Beans, wie du sicherlich weist, werden nicht die ganze Zeit über an einen User gebunden, sondern nur so lange wie der Methodenaufruf andauert.
 
G

Guest

Gast
Es ist übrigens nicht verboten auf statische Member in EJBs zuzugreifen! Es wird nur zum Problem, wenn sich diese statischen Member verändern. Diese Member sind dann bei Veränderung in verschiedenen JVM unterschiedlich. Wenn Du nun Deine EJB im Cluster einsetzt, bekommst Du ein Problem.

Wie gesagt, das betrifft nur statische Member, die sich verändern, d.h auf Konstanten kannst Du zugreifen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben