【问题标题】:How to solve persistence unit on Tomcat如何解决Tomcat上的持久性单元
【发布时间】:2012-04-23 18:11:13
【问题描述】:

我在 Glassfish 上设置了这个 Web 项目,但由于遇到一些问题,我决定迁移到 Tomcat。

但现在我的持久性类抛出以下错误

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named JetCarBd

我尝试将persistence.xml 放在不同的文件夹中,但没有成功。

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="JetCarBd" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>br.com.jetcar.entity.Cliente</class>
<class>br.com.jetcar.entity.Endereco</class>
<class>br.com.jetcar.entity.Veiculo</class>
<class>br.com.jetcar.entity.Aluguel</class>
<class>br.com.jetcar.entity.Venda</class>
<class>br.com.jetcar.entity.Interesse</class>
<class>br.com.jetcar.entity.Funcionario</class>
<class>br.com.jetcar.entity.ItensAluguel</class>
<class>br.com.jetcar.entity.AcessorioAluguel</class>
<class>br.com.jetcar.entity.TestDrive</class>
<class>br.com.jetcar.entity.AcessorioVeiculo</class>
<class>br.com.jetcar.entity.Acessorio</class>
<class>br.com.jetcar.entity.Oficina</class>
<class>br.com.jetcar.entity.Manutencao</class>
<class>br.com.jetcar.entity.Reserva</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
  <property name="javax.persistence.jdbc.url"  value="jdbc:postgresql://localhost:5432/jetcar"/>
  <property name="javax.persistence.jdbc.password" value="postgres"/>
  <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
  <property name="javax.persistence.jdbc.user" value="postgres"/>
 </properties>
  </persistence-unit>
</persistence>

ConnectionUtil.java

package br.com.jetcar.connection;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 * @author Jorge Oliveira
 */
public class ConnectUtil {

private  final EntityManagerFactory emf;

public ConnectUtil(){
    emf = Persistence.createEntityManagerFactory("JetCarBd");
}

public EntityManager getEntityManager() {
    return emf.createEntityManager();
}


}

我的 persistence.xml 位于 src/META-INF 下

【问题讨论】:

    标签: tomcat jpa eclipselink persistence-unit


    【解决方案1】:

    你可以在这里检查几件事:

    1. 部署应用程序后,确保persistence.xml 在
    2. 下可用

    WEB-INF/classes/META-INF 文件夹

    1. 您的提供程序 (eclipse jpa) jar 位于类路径中,Eclipse Env 位于构建路径中,并检查在部署的应用程序中是否可用。

    【讨论】:

    • 很抱歉,Eclipse 部署的项目所在的文件夹在哪里?在 glassfish 中,它就在服务器文件夹下。
    • 如果您从 Eclipse 部署,则默认文件夹是您的 /.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps。或者,您可以双击您的服务器,然后检查您的部署路径(它将在服务器位置下的 Eclipse 编辑器中可见
    • 好吧,persistence.xml 位于 WEB-INF/classes/META-INF 文件夹下。我将 EclipseLink 库作为我的项目中的用户库,因此我收到此警告标记选项卡Description Resource Path Location Type Classpath entry org.eclipse.jdt.USER_LIBRARY/EclipseLink 2.3.2 - Indigo will not be exported or published. Runtime ClassNotFoundExceptions may result. JetCar P/JetCar Classpath Dependency Validator Message。但我仍然可以在部署时获取库。
    • 将此库添加到您的 WEB-INF/lib 文件夹并重新部署,确保所有其他依赖项也复制到 WEB-INF/lib 文件夹中
    • 将这些库添加到 lib 文件夹后,出现一堆错误,所有这些错误都引用了 Abr 23, 2012 3:56:09 PM org.apache.catalina.startup.ContextConfig checkHandlesTypes WARNING: Unable to load class [org.apache.xml.resolver.Catalog] to check against the @HandlesTypes annotation of one or more ServletContentInitializers. java.lang.ClassNotFoundException: org.apache.xml.resolver.Catalog 等注释
    猜你喜欢
    • 2016-06-25
    • 2015-09-13
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    相关资源
    最近更新 更多