2015-10-02 16 views

risposta

7

Questo metodo combina risposte di Mike e Adam Bien tramite tainos. Si tratta di creare un nuovo domain.xml, che è un file di configurazione Payara. Non è necessaria alcuna modifica dell'applicazione se ha funzionato con Payara completo. L'esempio che segue è per JDBC PostgreSQL.

  1. Aprire payara-micro.jar con un gestore archivio ed estrarre il file /microdomain.xml.
  2. Aprire microdomain.xml in un editor di testo.
  3. Se l'applicazione è già stata distribuita su un Payara completo, è possibile copiare e incollare le modifiche di seguito dall'intero Payara domain.xml.
  4. Aggiungere proprio sopra la riga contenente </resources>, usando il vostro dbname, dbuser, passworddb, hostname: port e poolname:

    <jdbc-connection-pool connection-validation-method="auto-commit" driver-classname="org.postgresql.Driver" res-type="java.sql.Driver" name="poolname" is-connection-validation-required="true" connection-creation-retry-attempts="3" validate-atmost-once-period-in-seconds="60"> 
        <property name="URL" value="jdbc:postgresql://localhost:5432/dbname"></property> 
        <property name="user" value="dbuser"></property> 
        <property name="password" value="dbpassword"></property> 
    </jdbc-connection-pool> 
    <jdbc-resource pool-name="poolname" jndi-name="jdbc/poolname"></jdbc-resource> 
    
  5. Aggiungere proprio sopra la riga che contiene </server>:

    <resource-ref ref="jdbc/poolname"></resource-ref> 
    
  6. Salva e chiudi l'editor di testo.
  7. Avvia Payara micro dalla riga di comando, utilizzando i tuoi percorsi e nomi di file. Sintassi Linux:

    java -cp "/opt/jdbc/postgresql.jar:/opt/payara/micro.jar" fish.payara.micro.PayaraMicro --deploy webapp.war --domainConfig microdomain.xml 
    
+0

Questa è la soluzione se il nome del database rimane sempre lo stesso, ma potrebbe non essere sempre il caso tra le distribuzioni. –

2

È possibile configurare JDBC in un dominio normale.xml e fornirlo a Payara. Se non sei sicuro, puoi sempre utilizzare un dominio.xml esistente e utilizzare la configurazione JDBC.

Payara Micro has a few command line options, uno dei quali consente di specificare una alternativa domain.xml di file:

java -jar payara-micro.jar --deploy myApp.war --domainConfig mydomain.xml 

Se stai avviando Payara Micro a livello di codice, si può usare:

setAlternateDomainXML(File alternateDomainXML) 
+0

Suppongo di dover aggiungere i driver JDBC al classpath prima di eseguire l'istanza micro? Ho fatto alcuni test, ho provato a usare --rootDir ma ho appena causato un sacco di eccezioni. Grazie a @Mike – tainos

0

Adam Bien risposto a questa domanda nel suo 19th Airhacks video.

Il mio Take, Quando viene utilizzato con risorse personalizzate è meglio utilizzato come un server incorporato, nel main configuriamo le risorse JDBC e con le dipendenze Maven includiamo i driver necessari all'interno del jar o dei file war.

5

Aggiungere la definizione dell'origine dati al file web.xml e quindi aggiungere il file jar per il jar JDBC nel WEB-INF/lib. Quindi distribuire il file di guerra come al solito su Payara Micro.

<data-source> 
    <name>java:global/ExampleDataSource</name> 
    <class-name>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</class-name> 
    <server-name>localhost</server-name> 
    <port-number>3306</port-number> 
    <database-name>mysql</database-name> 
    <user>root</user> 
    <password>root</password> 
    <!-- Example of how to use a Payara specific custom connection pool setting --> 
    <property> 
    <name>fish.payara.sql-trace-listeners</name> 
    <value>com.sun.gjc.util.SQLTraceLogger</value> 
    </property> 
</data-source> 

C'è un esempio completo di come farlo nel repository GitHub di Payara Esempi. Vedi Datasource example on Payara GitHub

0

Una delle opzioni è GlassFish-risorse.xml

<!-- db1 --> 
<jdbc-connection-pool 
     datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="db1" 
     res-type="javax.sql.DataSource" 
     steady-pool-size="1" 
     is-connection-validation-required="true" 
     connection-validation-method="meta-data" 
     max-pool-size="10"> 
    <property name="password" value="icoder_pwd"/> 
    <property name="user" value="icoder_user"/> 
    <property name="databaseName" value="icoder_db"/> 
    <property name="serverName" value="localhost"/> 
    <property name="portNumber" value="3310"/> 
    <property name="zeroDateTimeBehavior" value="convertToNull"/> 
</jdbc-connection-pool> 
<jdbc-resource pool-name="db1" jndi-name="jdbc/db1"/> 


<!-- db2 --> 
<jdbc-connection-pool 
     datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" name="db2" 
     res-type="javax.sql.DataSource" 
     steady-pool-size="1" 
     is-connection-validation-required="true" 
     connection-validation-method="meta-data" 
     max-pool-size="10"> 
    <property name="password" value="icoder_pwd"/> 
    <property name="user" value="icoder_user"/> 
    <property name="databaseName" value="icoder_db"/> 
    <property name="serverName" value="localhost"/> 
    <property name="portNumber" value="3311"/> 
    <property name="zeroDateTimeBehavior" value="convertToNull"/> 
</jdbc-connection-pool> 
<jdbc-resource pool-name="db2" jndi-name="jdbc/db2"/> 


</resources> 

Esempio completo con l'attuazione entità Manager è possibile trovare: https://github.com/igorzg/payara-micro-jpa-multi-tenancy

0

Come the accepted answer non ha funzionato per me un figurato un modo diverso e un po 'più facile. È ancora contare sulla personalizzato domain.xml, ma il comando di avvio può essere semplificata:

java -jar /opt/payara/payara-micro.jar --deploy webapp.war --domainConfig domain.xml --addJars /opt/mysql-connector-java-5.1.40-bin.jar 

Questa chiamata non richiede di conoscere la classe principale.

Problemi correlati