我试图使用WildFly和Maven运行一个简单的EJB示例,但却停留在我应该创建一个持久性单元的阶段。因此,我创建了一个PostgreSQL数据库,配置了Wildfly数据源并编写了一个persistence.xml文件。但WAR似乎从不包含persistence.xml,所以每次尝试创建EntityManager时,我都会从Wildfly获得以下信息和错误:
11:55:57,664信息[org.hibernate.jpa.boot.internal.PersistenceXMLParser](默认任务-1)HHH000318:在类路径中找不到任何META-INF/Persistence.xml文件
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="postgres">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.dain_torson.appserver.Person</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/infodb" />
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
<property name="hibernate.connection.username" value="postgres" />
<property name="hibernate.connection.password" value="postgres" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
person.java
package com.dain_torson.appserver;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name="persons")
public class Person implements Serializable {
private int id;
private String name;
private String group;
public Person(){
}
//mark id as primary key with autogenerated value
//map database column id with id field
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id")
public int getId() {
return id;
}
@Column(name="surname")
public String getName() {
return name;
}
@Column(name="group_num")
public String getGroup() {
return group;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setGroup(String group) {
this.group = group;
}
package com.dain_torson.appserver;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;
@Stateless
public class HelloWorld implements HelloWorldInterface
{
private EntityManager entityManager;
public HelloWorld() {
}
@Override
public String helloworld() {
entityManager = Persistence.createEntityManagerFactory("postgres").createEntityManager();
if(entityManager == null) {
return "null";
}
Person person = (Person)entityManager.createQuery("FROM Person").getSingleResult();
return person.getName();
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dain_torson.appserver</groupId>
<artifactId>StudentInfoAppServer</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>StudentInfoAppServer Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.16.Final</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.3.2.GA</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
</dependencies>
<build>
<finalName>StudentInfoAppServer</finalName>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>1.0.2.Final</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<!-- First step is to disable the default-war build step. -->
<id>default-war</id>
<phase>none</phase>
</execution>
<execution>
<!-- Second step is to create an exploded war. Done in prepare-package -->
<id>war-exploded</id>
<phase>prepare-package</phase>
<goals>
<goal>exploded</goal>
</goals>
<configuration>
<webResources>
<resource>
<directory>src/main/resources/META-INF </directory>
<targetPath>WEB-INF/classes/META-INF</targetPath>
<filtering>true</filtering>
<includes>
<include>**/persistence.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</execution>
<execution>
<!-- Last step is to make sure that the war is built in the package phase -->
<id>custom-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
几天来我一直在为这件事苦苦挣扎,所以任何帮助都将不胜感激。
这是关于如何在pom.xml中配置WAR构建的全部内容。它不会自动完成。我在src/main/resources/meta-inf中有我的。但关键是如何配置pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<!-- First step is to disable the default-war build step. -->
<id>default-war</id>
<phase>none</phase>
</execution>
<execution>
<!-- Second step is to create an exploded war. Done in prepare-package -->
<id>war-exploded</id>
<phase>prepare-package</phase>
<goals>
<goal>exploded</goal>
</goals>
<configuration>
<webResources>
<resource>
<directory>src/main/resources/META-INF </directory>
<targetPath>WEB-INF/classes/META-INF</targetPath>
<filtering>true</filtering>
<includes>
<include>**/persistence.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</execution>
<execution>
<!-- Last step is to make sure that the war is built in the package phase -->
<id>custom-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
在彻底搜索了这些论坛寻找答案后,我找不到一个类似于我的案例。 在使用maven生成WAR filer并部署我的服务器之后,每次我向需要创建DAO的API发送GET请求时,我都会在服务器控制台收到以下警告: 在类路径中找不到任何meta-inf/persistence.xml文件 和以下例外情况: 没有名为mim_ajuda的EntityManager的持久性提供程序 在进一步讨论之前,我已经搜索了
我知道关于这个问题还有其他问题,但没有一个解决方案对我有效。我正在使用maven在eclipse中构建一个java项目,我有我的持久性。src/main/resource/META_INF文件夹中的xml文件。但当我尝试安装mvn时,总是会出现以下错误: 从控制台输出来看,这似乎是由以下原因造成的: 这是我的persistence.xml文件: 我试着右键点击项目,并将META_INF文件夹添加到
我试图添加JPA到我的项目,但总是得到这些错误: 但是当我尝试初始化我的实体管理器时: 我收到了这些错误,但我不明白这是怎么可能的,然后我清楚地将该文件添加到我的数据库中。罐子 坚持不懈xml内容是: 这里可以看到项目和编译的jar的结构(持久性内容更改为2.2版本,如前所述): 我做错了什么? 更新:即使查找命令返回文件存在于正确的目录: 更多更新:我试图从另一个项目复制persistence.
我为学校准备了一个Java小项目。我将EclipseNeon与JPA图表编辑器和JavaFX结合使用。问题- 那么,项目怎么可能找不到一个文件,而我没有更改文件夹或文件名。。。或者任何可能与路径有关的东西?我只找到了路径错误的答案,但结构是通过JPA创建的,并且有效,所以我认为这不应该是问题所在。 谢谢你的帮助,如果语法不太好,我很抱歉。
因此,在我的主程序中,我运行以下内容。 它总是返回false,这意味着它没有找到'dummydevice' 在我的eclipse项目中,我在'src'处创建了一个名为META-INF的文件夹,在它下面创建了一个名为'services'的子文件夹。 我做对了吗?我看到的每一个关于SPI的例子都是关于加载JAR的。我不是在加载一个JAR,我是想在同一个项目中运行一个类。这个方法只适用于装入罐子吗?我希
“在Meta-INF/Spring.Factories中找不到自动配置类” 最小示例: 使用SpringInitializr(https://start.spring.io),在几秒钟内就可以创建一个迷你应用程序来复制这个问题。使用的SpringInitializr标记是:“web”和“vaadin”。 运行应用程序时使用 您将得到以下错误消息: “在Meta-INF/Spring.Factori