# JBoss InitialContext problem



## xerberuz (28. Okt 2009)

Ich versuche zur Zeit mit JBoss 4.2.2.GA eine Datenbankanbindung für meine Applikation zu realisieren. Mien Ziel ist es den JPA Entity Manager über JNDI zu bekommen.

Momentan bin ich soweit, dass ein JSP mit dem folgenden Inhalt


```
InitialContext ctx = new InitialContext();
DatabaseMetaData dm = null;
DataSource ds = (DataSource) = ctx.lookup("java:/DerbyDS");
```

funktioniert

Allerdings bekomme ich innerhalb meiner Appliaktion folgende Fehler:

1.: wenn ich folgenden code schnipsel verwende:


```
Context ctx = new InitialContext();
ctx.lookup("java:/DerbyDS");
```

führt zu diesem Fehler: ERROR [STDERR] javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out]

2.: wenn ich diesen code schnipsel verwende:


```
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "jnp://localhost:1099");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
final Context initialContext = new InitialContext(env);
initialContext.lookup("java:/DerbyDS");
```

fürht das zu diesem Fehler: 09:59:29,508 ERROR [STDERR] DerbyDS not bound 


Irgendetwas funktioniert also mit dee JNDI Lookup nicht richtig. Hat jemand eine Idee woran das liegen könnte?


----------



## dumpFunk (28. Okt 2009)

Hallo,

um JPA benutzen zu können reicht es nicht eine Datenquelle (*-ds.xml) zu definieren und dann mit
JNDI diese zu holen.

Statt dessen musst du in deiner Applikation einen Persistenz-Kontext konfigurieren (persistece.xml).
Anschließend kannst du mittels dependency injection einen EntityManager holen und benutzen.

1.2.1.*The persistence.xml file


habe leider keine Zeit um genauer zu werden..

viel Erfolg


----------



## xerberuz (28. Okt 2009)

Ich hab bereits eine persistence.xml angelegt. Die ganze Applikation aussenrum läuft Standalone auch wunderbar. Allerdings macht im JBoss der JNDI Lookup egal welcher Art Probleme. Dependency Injection wäre auch schön, funktioniert aber ebenfalls nicht. Der Code um an den EntityManager zu kommen ist auch fertig, es scheitert alles an dem nicht funktionierenden JNDI Lookup.

Ich verstehe nicht warum die JSP Seite die DataSource über JNDI bekommt, meine Applikation aber nicht.


----------



## FArt (4. Nov 2009)

Annahme: deine Applikation ist keine Enterpriseapplikation (EAR) sonder eine eigenständige Applikation.

Dein Vorhaben kann nicht funktionieren. Datasources werden im Kontext des Applikationsservers gebunden (java:/) und stehen auch nur dort zur Verfügung! Alles andere ist auch nicht sinnvoll!


----------



## velaluka (4. Nov 2009)

Hallo,
Sinnvoll oder nicht. Du musst deinen Datasource im JBoss passend konfigurieren. 
Habe vor ein paar Woche das selbe mit einem OC4J A.Server umgesetzt. 


> @FArt Der Grund war das ich nicht ständig eine neue Verbindung zur DB aufbauen wollte sondern mir lieber eine aus einem DS Pool geholt habe. War wesentlich schneller (Create Schema mit Hibernate JPA war oft notwendig


Der JBoss-DS hat irgendwas in der Art:
[XML] <use-java-context>false</use-java-context>..[/XML]
Eventuell hilft es ja...
Ciao velaluka


----------



## FArt (4. Nov 2009)

velaluka hat gesagt.:


> Der JBoss-DS hat irgendwas in der Art:
> [XML] <use-java-context>false</use-java-context>..[/XML]
> Eventuell hilft es ja...



Ich denke es hilft nicht. Die Sinnhaftigkeit ist sehr fragwürdig. Mein Kommentar dazu: nur weil es technisch möglich ist, ist es noch lange keine Option.

Was sagt JBoss dazu:


> Note: JBoss does not recommend using this feature on a production environment. It requires accessing a connection pool remotely and this is an anti-pattern as connections are not serializable. Besides, transaction propagation is not supported and it could lead to connection leaks if the remote clients are unreliable (i.e crashes, network failure). If you do need to access a datasource remotely, JBoss recommends accessing it via a remote session bean facade.



ConfigDataSources - JBoss Community

Was wird das Ergebnis der Diskussion sein: der Themenstarter wird genau dieses Feature aufgreifen mit den Worten "super, genau das habe ich gesucht"... ( Zusatz: denn das andere ist mir zu umständlich und ich weiß eh nicht was das Gedöns soll)


----------

