【问题标题】:How to start a Java EE 6 project in Eclipse如何在 Eclipse 中启动 Java EE 6 项目
【发布时间】:2011-12-03 16:33:01
【问题描述】:

在学习 Java SE 几年后,我最近开始学习 Java EE 6(以及其他语言)。我已经购买了关于 Maven、EJB、JSF、Glassfish 等的不同书籍(虽然还没有全部阅读),但我对仅仅制作一个项目的复杂性感到完全不知所措。

如何在 eclipse 中从“scratch”(不从书中的示例中复制)开始一个项目?我可以从 Dynamic Web 项目、Maven 项目、EJB 项目、EAR 应用程序等中进行选择。如果我想制作一个内部包含 EJB/JPA 和 JSF 的应用程序(Web 应用程序),我应该使用哪个?

我知道标准 Maven 目录布局和原型,但是如果这是这样做的方式,我不知道该选择哪个。当然,我知道有很多方法可以做到这一点,这取决于我将使用它的目的,但我正在学习 Java EE 6,所以我想至少对如何设置一个基本项目有一些了解好吧。

我也对 POM 文件感到不知所措。我如何知道我需要哪些依赖项才能开始使用 Web 应用程序?或者这是否包含在正确的原型中(如果我找到了?)

我使用 Glassfish 作为应用服务器、Eclipse、EJB、JPA 和 JSF。目前仅从书籍示例中学习。

【问题讨论】:

  • 如果你从零开始想学 Java,暂时忽略 Maven!不需要使用,IDE(无论是 Netbeans 还是 Eclipse)提供了您需要的一切。当涉及到现实生活中的项目时,Maven 很有趣 - 只是一个提示,以便您可以从待办事项列表中删除一项技术:-)

标签: java eclipse jakarta-ee maven


【解决方案1】:

嗯,要完整回答您的问题,需要一整本书才能独立完成,但这里有一些建议。

  • Java EE 应用程序的概念表示使用一个或多个 Java EE API 实现并需要 Java EE 应用程序服务器来运行的任何类型的 Java 应用程序。 Java API 是这样的:Servlet、JSP、EJB、JPA 等。这些 API 的实现通常由应用程序服务器提供(如 Tomcat 有 servlet 和 JSP 实现,Glassfish 也有这些以及 EJB 等)。假设有非应用服务器 Java EE API 实现,例如 Hibernate 的 JPA 实现。因此,简而言之,如果您在应用程序中使用其中一些 API 实现并将其部署到某个应用程序服务器(如 Tomcat、Glassfish、JBoss AS 等)中,那么您就有了一个 Java EE 应用程序。

    • 我之所以告诉你这一切,是因为在现实中,大多数项目管理工具(如 Eclipse、Maven 等)都使用 Web 应用程序、EJB 模块、动态 Web 项目等这些细分作为自定义确定您的应用程序将使用哪组 Java EE API 的范围。 IE。 Web 应用程序或动态 Web 项目更可能使用 Servlet 和 JSP API,EJB 模块将(呃)使用 EJB API 等等。正如我所说,这些是球场教派。动态 Web 应用程序也可以使用 EJB 或 JPA,这不是一成不变的。

    • 当您使用 Eclipse 或 Maven 等这些工具中的任何一个来启动上述命名项目中的一个时,例如 Elcipse 中的动态 Web 项目或带有 Maven 的标准 Web 应用程序,相应的工具将将常识依赖项添加到您的模板项目中(如本例中的 Servlet 和 JSP),然后让您从这里处理。

    • 这里的想法是在项目开始时使用它之前了解所选工具的每种模板类型。就像您决定使用 Eclipse 并从一个动态 Web 项目开始一样,您应该检查 Eclipse 究竟要求您做什么,以及当您这样做时会做什么(它会询问您本地安装的 Java EE 应用程序服务器的位置。将引入诸如 Servlet 实现和 JSP 实现等依赖项)。或者如果你选择了 Maven,并开始一个标准的 web 项目,你应该检查一下它通过 pom.xml 文件添加到你的项目中的依赖项,那个 pom.xml 文件的基本功能是什么等等。你还应该检查一下当你告诉这些工具如何部署你的应用程序时,它是否使用 Java EE 服务器的一些热部署功能,它是否需要凭据才能首先访问该服务器等等。

