如何在Eclipse中启动一个Java EE 6项目

9

我最近开始学习Java EE 6,之前已经学了几年的Java SE(还有其他语言)。我买了不同的关于Maven、EJB、JSF、Glassfish等方面的书籍(虽然没有全部阅读),但是我对创建一个项目的复杂性感到非常压抑。

如果我想从“零”开始在Eclipse中创建一个项目,应该怎么做呢?我可以选择动态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是很有趣的 - 这只是一个提示,让你可以从待办列表中删除一项技术 :-) - home
5个回答

11

嗯,对于你的问题做出完整的回答需要写一本书,但是以下是一些要点。

  • 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模块、Dynamic Web项目等,作为自定义名称,以建立您的应用程序将使用哪个集合的Java EE API的大体范围。例如,Web应用程序或Dynamic Web项目更可能使用Servlet和JSP API,EJB模块会使用EJB API等等。这些都是极限称呼。动态Web应用程序也可以使用EJB或JPA,这不是铁板钉钉的。

    • 当您使用Eclipse或Maven等工具启动其中之一的这些已命名的项目时,例如在Eclipse中启动Dynamic Web项目或使用Maven启动标准Web应用程序,该相应工具将向您的模板项目添加常规依赖项(在此情况下为Servlet和JSP),然后让您从这里开始处理。

  • 在开始项目之前,了解所选工具的每种模板类型是一个好主意。例如,如果您决定使用 Eclipse 并从 Dynamic Web Project 开始,您应该查看当您这样做时 Eclipse 要求您提供什么,并且会执行哪些操作(它将要求您提供本地安装的 Java EE 应用服务器的位置,从中拉取 Servlet 实现和 JSP 实现等依赖项)。或者,如果您选择 Maven 并启动标准 Web 项目,则应该检查它通过 pom.xml 文件添加到您的项目中的依赖项,THAT pom.xml 文件的基本功能等。您还应该了解每个工具在您告诉它部署应用程序时如何工作,它是否使用Java EE服务器的一些热部署功能,首先需要凭据来访问该服务器等。

  • 我的简短建议是从最基本的示例开始:安装 Tomcat(推荐版本为 7),启动 Eclipse 进行 Java EE 开发,将该 Tomcat 安装添加到 Eclipse 配置中,启动一个使用该 Tomcat 作为应用服务器的 Dynamic Web 项目,并创建一些基本的 servlet 和 JSP 页面,然后使用 Eclipse 将其部署到 Tomcat 并运行它。然后您可以转向更高级的内容,比如使用 Maven 做同样的事情,将 Maven 项目与 Eclipse 集成,添加一些更多的 Java EE 内容(如 JPA 实现)等等。


    1
    我可以选择动态Web项目、Maven项目、EJB项目、EAR应用程序等。如果我想制作一个包含EJB/JPA和JSF的应用程序(Web应用程序),我应该使用哪个?
    在EJB 3.1规范之前,不可能在war文件中部署EJBs,但现在可以了。因此,如果您只需要快速原型,并且您更熟悉它,可以使用war文件而不是ear文件。当然,您也可以将其部署在.ear文件中。
    我相信Eclipse中的动态Web项目会生成一个.war文件,您可以在AS中部署它。
    如果您正在使用Maven,您也可以预先使用Maven创建您的项目,然后使用Maven(通过M2Eclipse插件)导入。这对我来说非常有效。然后,使用Glassfish Maven插件,您可以通过命令行将应用程序部署到Glassfish。
    我也被POM文件所压倒。我如何知道我需要哪些依赖项才能开始进行Web应用程序?或者这是否包含在正确的archetype中(如果我找到了一个)?

    你需要将Java EE依赖项至少设置为“provided”范围,因为服务器可能会为你提供这些依赖项。这样,在编译模式下它们就可以为你所用了。例如,JBoss Java EE 5堆栈的依赖项如下(不确定GlassFish依赖项,但重要的是不要在你的.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项目的好资源。选择你感兴趣的部分,祝你好运。


    1

    我首先要问你的是,为什么要学习这么多技术。如果你的目的是找工作,在我的经验中,公司越来越倾向于简单的解决方案而远离Java EE。例如,对于大多数组织来说,应用服务器是过度杀伤力的,Tomcat(或其他Web服务器)与Spring和独立的JMS服务器等辅助技术取代了功能齐全且更加复杂的Java EE服务器。

    我认为,当你开始学习时,更好的选择是专注于核心概念和简单的技术,并远离IDE、复杂的构建、EAR等。相反,从一个或两个技术开始(例如使用简单的Ant构建的hello Tomcat应用程序),并逐渐添加每个技术,直到你发现需要它们。最好的情况是,如果你有一个实际的问题需要解决,即使它不赚钱。

    大多数公司(至少那些有技术头脑的公司)更愿意雇用一个理解JSF等技术增加价值和复杂性成本的程序员,而不是一个简历上有很多缩写的人。


    1

    0

    如何在Eclipse中使用Maven启动新的Web应用程序项目?

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

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

    Appfuse相当完整,可能会嵌入您永远不会使用并且必须删除的东西。

    之后运行mvn eclipse:eclipse以能够在eclipse中加载项目。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接