Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Jakarta ee 无法在Glassfish v4中使用JPA_Jakarta Ee_Jpa_Glassfish_Glassfish 3_Glassfish 4 - Fatal编程技术网

Jakarta ee 无法在Glassfish v4中使用JPA

Jakarta ee 无法在Glassfish v4中使用JPA,jakarta-ee,jpa,glassfish,glassfish-3,glassfish-4,Jakarta Ee,Jpa,Glassfish,Glassfish 3,Glassfish 4,在Glassfish v4上,在这个超简单的应用程序中,我得到了一个错误:javax.persistence.PersistenceException:当我访问URL时,没有名为local的EntityManager的持久性提供程序:localhost:8080/demo/main 我认为GlassFishV4应该有一个内置的提供者 以下是war文件中的布局: $ jar tvf /usr/local/glassfish4/glassfish/domains/domain1/autodeploy

在Glassfish v4上,在这个超简单的应用程序中,我得到了一个错误:
javax.persistence.PersistenceException:当我访问URL时,没有名为local的EntityManager的持久性提供程序:
localhost:8080/demo/main

我认为GlassFishV4应该有一个内置的提供者

以下是war文件中的布局:

$ jar tvf /usr/local/glassfish4/glassfish/domains/domain1/autodeploy/demo.war
    39 Sun Aug 04 17:12:40 HST 2013 META-INF/MANIFEST.MF
     0 Mon Aug 05 16:32:16 HST 2013 META-INF/
   217 Mon Aug 05 16:18:22 HST 2013 META-INF/persistence.xml
     0 Sun Aug 04 17:12:36 HST 2013 WEB-INF/
     0 Mon Aug 05 14:30:06 HST 2013 WEB-INF/classes/
     0 Mon Aug 05 14:45:26 HST 2013 WEB-INF/classes/com/
     0 Mon Aug 05 14:45:26 HST 2013 WEB-INF/classes/com/example/
     0 Mon Aug 05 16:23:28 HST 2013 WEB-INF/classes/com/example/demo/
   236 Mon Aug 05 16:24:26 HST 2013 WEB-INF/classes/com/example/demo/Foo.java
   400 Mon Aug 05 16:25:34 HST 2013 WEB-INF/classes/com/example/demo/Main.java
   168 Mon Aug 05 16:21:04 HST 2013 WEB-INF/classes/com/example/demo/RestApp.java
   564 Mon Aug 05 16:28:10 HST 2013 WEB-INF/classes/com/example/demo/Foo.class
  1006 Mon Aug 05 16:28:10 HST 2013 WEB-INF/classes/com/example/demo/Main.class
   381 Mon Aug 05 16:28:10 HST 2013 WEB-INF/classes/com/example/demo/RestApp.class
   217 Mon Aug 05 16:18:22 HST 2013 WEB-INF/classes/persistence.xml
   284 Sun Aug 04 17:12:40 HST 2013 WEB-INF/glassfish-web.xml
     0 Sun Aug 04 17:12:36 HST 2013 WEB-INF/lib/
更新
persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="local">
        <jta-data-source>jdbc/local</jta-data-source>
    </persistence-unit>
</persistence>
Foo.java
是一个微不足道的实体:

package com.example.demo;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Foo {

  private int n;

  @Id
  public int getN () {
    return n;
  }

  public void setN (int n) {
    this.n = n;
  }

}
RestApp.java
非常简单,它成功地触发了JAX-RS:

package com.example.demo;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/")
public class RestApp extends Application {
}
在Glassfish控制面板中有一个名为
local
的JDBC连接池,它成功地ping到本地MySQL 5.6.13安装。有一个名为
JDBC/local
的JDBC资源,池名为:local

如何着手解决这个问题?谢谢


编辑:在上面添加了
persistence.xml
您有两个persistence.xml,它们都位于不正确的位置:

META-INF/persistence.xml
WEB-INF/classes/persistence.xml
相对于war包根目录的正确位置是

WEB-INF/classes/META-INF/persistence.xml
避免歧义,不要放置超过1个persistence.xml

此外,如果使用maven,则必须将persistence.xml放在src/main/resources上,以便在war上的正确位置组装它

WEB-INF/classes/META-INF/persistence.xml