我的简短建议是从非常基本的示例开始:安装 Tomcat(推荐版本 7),启动 Eclipse 以进行 Java EE 开发,将 Tomcat 安装添加到 Eclipse 配置中,启动使用该 Tomcat 的动态 Web 项目作为应用程序服务器,只做一些基本的 servlet 和 JSP 页面,然后使用 Eclipse 将该傻瓜部署到 tomcat 并运行它。然后你可以分支到更高级的东西,比如用 Maven 做同样的事情,将 Maven 项目与 Eclipse 集成,添加更多的 Java EE 东西(比如 JPA 实现)等等。

【讨论】:

    【解决方案2】:

    http://blogs.oracle.com/arungupta/entry/web_app_development_using_java 提供了有关如何使用 Eclipse 和 GlassFish 创建 Java EE 6 项目的完整说明。

    或者,您也可以使用 NetBeans 创建 Java EE 6 项目,如下所述:

    http://blogs.oracle.com/arungupta/entry/screencast_37_java_ee_6

    【讨论】:

      【解决方案3】:

      我可以从 Dynamic Web 项目、Maven 项目、EJB 项目中进行选择, EAR 应用程序等。如果我想做一个 内部有 EJB/JPA 和 JSF 的应用程序(Web 应用程序)?

      在 EJB 3.1 规范之前,无法在 war 文件中部署 EJB,但现在可以了。因此,对于快速原型,您可以使用 war 文件而不是 ear 文件,如果这就是您所需要的并且您更熟悉它的话。当然你也可以将它部署在 .ear 文件中。

      我相信 Eclipse 中的 Dynamic Web 项目会生成一个 .war 文件,您可以将其部署在您的 AS 中。

      如果您使用 Maven,您也可以预先使用 Maven 创建项目,然后使用 Maven 导入(通过 M2Eclipse 插件)。这对我来说效果很好。然后,使用Glassfish Maven plugin,您可以通过命令行将您的应用部署到 Glassfish。

      我也对 POM 文件感到不知所措。我怎么知道哪个 我只需要开始使用 Web 应用程序吗?或者是 这包含在正确的原型中(如果我找到了?)

      您至少需要在“已提供”范围内的 Java EE 依赖项,因为服务器可能会为您提供这些。这样,它们将在编译模式下可供您使用。例如,JBoss Java EE 5 堆栈的堆栈如下(不确定 GlassFissh 依赖项,但重要的是不要将库包含在 .ear / .war 中以避免库冲突):

      <dependency>
          <groupId>org.apache.openejb</groupId>
          <artifactId>javaee-api</artifactId>
          <version>5.0-1</version>
          <scope>provided</scope>
      </dependency>
      

      补充:正如你所说,这在开始时可能会让人不知所措,我认为this 是关于如何设置 Glassfish / Java EE 项目的好资源。挑选你感兴趣的部分,祝你好运。

      【讨论】:

        【解决方案4】:

        我要问你的第一件事是为什么你要学习这么多技术。如果您的目的是找到一份工作,根据我的经验,公司的趋势是远离 Java EE,转向更简单的解决方案。例如,应用程序服务器对于大多数组织和 Tomcat(或其他 Web 服务器)来说都是多余的,而 Tomcat(或其他 Web 服务器)使用 Spring 和独立 JMS 服务器等辅助技术取代了功能齐全且更复杂的 Java EE 服务器。

        我认为,当您开始并远离 IDE、复杂的构建、EAR 等时,最好专注于核心概念和更简单的技术。相反,从一两种技术开始(例如,一个 hello Tomcat 应用程序一个简单的 Ant 构建)并根据需要逐渐添加每种技术。更好的是,如果你有一个现实世界的问题要解决,即使它不付钱。

        大多数公司(至少是那些有技术线索的公司)宁愿雇佣一个了解像 JSF 这样的技术会增加什么价值以及以什么复杂性为代价的程序员,而不是那些简历上有很多首字母缩略词的人。

        【讨论】:

          【解决方案5】:

          How to start a new web app project in Eclipse with Maven?

          只需键入“archetype:generate”并选择 JSF + EJB/JPA(如果可用)。

          这个看起来不错:360:远程-> org.jboss.weld.archetypes:weld-jsf-jee(用于创建 使用 JSF 2.0、CDI 1.0、EJB 3.1 和 JPA 2.0 的 Java EE 6 应用程序 (包括持久化单元))

          Appfuse 更加完整,可以嵌入你永远不会用到的东西 使用并且您必须删除。

          之后 mvn eclipse:eclipse 就可以在 eclipse 中加载项目了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-07-31
            • 2017-06-05
            • 2018-03-05
            • 2022-01-14
            • 1970-01-01
            • 2023-04-04
            • 1970-01-01
            相关资源
            最近更新 更多