Quali sono le opzioni per impostare i driver e le risorse JDBC quando si utilizza Java EE Payara Micro?Come aggiungere driver JDBC e configurare risorse JDBC in Payara Micro?
risposta
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.
- Aprire
payara-micro.jar
con un gestore archivio ed estrarre il file/microdomain.xml
. - Aprire
microdomain.xml
in un editor di testo. - Se l'applicazione è già stata distribuita su un Payara completo, è possibile copiare e incollare le modifiche di seguito dall'intero Payara
domain.xml
. 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>
Aggiungere proprio sopra la riga che contiene
</server>
:<resource-ref ref="jdbc/poolname"></resource-ref>
- Salva e chiudi l'editor di testo.
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
È 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)
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
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.
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
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
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.
- 1. come configurare JDBC in Eclipse?
- 2. Istruzioni preparate e driver JDBC
- 3. Caricamento driver JDBC
- 4. JYthon CLASSPATH, driver sys.path e JDBC
- 5. Trovare i driver JDBC installati
- 6. Come aggiungere il driver mysql JDBC a un progetto Eclipse?
- 7. oracle jdbc driver version madness
- 8. PostgreSQL - Installazione del driver JDBC
- 9. Spring JDBC Impossibile caricare la classe di driver JDBC [oracle.jdbc.driver.OracleDriver]
- 10. JDBC driver per Java 7
- 11. JDBC driver Redshift e Postgres intercettano jdbc: // stringa di connessione postgresql
- 12. Impostazione NLS_LANG per driver sottile JDBC?
- 13. Android JDBC non funziona: ClassNotFoundException sul driver
- 14. sqljdbc: JDBC driver sqljdbc.jar Vs sqljdbc4.jar
- 15. Classe JDBC Driver non trovata: com.mysql.jdbc.Driver
- 16. Gestire più driver JDBC dallo SAME VENDOR
- 17. non implementato dal driver JDBC di SQLite
- 18. Un po 'di confusione riguardo alle risorse JDBC e ai pool di connessione JDBC Glassfish
- 19. Come inizializzare il driver JDBC SQLite3 in JRuby?
- 20. Come posso configurare per disattivare l'autocommit in Spring + JDBC?
- 21. Come aggiungere driver JDBC mysql ad Eclipse in modo che possa essere utilizzato da SQL Explorer?
- 22. Come connettere Android con MySQL usando il driver Mysql JDBC
- 23. Come utilizzare il driver JDBC Oracle nel progetto Gradle
- 24. Utilizzo di più driver JDBC Oracle in un'applicazione Java?
- 25. Impossibile creare il driver JDBC di classe "" per l'URL di connessione "null": Driver JDBC Tomcat & SQL Server
- 26. Postgresql, JDBC e flussi BLOB
- 27. Spring jdbc: database incorporato non è in grado di accedere al driver jdbc su JBoss AS 7
- 28. Come impostare rewriteBatchedStatements per il driver jdbc mysql?
- 29. Inserimento sqlite lento utilizzando i driver jdbc in java
- 30. Nessun driver adatto trovato per JDBC in Spark
Questa è la soluzione se il nome del database rimane sempre lo stesso, ma potrebbe non essere sempre il caso tra le distribuzioni. –