tomee

警告:我不是Spring Boot的专家。 我发现很多事情对此非常有趣,并且当然可以真正改善您的日常工作。 而且,我对Spring Boot没有任何反对,也没有开发或使用它的人。 但是我认为社区高估了该产品。

一年前,我开始收到很多有关博客文章,推文和有关Spring Boot信息的链接。 在他的网站上,您可以阅读:

通过Spring Boot,可以轻松地创建独立的,生产级的基于Spring的应用程序,您可以“运行”它们。

看来这件事已经彻底改变了Java世界。

例如,Spring Boot中的Spring MVC(以及RESTful)应用程序如下所示:

@Controller
@EnableAutoConfiguration
public class SampleController {@RequestMapping("/")@ResponseBodyString home() {return "Hello World!";}public static void main(String[] args) throws Exception {SpringApplication.run(SampleController.class, args);}
}

如您所见,魔术发生在SpringApplication类中,该类启动了嵌入式Tomcat或Jetty,并使用Spring东西注册了该控制器。 我知道令人印象深刻的几行内容就是您可以准备使用端点。

但是我不知道自己是否可以在JavaEE世界中使用相同的方法,并且具有相同的低级和轻量级需求。 答案是绝对的。 我刚刚创建了一个非常小的原型/概念验证来证明这是可能的。

另外,请不要误会我的意思,除了自包含的应用程序(例如监视,执行器或工件依赖项解析)以外,Spring Boot还提供了更多其他功能。 但是这些东西仅仅是与其他技术的集成,我的示例是在一个半小时内从零开始开发的,所以不要指望可以使用Spring Boot。

首先要选择的是要使用的应用程序服务器,在这种情况下,毫无疑问,最适合此任务的是Apache TomEE。 它是经过认证的Web配置文件Java EE服务器,需要1秒钟启动时间,并且可以使用默认的Java内存参数。

因此,我在pom.xml文件中添加了tomee依赖项。

<dependencies><dependency><groupId>org.apache.openejb</groupId><artifactId>tomee-embedded</artifactId><version>1.7.1</version></dependency><dependency><groupId>org.apache.openejb</groupId><artifactId>openejb-cxf-rs</artifactId><version>4.7.1</version></dependency><dependency><groupId>org.apache.openejb</groupId><artifactId>tomee-jaxrs</artifactId><version>1.7.1</version></dependency><dependency><groupId>org.jboss.shrinkwrap</groupId><artifactId>shrinkwrap-depchain</artifactId><version>1.2.2</version><type>pom</type></dependency></dependencies>

在以前的嵌入式版本(1.7.1)中,您只能部署文件中包含的应用程序,不能像在Tomcat中一样以编程方式添加Servlet。 嵌入式tomee API在不久的将来可能会改变,但是现在,我们将使用ShrinkWrap以编程方式创建这些部署文件。

这就是我们要做的:

import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;@Stateless
@Path("/sample")
public class SampleController {@GET@Produces("text/plain")public String sample() {return "Hello World";}public static void main(String args[]) {TomEEApplication.run(HelloWorldServlet.class, SampleController.class);}
}

请注意,我们仅导入JavaEE类,其数量与Spring Boot一号相比减少了。 只需2秒钟即可准备使用该应用程序。 请记住,您可以使用Web配置文件规范以及JAX-RS或JMS提供的任何功能。 因此,例如,您可以使用JPA,Bean验证,EJB,CDI等。

而且TomEEApplication里面有什么? 只有70行的课程会让您惊讶:

public class TomEEApplication {private static void startAndDeploy(Archive> archive) {Container container;try {Configuration configuration = new Configuration();String tomeeDir = Files.createTempDirectory("apache-tomee").toFile().getAbsolutePath();configuration.setDir(tomeeDir);configuration.setHttpPort(8080);container = new Container();container.setup(configuration);final File app = new File(Files.createTempDirectory("app").toFile().getAbsolutePath());app.deleteOnExit();File target = new File(app, "app.war");archive.as(ZipExporter.class).exportTo(target, true);container.start();container.deploy("app", target);container.await();} catch (Exception e) {throw new IllegalArgumentException(e);}registerShutdownHook(container);}private static void registerShutdownHook(final Container container) {Runtime.getRuntime().addShutdownHook(new Thread() {@Overridepublic void run() {try {if(container != null) {container.stop();}} catch (final Exception e) {throw new IllegalArgumentException(e);}}});}public static void run(Class> ... clazzes) {run(ShrinkWrap.create(WebArchive.class).addClasses(clazzes));}public static void run(WebArchive archive) {startAndDeploy(archive);}
}

如您所见,这实际上是一段简单的代码,例如,应用程序的配置或名称是经过硬编码的,但是您会发现,通过一些小的简单更改,您就可以开始配置服务器,应用程序等。

总而言之,Spring Boot当然很酷,但是通过非常简单的步骤,您就可以在JavaEE世界中拥有相同的功能。 我们(Apache TomEE的贡献者)将开始着手这一工作并扩大这个想法。

因此,不要因为Spring Boot而低估Java EE。

