Hallo
Ich hoffe der Titel ist wenigstens ein bisschen aussagekräftig
Also, ich habe folgende Situation:
Ich habe eine Server/Client Bibliothek. Der Server kann mehrere Verbindungen entgegennehmen und ankommende Daten verarbeiten. Jede Verbindung beinhaltet einen Incoming- und einen Outgoing-Processor wo die Daten verarbeitet/aufbereitet werden.
Für den Incoming- und Outgoing-Processor hab ich nun eine Abstrakte Klasse welche einige benötigte Methoden implementiert und auch einige abstrakte Methoden. Also z.B.:
Ich will nun die Möglichkeit haben, eine eigene Klasse zu erstellen (welche IncomingProcessor erweitert) und somit das Lesen der Daten mit der read()-Methode individuell zu gestalten.
Mein Problem ist nun, dass im Server bei jeder eingehenden Verbindung eine neue Instanz meiner individuell erstellten Klasse (welche IncomingProcessor erweitert) erstellt werden muss, da zum Beispiel die Information der Verbindung sich jedes mal ändert oder der IncomingProcessor auf Daten warten muss und die anderen Verbindungen nicht Blockieren sollte.
Dazu hab ich mir schon ein wenig das zeugs mit ClassLoader angeschaut. Ich kenn mich da nicht aus, aber es sieht so aus wie wenn dies ziehmlich kompliziert werden könnte.
Ein weiterer Ansatz ist irgendwie sowas:
Aber da meine Bibliothek ja nur die Abstrakte Klasse IncomingProcessor kennt und nicht die welche ich individuell erstellt habe gibt es da eine InstantiationException.
Kann mir jemand weiterhelfen oder hat Tipps? Sollte ich es am besten mit ClassLoader machen?
mfg
Ich hoffe der Titel ist wenigstens ein bisschen aussagekräftig
Also, ich habe folgende Situation:
Ich habe eine Server/Client Bibliothek. Der Server kann mehrere Verbindungen entgegennehmen und ankommende Daten verarbeiten. Jede Verbindung beinhaltet einen Incoming- und einen Outgoing-Processor wo die Daten verarbeitet/aufbereitet werden.
Für den Incoming- und Outgoing-Processor hab ich nun eine Abstrakte Klasse welche einige benötigte Methoden implementiert und auch einige abstrakte Methoden. Also z.B.:
Java:
public abstract class IncomingProcessor {
public abstract read(InputStream in);
public byte[] objectToByteArray(Object o) {
...
}
}
Mein Problem ist nun, dass im Server bei jeder eingehenden Verbindung eine neue Instanz meiner individuell erstellten Klasse (welche IncomingProcessor erweitert) erstellt werden muss, da zum Beispiel die Information der Verbindung sich jedes mal ändert oder der IncomingProcessor auf Daten warten muss und die anderen Verbindungen nicht Blockieren sollte.
Dazu hab ich mir schon ein wenig das zeugs mit ClassLoader angeschaut. Ich kenn mich da nicht aus, aber es sieht so aus wie wenn dies ziehmlich kompliziert werden könnte.
Ein weiterer Ansatz ist irgendwie sowas:
Java:
Class<? extends IncomingProcessor> c = incoming.getClass();
IndividualIncomingProcessor in = c.newInstance();
Kann mir jemand weiterhelfen oder hat Tipps? Sollte ich es am besten mit ClassLoader machen?
mfg