在本文中,我将告诉您如何使用JPA在JBoss上配置项目。 我不会详细介绍JPA,Hibernate,EJB,这是一个单独的主题。 我将仅向您展示项目的结构,如何在WildFly上配置数据源以及如何在IntelliJ IDEA中运行它们。 我认为,该框架对于使用JavaEE和JPA的初学者很有用。
安装WildFly10
我们进入
WildFly官方网站并下载10.1.0.Final版本。 (也许另一个可以使用,但是在这个项目中我使用了它)。
将存档解压缩到计算机上的任何目录中。
接下来,创建一个新用户。 为此,请运行bin / add-user.bat。 那里的一切都很简单。 按照说明进行操作,并记住输入的用户名和密码。
创建数据源
下一步是在服务器上创建数据源。 最简单的方法是使用WildFly提供的管理控制台。
为了输入它,首先您需要启动服务器/bin/standalone.bat并转到地址
127.0.0.1:9990 。 使用您刚创建的用户名和密码。
转到“部署”->“添加”->“上载新部署”部分。
现在,从postgresql官方网站下载jdbc驱动程序。 我下载了postgresql-42.2.4.jar。 我们将其添加到部署中。 可以给出任何名称。
进一步的配置->子系统->数据源->非XA->添加。
选择Postgresql数据源和我们下载的驱动程序。 我们设置数据库的URL,用户名和密码。 (不要与服务器的用户名和密码混淆)。 如果一切都正确完成,那么您的新数据源应出现在列表中。 如果单击“测试连接”,则可以在“视图”选项卡中检查与数据库的连接。
在IntelliJ IDEA中创建项目
这里的一切都是标准的。 我认为不需要多余的评论。 创建一个Maven项目。 我们把战争包装了。 并添加必要的依赖项。
其实这是我的pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>yst</groupId> <artifactId>hiberProject</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.12.Final</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>hiberProject</finalName> </build> </project>
项目结构

请注意,persitence.xml位于WEB-INF->类-> META-INF中。
这是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="myUnit" > <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <jta-data-source>java:/PostgresDS</jta-data-source> <class>UserEntity</class> <class>JavaBean</class> <properties> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>
作为jta-data-source,使用在创建数据源时指定的jndi-name。
如果忘记了,可以在Configuration-> Subsystems-> Datasources-> Our datasource-> View-> Attributes-> JNDI行中查看127.0.0.1:9990。现在让我们看一下我们的课程。
1.最简单的实体类。
细节不画。 这是另一个话题。
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2. EJB类
注释@PersistenceContext注入我们的持久性单元并基于它创建一个EntityManager。
@Stateless批注表示它是ejb。
import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Stateless public class JavaBean { @PersistenceContext(unitName = "myUnit") EntityManager entityManager; public void saveUser(UserEntity user){ entityManager.persist(user); } }
3.最简单的Servlet
抽象的@EJB injectite JavaBean。
在doGet方法中,将创建一个名为“ Ser”的用户,并调用ejb中的saveUser方法。
如果没有userentityity表,则hibernate将自己创建表并在其中插入我们的用户。
import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/test") public class App extends HttpServlet{ @EJB JavaBean javaBean; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { UserEntity user=new UserEntity(); user.setName("Ser"); javaBean.saveUser(user); resp.getWriter().println("Hello from servlet"); } }
项目启动
要在IDEA中配置jboss,请转至Run-> EditConfiguration,单击左上角的“ +”,然后选择jboss-local。

作为ApplicationServer,选择包含我们已安装的WildFly的文件夹。 作为工件,我选择了ExternalArtifact(由maven hiberProject.war编译),删除了标准的Build并添加了标准的maven任务(干净的软件包安装)。
现在,我们按开始键,然后等待服务器加载完毕。 接下来,转到localhost页面:8080 /项目名称/测试。
页面加载时,将触发doGet方法,并将名称为“ Ser”的用户写入数据库。
谢谢大家 我希望本文能对某人有所帮助。
这是此项目的GitHub
链接 。