翻译自: https://www.javacodegeeks.com/2014/09/one-jar-to-rule-them-all-apache-tomee-shrinkwrap-javaee-boot.html

tomee

tomee_一罐将其全部统治:Apache TomEE + Shrinkwrap == JavaEE引导相关推荐

  1. 一个罐子统治一切:Apache TomEE + Shrinkwrap == JavaEE引导

    警告:我不是Spring Boot的专家. 我发现很多事情对此非常有趣,并且当然可以真正改善您的日常工作. 而且,我对Spring Boot没有任何反对,也没有开发或使用它的人. 但是我认为社区高估了 ...

  2. tomee_微服务系列:MicroProfile和Apache TomEE

    tomee 介绍 MicroProfile是由知名供应商于2016年9月发起的一项计划,目的是基于JEE平台构建微服务架构. 任务是针对微服务架构优化企业Java . 开发人员可以使用这种体系结构,通 ...

  3. 微服务系列:MicroProfile和Apache TomEE

    介绍 MicroProfile是一项由知名供应商于2016年9月发起的举措,目的是基于JEE平台构建微服务架构. 任务是针对微服务架构优化Enterprise Java . 开发人员可以利用这种体系结 ...

  4. mongodb+java_Java EE + MongoDb与Apache TomEE和Jongo Starter项目

    mongodb+java 知道MongoDB和Java EE ,但是您不确切地知道如何将它们集成在一起? 您是否阅读了很多有关该主题的内容,但没有找到适合该目的的解决方案? 这个入门项目适合您: 您将 ...

  5. Apache TomEE + JMS。 这从未如此简单。

    我记得J2EE (1.3和1.4)的过去,使用JMS启动项目非常困难. 您需要安装JMS 代理 ,创建主题或队列 ,最后使用服务器配置文件和JNDI开始自己的战斗. 感谢JavaEE 6及其它,使用J ...

  6. Apache TomEE(和Tomcat)的自签名证书

    可能在大多数Java EE项目中,您将拥有具有SSL支持( https )的部分或整个系统,因此浏览器和服务器可以通过安全连接进行通信. 这意味着在处理数据之前,已发送的数据已加密,传输并最终解密. ...

  7. Java EE + MongoDb与Apache TomEE和Jongo Starter项目

    知道MongoDB和Java EE ,但是您不知道如何将两者集成在一起? 您是否阅读了很多有关该主题的内容,但没有找到适合该目的的解决方案? 这个入门项目适合您: 您将学习如何以一种时尚的方式使用Mo ...

  8. 开式蓄冷罐与闭式蓄冷罐_一罐将其全部统治:Arquillian + Java 8

    开式蓄冷罐与闭式蓄冷罐 借助Java 8 ,已实现了许多新的语言改进,以简化开发人员的生活. 在我看来, Java 8的最大优点之一是,在某些情况下,已开发的代码看起来比使用以前的方法更漂亮,我指的是 ...

  9. 一罐将其全部统治:Arquillian + Java 8

    借助Java 8 ,已实现了许多新的语言改进,以简化开发人员的生活. 在我看来, Java 8的最大优点之一是,在某些情况下,已开发的代码看起来比使用以前的方法更漂亮,我指的是Lambdas和Meth ...

最新文章

  1. php csv文件的读取,写入,输出下载操作详解
  2. c/c++ ide 简介
  3. Windows下visual studio code搭建golang开发环境
  4. ExcelJS —— Node 的 Excel 读写扩展模块2
  5. 天文学家用AI探测宇宙:借助图像识别探索银河系中的红巨星
  6. java单链表选票_Hackerrank Practice
  7. 使用 Sixel 图形格式在终端中显示缩略图
  8. maven项目建立pom xml报无法解析org apache maven plugins maven resource
  9. 使用epublib自动生成epub文件
  10. JAVA中在switch语句里使用枚举
  11. 科锐c语言,科锐C语言学习视频,资源教程下载
  12. matlab实现带通滤波器的方法,数字信号处理课程设计---带通滤波器的设计及其MATLAB实现.doc...
  13. 《大数据》2022年第4期目次摘要
  14. win10+ASP.NET(VS2019)连接sqlsever数据库
  15. CYUSB3014 I2C eeprom 启动
  16. android 7双排设置菜单,联想拯救者电竞手机优化横屏UI 设置菜单呈左右双排显示...
  17. Integer.valueOf、intValue、Integer.parseInt使用
  18. maxwell 激励设置报错
  19. GridView 重复渲染问题
  20. 多种方法实现CT肺实质的自动分割

热门文章

  1. P1315,jzoj3029-观光公交【费用流】
  2. 【贪心】数据备份(P6320)
  3. 【LCT】大融合(luogu 4219)
  4. [USACO]Sprinklers 2: Return of the Alfalfa P(网格DP)
  5. 一分钟理解Java公平锁与非公平锁
  6. Windows 通过 SecureCRT 8.x 上传文件到Linux服务器
  7. 10亿个数中找出最大的10000个数
  8. Spring JSR-250 注释
  9. selenium以及chromdrive安装
  10. 三个水桶(看了三遍,想了五遍!)