tomee_一罐将其全部统治:Apache TomEE + Shrinkwrap == JavaEE引导
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引导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将Auth0 OIDC(OAUTH 2)
- 下一篇: mac修改电脑硬盘格式(mac如何修改硬