持久性单元SQLException没有合适的驱动程序

时间:2009-11-04 19:26:41

标签: java-ee persistence glassfish

我在GlassFish上部署了一个j2ee应用程序。 我在GlassFish的lib目录中有mysql jar。 我正在尝试使用JPA,我的持久性文件是:

<persistence-unit name="teamPU"
    transaction-type="RESOURCE_LOCAL">
    <provider>
        oracle.toplink.essentials.PersistenceProvider
    </provider>
    <class>com.team.dao.Roles</class>
    <properties>
        <property name="toplink.jdbc.driver"
            value="com.mysql.jdbc.Driver" />
        <property name="toplink.jdbc.url"
            value="jdbc:mysql://localhost:3306/test" />
        <property name="toplink.jdbc.user" value="root" />
        <property name="toplink.ddl-generation"
            value="create-tables" />
    </properties>
</persistence-unit>

我在lib中也有toplink-essentials * jars。 当我调用dao.find *时,它会抛出No合适的驱动程序。 我不是所有的罐子都应该在哪里吗?

1 个答案:

答案 0 :(得分:0)

我使用JPA / toplink的Java Web应用程序(Servlets / JSP)遇到了这个问题。它在我的开发系统上运行良好,NetBeans部署到Tomcat。当我将Web应用程序部署到生产服务器上的Tomcat时,我会得到“java.sql.SQLException:没有合适的驱动程序”,我在调用堆栈中看到了toplink包。有趣的是,我也在我的网络应用程序中使用直接JDBC,并且在生产服务器上运行良好。

修复方法是将相应的jdbc驱动程序.jar复制到jre6 \ lib \ ext文件夹。

很高兴知道为什么在顶级链接的情况下将jdbc .jar放入web应用程序.war文件中是不够的......