【问题标题】:SQLException: No suitable driver found for jdbc:postgresqlSQLException: 找不到适合 jdbc:postgresql 的驱动程序
【发布时间】:2016-09-01 17:27:23
【问题描述】:

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/database2

entityManager.getTransaction()抛出

JBoss 7.1.1

Class.forName("org.postgresql.Driver");
EntityManager entityManager = Persistence.createEntityManagerFactory("database2").createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
    version="2.0">

    <persistence-unit name="database2" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
            <property name="javax.persistence.jdbc.user" value="user" />
            <property name="javax.persistence.jdbc.password" value="" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/database2" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
        </properties>
    </persistence-unit>
</persistence>

目录结构

EJB:
    |
    |- src
            |
            |- class1.java
            |- interface1.java
            |
            |- META_INF
                        |
                        |-persistence.xml

WEB:
    |
    |- src
    |       |
    |       |- class2.java
    |
    |-WebContent
                |
                |- WEB-INF
                            |
                            |- lib
                                    |
                                    |- postgresql-9.1-903.jdbc4.jar

EAP_HOME/modules/org/postgresql/main/module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
  <resources>
    <resource-root path="postgresql-9.1-903.jdbc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

CLI 命令:

/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.Driver)

【问题讨论】:

标签: java postgresql jakarta-ee jdbc jboss


【解决方案1】:

正如 Nicolas 所说,将 JDBC 驱动程序安装为 core module

接下来你需要让你的应用依赖这个模块有两种方法: 曼尼斯特.MF jboss-dependency.xml

我推荐第一种方式,因为它更符合规范。本质上,您需要在 EAR 或 WAR(无论正在部署什么)的 META-INF 目录中创建一个 MANIFEST.MF 文件。您在文件中创建的行将类似于:

Dependencies: org.postgresql

如需更多信息,请参阅JBoss EAP documentationJBoss wiki。我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 2020-12-13
    • 2019-05-25
    • 2013-03-16
    • 2021-12-05
    • 2018-11-30
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多