Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Payara Micro中添加JDBC驱动程序和配置JDBC资源?_Java_Jakarta Ee_Jdbc_Payara_Payara Micro - Fatal编程技术网

Java 如何在Payara Micro中添加JDBC驱动程序和配置JDBC资源?

Java 如何在Payara Micro中添加JDBC驱动程序和配置JDBC资源?,java,jakarta-ee,jdbc,payara,payara-micro,Java,Jakarta Ee,Jdbc,Payara,Payara Micro,使用Java EE Payara Micro时,设置JDBC驱动程序和资源的选项有哪些?您可以在普通的domain.xml中配置JDBC并将其提供给Payara。如果您不确定,您可以始终使用现有的domain.xml并从中使用JDBC配置 ,其中一个允许您指定另一个domain.xml文件: java -jar payara-micro.jar --deploy myApp.war --domainConfig mydomain.xml 如果您正在以编程方式引导Payara Micro,您将使

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

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

,其中一个允许您指定另一个
domain.xml
文件:

java -jar payara-micro.jar --deploy myApp.war --domainConfig mydomain.xml
如果您正在以编程方式引导Payara Micro,您将使用:

setAlternateDomainXML(File alternateDomainXML)

亚当·边在他的演讲中回答了这个问题


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

将数据源定义添加到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>

java:global/ExampleDataSource
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
本地服务器
3306
mysql
根
根
fish.payara.sql-trace-listeners
com.sun.gjc.util.SQLTraceLogger

在Payara Examples GitHub存储库中有一个完整的示例说明了如何执行此操作。参见

此方法通过泰诺斯将迈克和亚当·宾的答案结合起来。它涉及到创建一个新的
domain.xml
,这是一个Payara配置文件。如果与完整Payara一起使用,则无需修改应用程序。下面的示例适用于PostgreSQL JDBC

  • 使用归档管理器打开
    payara micro.jar
    ,并提取文件
    /microdomain.xml
  • 在文本编辑器中打开
    microdomain.xml
  • 如果您的应用程序已部署到完整Payara,则可以从完整Payara的
    domain.xml
    复制粘贴以下更改
  • 使用您的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>
    

  • 其中一个选项是glassfish-resources.xml

    
    
    完整的实体管理器实施示例,您可以找到: As对我不起作用,我想出了另一种稍微简单一点的方法。您仍然依赖于自定义的
    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
    

    这个调用不需要知道主类。

    我想我必须在运行微实例之前将JDBC驱动程序添加到类路径中?我做了一些测试,我试着使用--rootDir,但只是导致了一系列异常。谢谢@mikethan如果数据库名称始终保持不变,那么这就是解决方案,但在部署中可能并不总是如此。
    java -cp "/opt/jdbc/postgresql.jar:/opt/payara/micro.jar" fish.payara.micro.PayaraMicro --deploy webapp.war --domainConfig microdomain.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>
    
    java -jar /opt/payara/payara-micro.jar --deploy webapp.war --domainConfig domain.xml --addJars /opt/mysql-connector-java-5.1.40-bin.jar