PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JSP / Tomcat5 - Wie enumeriert man die verfügbaren JNDI-DataSources?


MeLLe
2006-04-18, 12:24:35
Guten Tag zusammen,

leider erwies sich Google heute nicht als mein Freund, denn es konnte mir keine Antwort auf meine Frage liefern. Deswegen stelle ich die mal hier im Forum - vielleicht seid ihr ja besser als Google! =)

Zum Thema: wie die Überschrift schon andeutet nutze ich JSP mit der JSTL auf einem Tomcat 5.5 - Container. Soweit läuft auch alles wunderbar.
Nun benötige ich in einer Webapp die Möglichkeit, dem User die Wahl der Datenquelle zu erlauben. Und statt einer hard-coded Combobox wollte ich dynamisch die aktuell verfügbaren JNDI-DataSources enumerieren und hübsch aufbereiten. Leider habe ich noch keinen Anhaltspunkt gefunden, wie man so etwas angehen kann. Gibt es da JSP bzw JSTL-Bordmittel? Oder einen anderen Weg via Java? Dann könnte ich ja im Zweifelsfall nen Custom Tag drauf basteln.

Besten Dank für Eure Hilfe schonmal! :)

MeLLe
2006-04-20, 15:58:00
Hat keiner eine Idee? :(

Abnaxos
2006-04-20, 16:21:34
Ich habe sowas schonmal für einen Watchdog, der regelmässig sämtliche Datenbanken apingen sollte, gemacht. Das ist allerdings ein Weilchen her, ich kann dir daher keine fertige und funktionierende Lösung geben. Aber ein paar Pointers, wo man ansetzen könnte:

javax.naming.Context kennt eine Methode list() => alle Namen in einem Kontext auflisten, zusammen mit der Klasse des zugehörigen Objekts. Sub-Kontexte werden von irgend einer Klasse sein, die Context implementiert, diese kannst du auflösen und rekursiv weiter durchsuchen. DataSources werden von irgend einer Klasse sein, die javax.sql.DataSource implementiert => Du hast eine DataSource gefunden.

Aufpassen musst du dann noch auf Links, besonders auch, dass du da nicht in eine endlose Rekursion gerätst, falls du den Links folgen willst. IIRC war das ganze sowieso ein ziemlicher Hack, mit Workarounds und allem drum und dran. Aber schlussendlich hat es funktioniert. :biggrin:

MeLLe
2006-04-22, 09:23:09
javax.naming.Context kennt eine Methode list() => alle Namen in einem Kontext auflisten, zusammen mit der Klasse des zugehörigen Objekts. Sub-Kontexte werden von irgend einer Klasse sein, die Context implementiert, diese kannst du auflösen und rekursiv weiter durchsuchen. DataSources werden von irgend einer Klasse sein, die javax.sql.DataSource implementiert => Du hast eine DataSource gefunden.
Das klingt gut - tausend Dank! Werd mal am Montag in die Richtung forschen =)