Hi,
Corba Sessions brauchen keinen eigenen Thread? Bin mir nicht 100% sicher.
Zumindest funktioniert das bei mir so.
Bei Local immer einfacher mit NotesThread.sinitThread(), stermThread() arbeiten.
Threading bringt eine Komplexität in diese ganze Geschichte, die du vielleicht gar nicht willst.
Die Connection erstellst du mit der Klasse NotesFactory.
Das ist hier eine Verbindungsmethode von mir, die mit beiden läuft:
public ReportUser doAction() {
try {
if (getProp("useIIOP").toString().equals("true")) {
isCorba = true;
} else {
isCorba = false;
}
if (isCorba) {
nSession = NotesFactory.createSession(server + ":" + iiopPort);
} else {
NotesThread.sinitThread();
nSession = NotesFactory.createSession();
}
ReportUser reportUser = doSpecificAction(nSession);
nSession.recycle();
if (!isCorba) {
NotesThread.stermThread();
}
return reportUser;
} catch (Throwable t) {
t.printStackTrace();
if (nSession != null)
try {
nSession.recycle();
} catch (NotesException e) {
// catch not needed here!
}
nSession = null;
throw new RuntimeException(t);
}
}
z.B. über Injektion. Hier wird ein Objekt der Instanz Holen an ein Objekt der Instanz Ausgabe übergeben. Erst über den Konstruktor. Dann über setter.
public class Holen {
private String wert = "erstes Print";
/**
* @param args
*/
public static void main(String[] args) {
Holen holen = new Holen();
Ausgabe ausgabe = new Ausgabe(holen);
System.out.println(ausgabe.show());
holen.setWert("zweites Print");
ausgabe.setHolen(holen);
System.out.println(ausgabe.show());
}
public void setWert(String wert) {
this.wert = wert;
}
public String getWert() {
return wert;
}
}
class Ausgabe {
private Holen holen;
Ausgabe (Holen holen) {
this.holen = holen;
}
public void setHolen(Holen holen) {
this.holen = holen;
}
public String show () {
return holen.getWert();
}
}