Piotr Nowicki

Piotr Nowicki JFB Systems,
właściciel

Temat: połączenie z remote ejb oraz z bazą danych na glassfish...

Na JBoss 5.1 plik konfiguracyjny do połączenia z bazą danych:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>PSQLDB-SKLEPAV</jndi-name>
<connection-url>jdbc:postgresql://localhost:5432/sklepav</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>postgres</user-name>
<password>postgres</password>
<!-- the minimum size of the connection pool -->
<min-pool-size>1</min-pool-size>
<!-- The maximum connections in a pool/sub-pool -->
<max-pool-size>4</max-pool-size>
</local-tx-datasource>
</datasources>

umieszczam w katalogu JBOSS_HOME\server\default\deploy, w tym samym katalogu umieszczam EAR z utworzonymi encjami, beanami i interfejsami.
Utworzyłem klasę klienta i poprzez InitialContext łączę się z serwerem wszystko działa ok:

context = new InitialContext();
context.addToEnvironment("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
context.addToEnvironment("java.naming.factory.url.pkgs",
"org.jboss.naming:org.jnp.interfaces");
context.addToEnvironment("java.naming.provider.url",
"127.0.0.1:1099");

Gdzie trzeba wrzucić plik konfiguracyjny do bazy danych?
Jak wrzucam w miejsce gdzie eclpise umieszcza ear: C:\glassfishv3\glassfish\domains\domain1\eclipseApps to w logach serwera mam:

[#|2009-12-09T21:50:32.921+0100|SEVERE|glassfish|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=16;_ThreadName=Thread-1;|Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
java.lang.RuntimeException: javax.naming.NamingException: Lookup failed for 'java:/PSQLDB-SKLEPAV' in SerialContext [Root exception is javax.naming.NamingException: Invocation exception: Got null ComponentInvocation ]
at org.glassfish.persistence.jpa.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:111)
at org.glassfish.persistence.jpa.JPAApplication.loadPU(JPAApplication.java:213)
at org.glassfish.persistence.jpa.JPAApplication.loadAllPus(JPAApplication.java:194)
at org.glassfish.persistence.jpa.JPAApplication.<init>(JPAApplication.java:114)
at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:121)
at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:579)

Jak zainicjalizować InitialContext w klasie klienta?
Sebastian Kolski

Sebastian Kolski programista/DBA

Temat: połączenie z remote ejb oraz z bazą danych na glassfish...

W Glassfish'u properties'y do ustawień InitialContext klienta są w jndi.properties które jest pakowane do appserv-rt.jar. Jeśli serwer masz na tej samej maszynie co klient to nic nie musisz robić (z wyjątkiem dodania appserv-rt.jar do classpatha). Jeśli masz serwer na innej maszynie to trzeba ustawić host i ewentualnie port
Glassfish EJB FAQ

Konfigurację podłączenia do bazy wrzucasz do:
application.xml, application-client.xml, web.xml, lub ejb-jar.xml, albo używasz annotacji

Tutaj masz przykład, łącznie ze źródłami.

Następna dyskusja:

EJB 3.0 + Glassfish v3 + JP...




Wyślij zaproszenie do