【问题标题】:How to setup a Java EE6 application structure如何设置 Java EE6 应用程序结构
【发布时间】:2012-11-11 20:50:19
【问题描述】:

因此,在阅读了有关 DDD 以及它的所有好处和荣耀之后,Java EE 似乎并不能让您轻松做到这一点。我的想法是制作这样的结构:

域名
存储库
应用程序
查看

然而,在这个答案DDD and application layer 的评论中,我认为 Application 层似乎将成为所有服务都用@Stateful、@WebService 等注释的层不是真正应该放在的地方。似乎域模型应该有这些注释。

所以现在的问题是:人们如何构建他们的应用程序?您将不同的注释放在哪里以及它们如何相互使用。有人可以帮助我了解如何构建 java ee 6 Web 应用程序吗?请帮忙,不要说我是如何在特定工具或类似工具中做到这一点的,而是说实际的类在哪里以及不同的层打算做什么。

我对从哪里开始以及如何组织感到沮丧。

【问题讨论】:

    标签: java jakarta-ee domain-driven-design


    【解决方案1】:

    没有关于如何构建应用程序的特定规则。最好的办法是使用常识并观察其他人是如何做的。

    您可以生成焊接团队提供的简单 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 上找到许多其他示例

    【讨论】:

    • 并且没有一个类被 @Stateful 等注释,显示 EJB 应该在哪里以及不同部分如何协同工作
    【解决方案2】:

    这是一个可能有用的例子 -> EAR Testing

    它被称为“EAR 测试”,但也可以很容易地应用于构建战争文件。出于此答案的目的,我会将示例中提到的 eartesting 目录更改为 wartesting

    EAR 文件和 WAR 文件几乎相同,因为在 Java EE 规范级别,我们决定允许 war 文件包含 EJB、CDI bean 等。

    该示例使用 Maven 构建系统并具有两个模块,一个用于“数据对象”,一个用于“业务逻辑”。似乎符合您的想法,并且可能是一个有用的起点。它包含一个带有 EJB 单元测试的小型示例应用程序。

    您可能还没有阅读过,但人们通常认为 EJB 很难测试。不再有,该示例显示了符合规范的最新解决方案,因此您可以从该设置开始用一块石头杀死几只鸟。

    其中不包括用于创建您将在生产中部署的最终 WAR 文件的模块。要创建它,您只需添加第三个模块

    • 警告/商业模式
    • 警告/业务逻辑
    • 警告/商业战争(添加)

    busines-war 中,您将有一个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>
    

    然后创建以下目录:

    • wartesting/business-war/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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2011-06-29
      • 1970-01-01
      • 2015-05-27
      • 2012-03-23
      • 1970-01-01
      • 2012-07-02
      相关资源
      最近更新 更多