Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 24 di 68
  • livello ninja
Indice lezioni

Configurazione di un datasource su JBoss Wildfly

Analizziamo la procedura completa per configurare di un datasource su JBoss Wildfly.
Analizziamo la procedura completa per configurare di un datasource su JBoss Wildfly.
Link copiato negli appunti

Siamo ora pronti per realizzare codice che interagisca con l'EntityManager, una classe attraverso la quale operiamo verso il database. Per poter operare con
l'EntityManager abbiamo però bisogno di realizzare il database hotel su Postgres, configurare JBoss Wildfly affinchè
si colleghi al database e, infine, collegare JBoss Developer Studio, e in particolare il nostro JPA, al database hotel.

Al termine avremo un ambiente che consentirà di sperimentare il codice. Iniziamo quindi con il collegarci, attraverso PgAdmin, al server Postgres della nostra macchina.
Seguendo i diagrammi del capitolo precedente, possiamo realizzare le tabelle nel giusto ordine con le sequence e i vincoli
di primary key e foreign key.

Figura 1. Database hotel
Database hotel

Abbiamo omesso la tabella Hotel, presente nello schema originario, in quanto non aggiunge nulla di nuovo da un punto di vista concettuale, è possibile in ogni caso aggiungerla come esercizio.

Con il database funzionante il successivo step e fare in modo che JBoss Wildfly si colleghi ad esso. L'architettura di JBoss è estremamente flessibile e basata
su moduli, possiamo attivare o disattivare i moduli che ci interessano in modo semplice e veloce. Nel nostro caso JBoss Wildfly
non è a conoscenza di un modulo che consenta una connessione ad un database Postgres, dobbiamo quindi definire un nuovo modulo
che utilizzi il driver JDBC di Postgres.

All'interno della directory modules di JBoss Wildfly creiamo la directory org, al suo interno la directory postgres ed all'interno di postgres la directory main. In main copiamo il file jar del driver JDBC di Postgres, esso potrebbe essere ad esempio postgresql-9.4-1201-jdbc4.jar. Infine
realizziamo il file module.xml, sempre in main con il seguente contenuto:

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.postgres">
    <resources>
        <resource-root path="postgresql-9.4-1201-jdbc4.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Abbiamo così aggiunto un nuovo modulo a JBoss per la connessione al database Postgres, in modo del tutto
analogo possiamo creare moduli per connessioni a database differenti.

Apriamo adesso il file di configurazione di JBoss che stiamo utilizzando, standalone-full.xml, e individuiamo il sottosistema urn:jboss:domain:datasources:3.0. Al suo interno troviamo il tag datasources che consente di definire dei datasource per le connessioni verso database. Inseriamo una connessione verso il database hotel:

<datasource jndi-name="java:/PostgresDS" pool-name="PostgresPool" enabled="true">
      <connection-url>jdbc:postgresql://localhost:5432/hotel</connection-url>
          <driver>postgres</driver>
              <security>
                  <user-name>postgres</user-name>
                  <password>postgres</password>
             </security>
</datasource>

e nella sezione "drivers" un collegamento al modulo driver definito precedentemente:

<driver name="postgres" module="org.postgres">
    <driver-class>org.postgresql.Driver</driver-class>
</driver>

Abbiamo chiaramente assunto l'esistenza di un ruolo postgres con password "postgres", è possibile tranquillamente creare ruoli con password differenti utilizzando PgAdmin. Queste operazioni concludono la configurazione di JBoss. Se eseguiamo lo start del server dovremmo notare la seguente linea di log sulla console:

[org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) WFLYJCA0018: Started Driver service with driver-name = postgres

Ti consigliamo anche