JBoss: Frage zur Datasource in der ...-ds.xml

Hannes23

Bekanntes Mitglied
Hallo zusammen,

in meinem JBoss-Deployverzeichnis befindet sich eine postgres-ds.xml, in der eine datasources angegeben habe - soweit funktioniert alles gut. Wie aber kann ich ein weiteres Projekt über diesen JBoss laufen lassen, das eine andere Postgres-DB benutzt? Lege ich in meiner postgres-ds.xml einfach eine weitere Datasource an oder muss ich eine neue "postgres2-ds.xml" anlegen? Und wie teile ich meinem Java-Programm eigentlich mit, welches *.xml es für die Persistence-Unit verwenden soll? Sucht es automatisch in allen *.xml im deploy-Verzeichnis nach dem Namen der angegebenen Persistence Unit?

So viele Fragen...

Viele Grüße, Hannes
 
Wie aber kann ich ein weiteres Projekt über diesen JBoss laufen lassen, das eine andere Postgres-DB benutzt? Lege ich in meiner postgres-ds.xml einfach eine weitere Datasource an oder muss ich eine neue "postgres2-ds.xml" anlegen?
In der Datasource-Datei definierst Du ja einen JNDI-Namen, dieser muß unterschiedlich sein. Wie Du die Datei benennst, ist fast egal, *-ds.xml sollte es aber sein.

Und wie teile ich meinem Java-Programm eigentlich mit, welches *.xml es für die Persistence-Unit verwenden soll?
Im Programm wird die Datasource über den JNDI-Namen angesprochen, z.B. durch context.lookup("MeineDB") ...

Sucht es automatisch in allen *.xml im deploy-Verzeichnis nach dem Namen der angegebenen Persistence Unit?
Denke ich eher nicht. Irgendwo mußt Du Deiner Persistenzschicht den JNDI-Namen unterjubeln.
 
Hallo FastJack,

danke für Deine Antwort!! Ich hab es in meinem Programm so gemacht:

Bei der Definition des EntityManagers gebe ich die PersistenceUnit an (Hier: MyPersistenceUnit):

Java:
@PersistenceContext(unitName="MyPersistenceUnit")
public EntityManager em;


In der persistence.xml gebe ich dann zur MyPersistenceUnit die jeweilige jta-data-source an (hier: java:/PostgresDataSource)

Java:
<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/ persistence_1_0.xsd" version="1.0">

        <persistence-unit name="MyPersistenceUnit" >
                <jta-data-source>java:/PostgresDataSource</jta-data-source>
                <properties>
                        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
                        <property name="hibernate.hbm2ddl.auto" value="update"/>
                </properties>
        </persistence-unit>
</persistence>

...und in der postgres-ds.xml (deploy-Verzeichnis) gebe ich dann zum jndi-namen (hier: PostgresDataSource) die jeweiligen Zugangsdaten zur Datenbank an:

Java:
<datasources>
  <local-tx-datasource>
    <jndi-name>PostgresDS</jndi-name>
    <connection-url>jdbc:postgresql://localhost:5432/Datenbank</connection-url>
    <driver-class>org.postgresql.Driver</driver-class>
    <user-name>user</user-name>
    <password>passwort</password>
   
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>PostgreSQL 7.2</type-mapping>
      </metadata>
  </local-tx-datasource>

Soweit funktioniert das wie gesagt. Wobei mich das eigentlich wundert, da ich die postgres-ds.xml und ihren Pfand nie irgendwo angegeben habe....

Um eine zweite Datenbankverbindung aufzubauen (also ein zweites Java-Programm mit Postgres-Zugriff im gleichen JBoss Deploy-Verzeichnis zu haben) muss ich dann einfach in der gleichen postgres-ds.xml den Bereich

Java:
 <local-tx-datasource>
...
 </local-tx-datasource>

nochmal mit einem weiteren jndi-namen anlegen? Oder macht man dann eher ein neues xxx-ds.xml?

Viele Grüße, Hannes
 
Soweit funktioniert das wie gesagt. Wobei mich das eigentlich wundert, da ich die postgres-ds.xml und ihren Pfand nie irgendwo angegeben habe....
Der jBoss lädt diese Dateien im laufenden Betrieb und stellt sie durch JNDI bereit.

nochmal mit einem weiteren jndi-namen anlegen? Oder macht man dann eher ein neues xxx-ds.xml?
Beides sollte gehen.

Wie die Persistence-XML bei Dir mit der Datasource verbunden wird, kann ich Dir leider nicht sagen.
 
Hallo FastJack,

danke für die Infos! Ich hab es jetzt auch so gemacht, dass ich zwei JNDIS in die xx-ds.xml aufgenommen habe und es klappt einwandfrei...Thema erledigt 🙂

Vielen Dank und viele Grüße,

Hannes
 

Neue Themen


Zurück
Oben