# InitialContext lookup gibt NULL zurück



## Phobnator (6. Nov 2008)

Hallo liebe Community,

ich studiere Informatik und belege momentan einen Kurs "Internet Programmierung".
Vorgegeben ist ein kleiner Webshop (Java EE Anwendung, MySQL, Jboss), in der eine Datenbank Suchkomponente bei mir nicht läuft, bei den anderen Teilnehmern aber schon. Mittlerweile konnte ich auch den Fehler durch Debugging ausfindig machen:


```
public class Search implements ISearch {

	public ArrayList<ISearchResultElement> searchForBooks(String seachpattern) {

        ArrayList<ISearchResultElement> searchResult = null;
        DataSource ds = null;
        Connection con = null;        
                
        // Verbindung zur Datenquelle herstellen
    	try	{    		
    		Context initCtx = new InitialContext(DefaultConfig.JBOSS_ENV);

    		ds = (DataSource)initCtx.lookup("java:jdbc/MySqlIPShopXDS");
    		
    	   	if (ds != null) {
                       ...
```
Hier der Inhalt der DefaultConfig.JBOSS_ENV:

```
public static Hashtable<String, String> JBOSS_ENV;
	static {
		JBOSS_ENV = new Hashtable<String, String>();
		JBOSS_ENV.put(Context.INITIAL_CONTEXT_FACTORY,
				"org.jnp.interfaces.NamingContextFactory");
		JBOSS_ENV.put(Context.PROVIDER_URL, "localhost:1099");
      }
```


Die DataSource ds Variable ist auch nach dem lookup NULL.
Das komische daran ist, dass die Methode lookup entweder ein Object zurückgeben soll, oder eine Exception wirft.

Per Google habe ich schon ähnliche Probleme gesehen, leider waren die Lösungsansätze nicht zielführend.

Ich kann auf jeden Fall sicher sagen, dass "java:jdbc/MySqlIPShopXDS" im JNDI eingetragen ist. Wenn ich den String auf einen falschen Wert ändere bekomme ich eine Exception.

Ich habe auch meine Firewall und Virenscanner ausgeschalten und kann per Kommandozeilenaufruf "telnet 127.0.0.1 1099" ausführen.

Die MySQL Datenbank läuft auf Standard Port und die Installationsanweisungen der Shop Installation habe ich alle mehrfach geprüft...

Ich verwende Jboss 4.2.3 GA, JDK-6, MyEclipse, MySQL, Windows XP Pro.

Kann es eventuell sein, dass mir eine bestimmte Bibliothek fehlt ? Was mich nämlich schon verwundert hat, war dass ich mit meiner MyEclipse Version einige Bibliotheken manuell hinzufügen musste, was die Eclipse User nicht machen musste...

Bin echt verzweifelt, Danke schon im Voraus für die Hilfe.

Grüße,

Phobe


----------



## FArt (6. Nov 2008)

Soll ein (Remote)Client einen Lookup auf die Datasource machen? Das geht natürlich nicht, denn die ist im Java-Namespace eingetragen. Von Remote kann man auch nicht auf eine Datasource zugreifen, es ist also keine Lösung eine Datasource im globalen Namespace einzuhängen ;-)

Auserdem ist die korreke Angabe für den Lookup java:/bla/blubb, könnte aber sein, dass das automatisch so interpretiert wird.

Wenn der Lookup im JBoss durchgeführt wird, dann musst du keine JNDI Properties übergeben, sondern einfach einen neuen InitalContext holen, kannst dann aber natürlich auf den Java-Namespace zugreifen.


----------



## Phobnator (7. Nov 2008)

Hallo, danke schonmal für deine Antwort.

der lookup wird nur auf dem Server ausgeführt.

Die Angaben müssten eigentlich alle korrekt sein, da sie ja schließlich auf den Laptops meiner Kollegen problemlos laufen. Ich habe am Code selber nichts verändert, dewegen wundert es mich ja dass es bei mir nicht läuft.
Es ist wahrscheinlich irgendeine Kleinigkeit... wie so oft^^

Ich werde es heute Abend mal auf meinem Desktop Rechner daheim testen, falls es dort läuft liegt es an meinem Laptop.


----------

