Frage

Ich habe diese einfache Java -Funktion, die mit Sockets eine IP anhört:

void main()

(...)


Socket client = new Socket("192.168.9.2",63333);

DataOutputStream out=new DataOutputStream(client.getOutputStream());
DataInputStream in=new DataInputStream(client.getInputStream()); 

while (userInput == 1) {
      System.out.println(in.readLine());
}

(...)

Und es funktioniert einwandfrei, aber das Problem ist, dass ich es in 7,0 installieren und die Hauptfunktion einmal ausführen muss, um den Prozess zu starten.

Wie kann ich das machen, in war 7,0?

Grüße,
Pedro

War es hilfreich?

Lösung

Gemäß den Empfehlungen von Java EE sollten Sie es vermeiden, Sockets in einem Behälter zu öffnen. Wenn Sie sowieso möchten, benötigen Sie eine Möglichkeit, dies zu starten, Sie haben mehrere Optionen.

Erstellen Sie eine EJB -Sitzungsbean mit einer Methode, die Sie remote (RMI ...) aufrufen können, und legen Sie das Zeug in diese Methode ein.

Wenn Sie automatisch mit dem WAR beginnen möchten, können Sie den EJB -Timer verwenden, um die Ausführung der Aufgabe zu planen.

Sie können auch ein Servlet erstellen, das nach dem Aufrufen dieses Zeug durchführt.

Sie sollten in Betracht ziehen, einen Thread zu starten, um den Sockel zu verwalten, aber der Faden sollte in der Lage sein, alleine anzuhalten, wenn eine Bedingung wie die erreicht while (userInput == 1).

Dies klingt seltsam in einem Anwendungsserver, wie es war, aber Sie können das tun.

Wir machen einige ähnliche Aufgaben in SAP XI, indem wir eine Sitzungs -EJB erstellen, die mehrere Threads zum Verwalten von Client -Sockets startet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top