15

使用 Java EE Payara Micro 时,我有哪些设置 JDBC 驱动程序和资源的选项?

4

6 回答 6

12

此方法通过 tainos 结合了 Mike 和 Adam Bien 的答案。它涉及制作一个新的domain.xml,这是一个 Payara 配置文件。如果它与完整的 Payara 一起使用,则无需修改应用程序。下面的示例适用于 PostgreSQL JDBC。

  1. 使用存档管理器打开payara-micro.jar并解压缩文件/microdomain.xml
  2. microdomain.xml在文本编辑器中打开。
  3. 如果您的应用程序已经部署到完整的 Payara,您可以从完整的 Payara 复制粘贴以下更改domain.xml
  4. </resources>使用您的 dbname、dbuser、dbpassword、hostname:port 和 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. 在包含以下内容的行正上方添加</server>

    <resource-ref ref="jdbc/poolname"></resource-ref>
    
  6. 保存并关闭文本编辑器。
  7. 使用您的路径和文件名从命令行启动 Payara micro。Linux 语法:

    java -cp "/opt/jdbc/postgresql.jar:/opt/payara/micro.jar" fish.payara.micro.PayaraMicro --deploy webapp.war --domainConfig microdomain.xml
    
于 2016-06-15T18:25:34.653 回答
9

将数据源定义添加到 web.xml,然后将 JDBC jar 的 jar 文件添加到 WEB-INF/lib。然后像往常一样将战争文件部署到 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 存储库中有一个完整的示例说明如何执行此操作。请参阅Payara GitHub 上的数据源示例

于 2016-01-05T20:35:54.200 回答
3

您可以在普通 domain.xml 中配置 JDBC 并将其提供给 Payara。如果您不确定,您可以随时获取现有的 domain.xml 并使用其中的 JDBC 配置。

Payara Micro 有一些命令行选项,其中一个允许您指定替代domain.xml文件:

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

如果您以编程方式引导 Payara Micro,您将使用:

setAlternateDomainXML(File alternateDomainXML)
于 2015-10-05T12:25:45.437 回答
3

由于接受的答案对我不起作用,因此想出了一种不同且稍微简单的方法。您仍然依赖 custom 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

此调用不需要您知道 Main 类。

于 2018-02-27T09:54:41.930 回答
2

Adam Bien 在他的第 19 个 Airhacks 视频中回答了这个问题。

我的看法是,当与自定义资源一起使用时,最好用作嵌入式服务器,主要是我们配置 JDBC 资源,并通过 maven 依赖项在 jar 或 war 文件中包含所需的驱动程序。

于 2015-10-13T19:28:48.477 回答
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

于 2017-12-22T14:56:11.570 回答