S
silke bischof
Gast
Hallo zusammen,
derzeit arbeite ich an einem Programm und einem Modul, das für die Kommunikation über ein Netzwerk bzw. Sockets Daten austauschen soll.
Das Problem an dem ich derzeit hänge ist nicht einfach zuerklären, aber ich versuche es mal.
Das oben genannte Modul soll die Kommunikation über das Netzwerk steuern und eigenständig funktionen. Das tut es eigentlich auch schon.
In dem Modul habe ich zwei Warteschlangen angelegt, eine für die zu versendenden Nachrichten und eine für die empfangen Nachrichten die vom dem Modul eigenständig abgearbeitet werden. Das Funktioniert auch reibungslos.
Das Modul soll später mal als eigenständige jar - Datei fungieren.
Jetzt habe ich nur das Problem, das wenn ich eine Anwendung schreibe, die die jar Datei einbindet, kann ich ohne Probleme Nachrichten in die zusendende Wartschlange eintragen, die dann von dem Modul versendet werden.
Jedoch wenn jetzt Nachrichten empfangen werden, werden diese vom Modul richtig in die Empfangswarteschlange eingetragen, aber dann ist auch ende. Nun habe ich es derzeit so umgesetzt, das die Anwendung die Empfangswarteschlange pollend abarbeitet. Ist in meinen Augen aber eine schlechte Lösung.
Ich hatte mir das eigentlich mal so überlegt, das ich ein Interface schreibe, das zum Beispiel die Methode "verarbeiteNachricht" enthalt. Diese Interface kann ich in irgendeiner Klasse implementieren.
So, das habe ich auch getan, nur dann stehte ich vor dem Problem. Wie rufe ich die durch das Interface implementierte Methode "verarbeiteNachricht" auf, denn sie ist ja in einer ganz anderen Klasse, als die Warteschlange.
Als ich soweit war, hab ich mir überlegt, das ich einfach die Klasse in der Klasse mit der warteschlange registiere und dadruch eine Referenz auf die Klasse mit dem Interface habe und dadaruch die Methode "verarbeiteNachricht" aufrufen kann. Die Idee fand ich zu beginn meiner Überlegungen sehr gut, nur... wenn ich eine Referenz anlegen möchte, geschiet das ja normalerweise über
Nur möchte ich bzw. es geht auch nicht anders, wenn das Modul eine jar Datei wird, das ich die Klasse, die sich registieren möchte nicht kenne. Ich würde das gerne so lösen, das sich jede xbeliebige Klasse dort registieren kann. Nur weiß ich nicht, ob das geht oder ob das überhaput geht...
Deshalb mal die Frage in die Runde, ob mir vielleicht einer bei dem Problem helfen kann, ich bin für jeden Tipp sehr dankbar...
LG Silke[/b]
derzeit arbeite ich an einem Programm und einem Modul, das für die Kommunikation über ein Netzwerk bzw. Sockets Daten austauschen soll.
Das Problem an dem ich derzeit hänge ist nicht einfach zuerklären, aber ich versuche es mal.
Das oben genannte Modul soll die Kommunikation über das Netzwerk steuern und eigenständig funktionen. Das tut es eigentlich auch schon.
In dem Modul habe ich zwei Warteschlangen angelegt, eine für die zu versendenden Nachrichten und eine für die empfangen Nachrichten die vom dem Modul eigenständig abgearbeitet werden. Das Funktioniert auch reibungslos.
Das Modul soll später mal als eigenständige jar - Datei fungieren.
Jetzt habe ich nur das Problem, das wenn ich eine Anwendung schreibe, die die jar Datei einbindet, kann ich ohne Probleme Nachrichten in die zusendende Wartschlange eintragen, die dann von dem Modul versendet werden.
Jedoch wenn jetzt Nachrichten empfangen werden, werden diese vom Modul richtig in die Empfangswarteschlange eingetragen, aber dann ist auch ende. Nun habe ich es derzeit so umgesetzt, das die Anwendung die Empfangswarteschlange pollend abarbeitet. Ist in meinen Augen aber eine schlechte Lösung.
Ich hatte mir das eigentlich mal so überlegt, das ich ein Interface schreibe, das zum Beispiel die Methode "verarbeiteNachricht" enthalt. Diese Interface kann ich in irgendeiner Klasse implementieren.
So, das habe ich auch getan, nur dann stehte ich vor dem Problem. Wie rufe ich die durch das Interface implementierte Methode "verarbeiteNachricht" auf, denn sie ist ja in einer ganz anderen Klasse, als die Warteschlange.
Als ich soweit war, hab ich mir überlegt, das ich einfach die Klasse in der Klasse mit der warteschlange registiere und dadruch eine Referenz auf die Klasse mit dem Interface habe und dadaruch die Methode "verarbeiteNachricht" aufrufen kann. Die Idee fand ich zu beginn meiner Überlegungen sehr gut, nur... wenn ich eine Referenz anlegen möchte, geschiet das ja normalerweise über
Code:
private BeispielKlasse beispielKlasse = null;
public void setBeispielKlasse (BeispielKlasse beispielKlasse)
{
this.beispielKlasse = beispielKlasse;
}
Nur möchte ich bzw. es geht auch nicht anders, wenn das Modul eine jar Datei wird, das ich die Klasse, die sich registieren möchte nicht kenne. Ich würde das gerne so lösen, das sich jede xbeliebige Klasse dort registieren kann. Nur weiß ich nicht, ob das geht oder ob das überhaput geht...
Deshalb mal die Frage in die Runde, ob mir vielleicht einer bei dem Problem helfen kann, ich bin für jeden Tipp sehr dankbar...
LG Silke[/b]