Apache TomEE(发音同“tommy”)是一个新的JavaEEServer,由Apache软件基金会开辟,你大约可以从它的名字猜到,它是从Tomcat而来,同时参加的JavaEE的特点:TomEE=Tomcat+java EE。因而,它与其他的使用Server有甚么分歧呢?
有一些使用Server是运用Tomcat供给的servlet功用,这不是甚么坏事——Tomcat是最好的servlet容器。TomEE的办法就有点分歧了——作为对间接把Tomcat嵌入到使用Server的代替,TomEE嵌入了EJB、CDI和其他JavaEE特点到Tomcat里,给你一个完好契合Web Profile的Server但同时也保存了Tomcat的指导位置。在没解压的Tomcat里,参加了本人的jar包、一个对conf/server.xml的单一监听器,然后紧缩到备份里,经过如许把TomEE的包创立而成。
有三个运用TomEE开辟的指点准绳。 他们是:
每条都对我们很主要,可是“是Tomcat的”部分特别如斯——我们参加特点到Tomcat,同时,主要的是TomEE没有丧失与Tomcat的一致性。(TomEE下)的安排机制和常用的Tomcat一样(只需把你的。war文档放到webapps/folds)。资本任务在异样的方法下——你可使用TomEE的设置装备摆设文件,可是界说在server.xml或许在你使用顺序里的context.xml异样可以设置装备摆设。一些之前不成能做到的或许是需求很大任务量的工具如今可以做到了,例如让一切JavaEE的平安观点能像WebService或许EJB的平安无缝地任务在Tomcat Realms上。
这不单单是把工作在Server上做的更好的哲学,还供给了其他的优势。由于TomEE仅仅是Tomcat的一个扩大版本,任何能在Tomcat上运用的Tools,如像Eclipse WTP一样的IDETools,全体都能用在TomEE上。
TomEE的确是一个真实的TomcatServer,它把一切JavaEE Web Profile特点加到Tomcat上同时没有去掉任何特征。
形式(flavours)
Apache TomEE有3种分歧的任务形式可使用:Webprofile,JAX-RS和Plus。Webprofile供给了最小的分支版本(仅仅27MB)同时它完整契合JavaEE Web Profile。JAX-RS树立在Web Profile上,用一个修整过的Apache CXF版本参加对JAX-RS的支撑,同时也包管对Web Profile的支撑。Plus的包供给了TomEE可用的全体特点,包含了JMS、JAX-WS和JCA,但此次不合错误JavaEE的支撑有所包管。
下面的表格展现了3个分歧的形式所支撑的分歧特点。
Feature | WebProfile | JAX-RS | Plus |
Servlet 3.0 | Yes | Yes | Yes |
CDI | Yes | Yes | Yes |
EJB | Yes | Yes | Yes |
JPA | Yes | Yes | Yes |
JSF | Yes | Yes | Yes |
JSP | Yes | Yes | Yes |
JSTL | Yes | Yes | Yes |
JTA | Yes | Yes | Yes |
JavaMail | Yes | Yes | Yes |
Bean Validation | Yes | Yes | Yes |
JAX-RS | No | Yes | Yes |
JAX-WS | No | No | Yes |
JMS | No | No | Yes |
Connector | No | No | Yes |
让我开端吧
要开端运用,失掉 Apache TomEE 下载页面下载一个分发包,在撰写本文的时分,最新的版本是1.5.0。一旦下载完成,将zip文件解压到你的机械上的某一名置。假如你看看文件夹构造,你可能会顿时留意到TomEE何等像Tomcat规矩的一个拷贝。经常使用的 shell/batch 剧本在bin/目次下,TomEE设置装备摆设文件在conf/目次下,使用顺序宣布时经过拷贝.war文件到 webapps/目次下。经过改动到bin/文件夹并运转./catalina.sh文件以启动TomEE (假如你是用的Windows那末就是catalina.bat文件)。
在一台惯例设置装备摆设的机械上,TomEE 启动普通需求几秒钟。一旦启动,翻开阅读器输出 http://localhost:8080。假如一切正常启动,将会显示出默许的Tomcat使用顺序。在该使用顺序里有一个链接到TomEE把持台的额定按钮。TomEE把持台供给了一些页面和一个JNDI阅读器,在这些页面上能对你的启动顺序能否准确实行核实。
运用Eclipse来搭建开辟情况
让我们启动IDE,来演示一个容易的顺序。我们这里的IDE运用Eclipse,其它的IDE,像Netbeans 和Intellij IDEA可以以异样的方法实行设置装备摆设。 我有 一个带有WTP的Java EE Eclipse 包,可以启动多个分歧的Server,宣布你的代码到Server上,而且主动从头安排你所做的任何改动。在Eclipse中启动TomEE和你启动Tomcat是类似的进程。
起首,在Server视图下选择‘New server’。
然后,选择 Apache Tomcat 7,将Server称号改成你爱好的称号:
在导游的下一页, ‘select the installation directory’选择你解压的TomEE装置包的位置:
假如你曾经设置装备摆设Eclipse运用任务区元数据来接收TomEE的平安,一个好的建议是从TomEE包的conf/ 途径里复制文件到任务区。当运转在这类形式下,设置装备摆设的文件会从任务区的conf/途径读代替替本来TomEE的conf途径。WTP插件对主动把Tomcat的一些设置装备摆设文件复制到任务区很有协助,但不会取得tomee.xml或许system.properties。
要复制需求的文件到任务区,右键点击在Servers项面前目今的localhost-config文件夹,然后从conf/途径导入文件。
默许状况下,在web.xml文件中,TomEE没有为JSP编译设置开辟者参数,也就意味着即便你保管了对他们的更改,JSP也不会更新。为了改动这一点,翻开在项目资本治理器里的 localhost-config 文文件夹,位于Servers->Tomcat v7.0 Server下的web.xml文件 ,更改jsp servlet,将开辟者形式设为true,如列表1所示。
列表1:web.xml-为JSP设置装备摆设开辟者形式
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>development</param-name> <param-value>true</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
那末如今我们就有一个设置装备摆设好的开辟情况了,来看下一个容易的使用例子吧。Apache TomEE 里有一些使用例子来展现一些JavaEE里可用的特点。如今大约曾经有100个例子了,这些都能开端进修新的JavaEE特点授与办事。这些例子都可以在TomEE SubVersion堆栈里看到。我计划在本文运用moviefun这个例子。完好的源代码在http://tomee.apache.org/examples-trunk/moviefun/README.html。这个例子只是一个容易的web使用顺序,运用到一些Web Profile里的可用特点。
起首,使用有一个容易的POJO来代表一个Movie,这运用到JPA来存储和获得一个在数据库里的Movie。列表2显示了一个带有题目,导演,门户,年份,排名等属性的movie的POJO。
列表2: Movie 实体类
@Entity public class Movie implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String director; private String title; private int year; private String genre; private int rating; public Movie() { } // SNIP getter and setters below... }
运用JPA,供给了一个容易地能耐久化到数据库的工具。为了完成这一点,一个耐久化高低文需求注入到一个容易的EJB或许CDI bean,同时能被用来检索和耐久化Movie工具到数据库中。
Apache TomEE为EJB供给了从版本 1到版本3.1的支撑。EBJ3.0使EJB的创立较之前的版本愈加容易,版本3.1更进一步。此中一个新特征之一是“no-interface”视图,这意味着EJB session bean 不再需求供给接口。
列表3 列出了一个容易的无形态会话EJB,它运用JPA2可以治理存储和获得数据。这个EJB是一个运用了@Stateless来注解的容易POJO(这就是要使它成为EJB所要做的全体工具),和它有一个运用@PersistenceContext注解由TomEE注入的实体治理器。
列表3: 运用JPA2的无形态会话Bean
@Stateless public class MoviesBean { @PersistenceContext(unitName = "movie-unit") private EntityManager entityManager; public Movie find(Long id) { return entityManager.find(Movie.class, id); } public void addMovie(Movie movie) { entityManager.persist(movie); } public void deleteMovie(Movie movie) { entityManager.remove(movie); } public void deleteMovieId(long id) { Movie movie = entityManager.find(Movie.class, id); deleteMovie(movie); } public List<Movie> getMovies() { CriteriaQuery<Movie> cq = entityManager.getCriteriaBuilder().createQuery(Movie.class); cq.select(cq.from(Movie.class)); return entityManager.createQuery(cq).getResultList(); } }
这个类供给了一些容易办法,起首有拜托到实体治理器的查询,增加和删除办法。getMovies()办法经过结构一个容易的JPA2查询来从数据库中获得完好的Movie聚集。留意这里并没有援用事务的begin或commit语句。EJB的办法默许是事务型的,所以这里其实不需求间接援用。TomEE曾经在浪费你的工夫了。
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务