BT

你的观点很重要! 快来参与InfoQ调研吧!

Apache OpenWebBeans 发布适用于 Java EE 微服务的 Meecrowave 服务器 1.0

| 作者 Michael Redlich 关注 6 他的粉丝 ,译者 刘志勇 关注 1 他的粉丝 发布于 2017年9月5日. 估计阅读时间: 11 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

Apache OpenWebBeansJSR 365 依赖注入(CDI 2.0)的一种实现,最近发布Meecrowave 微服务器的服务器 1.0 为 Java Persistence API(JPA)、Java Transaction API(JTA) 和 OAuth2 提供了内置支持,不再像 Java EE 那样需要完整的容器。

Meecrowave 基于一些现有的 Apache 项目之上构建,包括Tomcat(servlet)、OpenWebBeans(CDI),Johnzon(JSON-P 和 JSON-B)以及 CFX(JAX-RS)。

Meecrowave 最初于 2017 年 1 月发布,可用于微服务和独立应用。正如他们的博客中所定义的:

Meecrowave 可以通过 Maven 插件启动(为了易于开发),或以编程方式作为嵌入式服务器,作为应用程序与业务代码捆绑在一起,也可以作为启动可移植的 WAR 或 JAR 应用程序的执行者。

Meecrowave 由以下组件组成:

核心组件定义了一系列配置命令行界面(CLI)选项。还可以通过实现 Cli.Options 接口并使用 @CliOption 注释来定义自定义 CLI 选项,如下文所示。

Maven 和 Gradle 组件提供与核心配置和 CLI 选项对应的属性,并允许更改默认值。

入门

以下 JAX-RS 示例演示如何开始使用 Meecrowave 。

Defaults 类为示例应用程序定义了 fisrtNamelastName。请注意使用名为 app-default-name 的选项来扩展 CLI 以及相应的描述。

public class Defaults implements Cli.Options {
   @CliOption(name="app-default-name", description="The default first and last names for the app.")
   private String firstName="Michael";
   private String lastName="Redlich";
   public String getFirstName() {
       return firstName;
       }
   public String getLastName() {
       return lastName;
       }
   }

DefaultsProducer 类注入了 Meecrowave 的 Builder 类的实例,用于启动 Meecrowave 。通过 getExtension() 方法来获取 Defaults 类中的 @CliOption 注释中定义的名称和描述。

@Dependent
public class DefaultsProducer {
   @Inject
   private Meecrowave.Builder builder;
   @Produces
   @ApplicationScoped
   public Defaults defaults() {
       return builder.getExtension(Defaults.class);
       }
   }

SimpleApplication 类定义了主应用程序路径,redlich

@Dependent
@ApplicationPath("redlich")
public class SimpleApplication extends Application {
   }

SimpleEndpoint 类定义了端点、meecrowave、URL查询参数、firstNamelastName,以及一个内部类,Hello,用于为名称建模的 Java bean。

@Path("meecrowave")
@ApplicationScoped
public class SimpleEndpoint {
   @Inject
   private Defaults defaults;
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   public Hello sayFullName(@QueryParam("firstName") final String firstName,@QueryParam("lastName") final String lastName) {
       return new Hello(ofNullable(firstName).orElse(defaults.getFirstName()),ofNullable(lastName).orElse(defaults.getLastName()));
       }
   public static class Hello {
       private String firstName;
       private String lastName;
       public Hello() {
           }
       private Hello(final String firstName,final String lastName) {
           setFirstName(firstName);
           setLastName(lastName);
           }
       public String getFirstName() {
           return firstName;
           }
       public void setFirstName(final String firstName) {
           this.firstName = firstName;
           }
       public String getLastName() {
           return lastName;
           }
       public void setLastName(final String lastName) {
           this.lastName = lastName;
           }
       }
   }

编译并运行 Maven:

mvn clean package meecrowave:run

服务器运行后,完整的 URL 由主应用程序路径和端点组成,其可在浏览器中输入:

http://localhost:8080/redlich/meecrowave

注意显示 “Michael” 和 “Redlich” 的默认值。 URL 查询参数可用于更改在 firstNamelastName 中定义的默认值。以下是通过 URL 只更改 firstName 的示例:

http://localhost:8080/redlich/meecrowave?firstName=Rowena

下一个示例演示如何通过 URL 同时更改 firstNamelastName

http://localhost:8080/redlich/meecrowave?firstName=Barry&lastName=Burd

可以在 GitHub 上找到完整的示例应用程序。

Meecrowave 也有同伴项目:

  • Apache DeltaSpike(配置、异常处理、高级 CDI)
  • Apache Sirona(监控)

新的 CDI 2.0 规范的支持越来越受关注,Apache 最近发布了旨在使用新 CDI 2.0 规范的 OpenWebBeans 2.0.0

查看英文原文:Apache OpenWebBeans Releases Meecrowave Server Version 1.0 for Java EE-Based Microservices


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT