使用Java EE Payara Micro时,我有哪些设置JDBC驱动程序和资源的选项?
答案 0 :(得分:11)
这种方法结合了Mike和Adam Bien通过tainos的答案。它涉及制作一个新的domain.xml
,这是一个Payara配置文件。如果它与完整的Payara一起使用,则不需要修改应用程序。以下示例适用于PostgreSQL JDBC。
payara-micro.jar
并解压缩文件/microdomain.xml
。microdomain.xml
。domain.xml
复制粘贴以下更改。使用您的dbname,dbuser,dbpassword,hostname:port和poolname:
添加到包含</resources>
的行的正上方
<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>
在包含</server>
:
<resource-ref ref="jdbc/poolname"></resource-ref>
使用路径和文件名从命令行启动Payara micro。 Linux语法:
java -cp "/opt/jdbc/postgresql.jar:/opt/payara/micro.jar" fish.payara.micro.PayaraMicro --deploy webapp.war --domainConfig microdomain.xml
答案 1 :(得分:7)
将数据源定义添加到web.xml,然后将JDBC jar的jar文件添加到WEB-INF / lib中。然后像往常一样将war文件部署到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>
在Payara示例GitHub存储库中有一个完整的示例。见Datasource example on Payara GitHub
答案 2 :(得分:3)
您可以在普通的domain.xml中配置JDBC并将其提供给Payara。如果您不确定,可以始终使用现有的domain.xml并使用该配置中的JDBC配置。
https://github.com/Sage/SDataCSharpClientLib,其中一个允许您指定备用domain.xml
文件:
java -jar payara-micro.jar --deploy myApp.war --domainConfig mydomain.xml
如果您以编程方式引导Payara Micro,则可以使用:
setAlternateDomainXML(File alternateDomainXML)
答案 3 :(得分:2)
Adam Bien在他的19th Airhacks video中回答了这个问题。
我的看法,当与自定义资源一起使用时最好用作嵌入式服务器,主要是我们配置JDBC资源,并且使用maven依赖关系,我们在jar或war文件中包含所需的驱动程序。
答案 4 :(得分:2)
由于the accepted answer对我不起作用,因此我认为这是一种不同且稍微简单的方法。您仍然依赖于自定义domain.xml
,但可以简化启动命令:
java -jar /opt/payara/payara-micro.jar --deploy webapp.war --domainConfig domain.xml --addJars /opt/mysql-connector-java-5.1.40-bin.jar
此通话并不要求您了解主类。
答案 5 :(得分:1)
其中一个选项是glassfish-resources.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>
您可以找到实体管理器实现的完整示例: https://github.com/igorzg/payara-micro-jpa-multi-tenancy