如何设置JavaEE6应用程序结构
因此,在阅读了DDD及其所有好处和荣耀之后,JavaEE似乎并没有让您轻松地做到这一点。我想做一个这样的结构: 域如何设置JavaEE6应用程序结构,java,jakarta-ee,domain-driven-design,Java,Jakarta Ee,Domain Driven Design,因此,在阅读了DDD及其所有好处和荣耀之后,JavaEE似乎并没有让您轻松地做到这一点。我想做一个这样的结构: 域 存储库 应用程序 看法 然而,在这个答案的评论中,我认为所有带有@Stateful、@WebService等注释的服务的应用程序层似乎不是它真正应该位于的位置。看起来域模型应该有这些注释 所以现在的问题是:人们如何构建他们的应用程序?您将不同的注释放在哪里,以及它们如何相互使用。有人能帮我理解如何构造JavaEE6Web应用程序吗?请提供帮助,不要说我是如何在一个特定的工具或类似的
存储库
应用程序
看法 然而,在这个答案的评论中,我认为所有带有@Stateful、@WebService等注释的服务的应用程序层似乎不是它真正应该位于的位置。看起来域模型应该有这些注释 所以现在的问题是:人们如何构建他们的应用程序?您将不同的注释放在哪里,以及它们如何相互使用。有人能帮我理解如何构造JavaEE6Web应用程序吗?请提供帮助,不要说我是如何在一个特定的工具或类似的东西中实现它的,而是说实际的类去了哪里,以及不同的层打算做什么
我对从何处开始以及如何组织感到失望。对于如何组织应用程序,没有具体的规则。最好是运用常识,同时观察别人是如何做的 您可以生成weld团队提供的简单maven项目,以了解基本Java EE应用程序的结构:
mvn archetype:generate -DarchetypeArtifactId=jboss-javaee6-webapp -DarchetypeGroupId=org.jboss.weld.archetypes -DarchetypeVersion=1.0.1.CR1 -DarchetypeRepository=central
当然,您可以在github或java.net上找到许多其他示例,这里有一个可能有用的示例-> 它被称为“耳朵测试”,但也可以很容易地应用于构建war文件。为了回答这个问题,我将把示例中提到的
eartesting
目录更改为wartesting
EAR文件和WAR文件几乎相同,因为在JavaEE规范级别,我们决定允许WAR
文件包含EJB、CDIBean等
该示例使用Maven构建系统,有两个模块,一个用于“数据对象”,另一个用于“业务逻辑”。似乎符合你的想法,可能是一个有用的起点。它包含一个带有EJB单元测试的小样本应用程序
您可能还没有读过,但人们通常认为EJB很难测试。现在已经没有了,该示例显示了最新的符合规范的解决方案,因此您可以从该设置开始一石二鸟
其中不包括创建最终WAR文件的模块,您将在生产中部署该文件。要创建它,只需添加第三个模块
- 测试/商业模式
- 测试/业务逻辑
- 战争测试/商业战争(新增)
busineswar
中,您将有一个pom.xml
如下所示:
<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">
<parent>
<groupId>org.superbiz</groupId>
<artifactId>myear</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>business-war</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.superbiz</groupId>
<artifactId>business-model</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.superbiz</groupId>
<artifactId>business-logic</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
org.superbiz
迈尔
1.1-快照
4.0.0
商业战
战争
org.superbiz
商业模式
${project.version}
org.superbiz
业务逻辑
${project.version}
org.apache.openejb
JavaEEAPI
假如
朱尼特
朱尼特
测试
然后创建以下目录:
- wartesting/businesswar/src/main/java
- wartesting/business war/src/main/webapp
- wartesting/business-war/src/main/java/org/superbiz/Foo.java
- wartesting/business-war/src/main/webapp/WEB-INF/WEB.xml
- wartesting/business war/src/main/webapp/index.html
wartesting/business war/target/
下获得一个war文件,其中包含:
WEB-INF/WEB.xml
WEB-INF/classes/org/superbiz/Foo.class
WEB-INF/lib/business-model-1.1-SNAPSHOT.jar
index.html