为什么不创建jdbc连接池?

iHa*_*ank 9 java jdbc glassfish java-ee

我正在开发一个带有EAR文件的简单Java EE应用程序,包括JAR和WAR文件.在EarContent/META-INF下的EAR项目中,我有以下glassfish-resources.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
    <jdbc-connection-pool name="java:app/jdbc/test" res-type="javax.sql.XADataSource" datasource-classname="org.apache.derby.jdbc.ClientXADataSource">
        <property name="serverName" value="localhost"/>
        <property name="portNumber" value="1527"/>
        <property name="databaseName" value="test"/>
        <property name="createDatabase" value="create"/>
        <property name="user" value="APP"/>
        <property name="password" value="APP"/>
    </jdbc-connection-pool>
    <jdbc-resource jndi-name="java:app/jdbc/test" pool-name="java:app/jdbc/test"/>
</resources>
Run Code Online (Sandbox Code Playgroud)

在META-INF下的EJB项目中,我有以下persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="events" transaction-type="JTA">
        <description>Manages events, users and comments</description>
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>java:app/jdbc/test</jta-data-source>
        <class>com.hank.entity.Question</class>
        <class>com.hank.entity.QuizWalk</class>
        <class>com.hank.entity.User</class>
        <class>com.hank.entity.QuizWalkParticipants</class>
        <properties>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <property name="eclipselink.logging.connection" value="false"/>
            <property name="eclipselink.logging.level.sql" value="ALL"/>
            <property name="eclipselink.logging.parameters" value="true"/>
            <property name="eclipselink.logging.session" value="false"/>
            <property name="eclipselink.logging.thread" value="false"/>
            <property name="eclipselink.logging.timestamp" value="false"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

我有一个正在运行的Derby服务器,端口号是正确的.除了没有创建数据库之外,应用程序正在运行.有什么不对?这种方法适用于Glassfish 3.1.

汉克

Ond*_*Mih 1

看起来 Glassfish v4 的 jdbc 数据源配置与 v3 相比略有变化。您需要指定connectionAttributes属性来创建数据库。财产createDatabase没有记录并且可能被忽略。

属性也没有详细记录,但您可以在 Glassfish 4 PDF 文档(管理指南- 管理 JDBC 连接池部分)或Payara 服务器源(源自 Glassfish 4)connectionAttributes中找到示例。