Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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
如何设置JavaEE6应用程序结构_Java_Jakarta Ee_Domain Driven Design - Fatal编程技术网

如何设置JavaEE6应用程序结构

如何设置JavaEE6应用程序结构,java,jakarta-ee,domain-driven-design,Java,Jakarta Ee,Domain Driven Design,因此,在阅读了DDD及其所有好处和荣耀之后,JavaEE似乎并没有让您轻松地做到这一点。我想做一个这样的结构: 域 存储库 应用程序 看法 然而,在这个答案的评论中,我认为所有带有@Stateful、@WebService等注释的服务的应用程序层似乎不是它真正应该位于的位置。看起来域模型应该有这些注释 所以现在的问题是:人们如何构建他们的应用程序?您将不同的注释放在哪里,以及它们如何相互使用。有人能帮我理解如何构造JavaEE6Web应用程序吗?请提供帮助,不要说我是如何在一个特定的工具或类似的

因此,在阅读了DDD及其所有好处和荣耀之后,JavaEE似乎并没有让您轻松地做到这一点。我想做一个这样的结构:


存储库
应用程序
看法

然而,在这个答案的评论中,我认为所有带有@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

没有一个类用@Stateful等注释,显示EJB应该在哪里以及不同部分如何协同工作