Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: CLI_Andreas_Schmidt am 31.01.07 - 18:23:17

Titel: Thread oder nicht Thread
Beitrag von: CLI_Andreas_Schmidt am 31.01.07 - 18:23:17
Hi @Kaffeeanbauer,

ich hätte da mal eine Verständisfrage. Kann man eine Domino Connection über DIIOP auch ohne Thread aufrufen ? So sieht die Main jetzt aus.

public class gkstart {
    public static void main(String[] args) {
       
   
// --- Öffnen der Domino Verbindung
    DominoC dc = new DominoC();
    Thread nt = new Thread((Runnable)dc);
    nt.start();
   }
   
}

Meine Frage. Wenn ich jetzt über die Domino-Verbindung Daten hole und sie wo anders hin speichern möchte, dann laufen bei Threads doch die Programme parallel los oder ? Das heißt, bei Programme:
1. Daten Domino holen
2. Ort wo die Daten hin sollen.
starten beide und komme auch beide gleich an. Einen Sleep einzubauen, der dann auf den anderen Thread wartet ist doch nicht so gut in der Praxis oder ? Man weiss ja nicht im voraus, wie lange das "Daten holen" dauert.

Danke im voraus.

Titel: Re: Thread oder nicht Thread
Beitrag von: flaite am 31.01.07 - 19:13:52
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:
Code
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);



		}

	}

Titel: Re: Thread oder nicht Thread
Beitrag von: CLI_Andreas_Schmidt am 31.01.07 - 19:22:31
wunderbar. Habe es jetzt ohne Thread hinbekommen.

: )

Danke.
Titel: Re: Thread oder nicht Thread
Beitrag von: CLI_Andreas_Schmidt am 31.01.07 - 19:42:12
Und da habe ich noch eine Frage.

wenn ich zwei Klassen über die Main aufrufe. s. Beispiel. Wie übergebe ich jetzt die Daten aus der ersten Klasse an die zweite ?

Ich weiss, dass sind wohl Grundlagen, aber so langsam komme ich dahinter. Mir fehlt jetzt noch ein bißchen schnelles Verstehen.

: ) --> Will da jetzt mal tiefer rein. Mit dem Eclipse komme ich schon ganz gut klar.


class holen{
 
   public void get()
      {
      hol was, los tue es...;
      }
   }

class ausgabe{
 
   public void show()
      {
      System.out.println("start");
      }
   }
Titel: Re: Thread oder nicht Thread
Beitrag von: flaite am 31.01.07 - 20:54:49
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.

Code
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();
	}
	
}