在做了几年的Java (和其他语言)之后,我最近开始学习JavaEE6。我已经买了关于Maven、EJB、JSF、Glassfish等的不同书籍(虽然还没有全部读完),我对仅仅做一个项目的复杂性感到完全不知所措。
在eclipse中,我如何从头开始一个项目(而不是从书中的示例中复制)?我可以从动态Web项目、Maven项目、EJB项目、EAR应用程序等中进行选择。如果我想创建一个内部包含EJB/JPA和JSF的应用程序(web应用程序),我应该使用哪一个?
我知道Standard Maven Directory布局和原型,但是我不知道应该选择哪种布局和原型。当然,我知道有很多方法可以做到这一点,这取决于我将使用它做什么,但我正在学习Java EE 6,所以我想至少也了解一些如何设置基本项目的知识。
我也被POM文件搞得不知所措。如何知道开始使用web应用程序需要哪些依赖项?或者这包含在正确的原型中(如果我找到了一个?)
我使用Glassfish作为应用服务器、Eclipse、EJB、JPA和JSF。目前仅从书本示例中学习。
发布于 2011-10-09 03:40:05
要想完整地回答你的问题,需要一本完整的书,但这里有一些建议。
Java是Java应用程序的概念,它表示使用一个或多个Java实现并需要Java应用服务器运行的任何类型的应用程序。Java API是这样的: Servlet、JSP、EJB、JPA等。这些API的实现通常是由应用服务器提供的(就像Tomcat有servlet和JSP实现,Glassfish也有servlet和JSP实现以及EJB等)。比如说,有一些非应用服务器Java实现,比如Hibernate的JPA实现。因此,简而言之,如果您在应用程序中使用其中一些API实现,并将其部署到诸如Tomcat、Glassfish、JBoss AS等应用程序服务器中,那么您就拥有了一个Java应用程序。
- I've told you all this because in reality, most of the project management tools (like Eclipse, Maven, etc) use these subdivisions like Web-Application, EJB Module, Dynamic Web Project etc, as a custom denomination that establishes the ball park of what set of Java EE APIs your application will use. I.E. a Web Application or Dynamic Web Project will more likely use Servlet and JSP APIs, an EJB Module will (duh) use the EJB APIs and so on. These are, as I said, ball park denominations. A Dynamic Web Application can use EJB or JPA as well, it's not like it's written in stone.
- When you use either of these tools such as Eclipse or Maven, to start one of these above mentioned, denominated projects, such as a Dynamic Web Project in Elcipse or a Standard Web Application with Maven, that respective tool will add the common sense dependencies to your template project (like Servlet and JSP in this case), and then let you handle it from here.
- The idea here is to understand each type of template of your chosen tool before you use it at the start of your project. Like if you decide to use Eclipse and start with a Dynamic Web Project, you should check out what exactly Eclipse asks of you and does when you do that (it will ask you for the location of a locally installed Java EE application server from where it will pull in such dependencies as a Servlet Implemnentation and a JSP implementation amongs others). Or if you chose Maven, and start a standard web project, you should check out what dependencies it adds to your project via the pom.xml file, what the basic functions of THAT pom.xml file are, etc. You should also check out how each of these tools deploys your application when you tell it to do that, does it use some hot deploy feature of your Java EE server, does it need credentials to access that server first etc.
我的简短建议是从最基本的示例开始:安装Tomcat (推荐使用版本7),启动Eclipse for Java EE Development,将tomcat安装添加到Eclipse配置中,启动一个使用Tomcat作为应用程序服务器的动态Web项目,只做一些基本的servlet和JSP页面,然后使用Eclipse将这个笨蛋部署到Tomcat并运行它。然后,您可以转向更高级的东西,比如用Maven做同样的事情,将Maven项目与Eclipse集成,添加更多的Java EE东西(比如JPA实现),等等。
发布于 2011-10-09 03:31:23
我可以从动态网络项目,Maven项目,EJB项目,EAR应用程序等中选择。如果我想要制作一个内部包含EJB/JPA和JSF的应用程序(web应用程序),我应该使用哪一个?
在EJB3.1规范之前,不可能在war文件中部署EJB,但是现在可以了。因此,对于快速原型,您可以使用war文件而不是ear文件,如果这是您需要的全部内容,并且您对它更加熟悉。当然,您也可以将其部署在.ear文件中。
我相信Eclipse中的Dynamic Web项目会生成一个.war文件,您可以将其部署到AS中。
如果你正在使用Maven,你也可以预先使用Maven创建你的项目,然后使用Maven导入(通过M2Eclipse插件)。这对我来说很好用。然后,使用Glassfish Maven plugin,您可以通过命令行将您的应用程序部署到Glassfish。
我也被POM文件搞得不知所措。如何知道开始使用web应用程序需要哪些依赖项?或者这包含在正确的原型中(如果我找到了一个?)
您至少需要在“提供的”作用域中使用Java依赖项,因为服务器可能会为您提供这些依赖项。这样,您就可以在编译模式下使用它们。例如,用于JBoss JavaEE5堆栈的代码如下所示(不确定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项目的一个很好的资源。挑选你感兴趣的部分,祝你好运。
发布于 2011-10-09 04:21:15
我要问你的第一件事是,你为什么要学习这么多技术。如果您的目的是找一份工作,根据我的经验,公司中有一种趋势,即远离Java,转向更简单的解决方案。例如,对于大多数组织和Tomcat (或其他web服务器)来说,应用程序服务器使用Spring和独立JMS服务器等辅助技术取代了功能齐全且复杂得多的Java EE服务器。
我认为,在开始时关注核心概念和更简单的技术会更好,远离IDE、复杂的构建、EAR等。相反,从一两种技术开始(例如,具有简单Ant构建的hello Tomcat应用程序),并在您发现需要时逐步添加每种技术。如果你有一个现实世界的问题要解决,那就更好了,即使它没有回报。
大多数公司(至少是那些有技术线索的公司)宁愿雇佣一名程序员,他知道像JSF这样的技术增加了什么价值,以及复杂性的代价是什么,而不是简历上有很多缩写的人。
https://stackoverflow.com/questions/7699132
复制相似问题