KumuluzEE入门教程

  KumuluzEE能让你快速有效地开发基于微服务架构的Java EE标准应用,能让你无需传统的应用服务器,只要运行Java地方都能运行JavaEE应用,可以放入Docker中,同时保持最小化配置,它能自动化JavaEE很多任务包括部署和配置,这样能克服微服务架构的很多缺点。它支持以下Java EE标准:

  • Servlet 3.1 (Jetty)
  • WebSocket 1.1 (Jetty)
  • JSP 2.3 (Jetty Apache Jasper)
  • EL 3.0 (RI UEL)
  • CDI 1.2 (RI Weld)
  • JPA 2.1 (RI EclipseLink)
  • JAX-RS 2.0 (RI Jersey)
  • JSF 2.2 (RI Mojarra)
  • Bean Validation 1.1 (RI Hibernate validator)
  • JSON-P 1.0 (RI JSONP)

这里使用Maven演示构建一个案例应用。

第一步,创建项目,使用下面Maven命令创建一个新的项目:

$ mvn -B archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DgroupId=com.acme.app \
    -DartifactId=app

一旦创建完成,框架涉及的各个模块都能被安装,框架会自动探测哪个模块在class path并将它们一起启动。下面是配置Maven的配置文件。

打开pom.xml,,正确配置KumuluzEE版本:

<properties>
    <kumuluzee.version>1.0.0</kumuluzee.version>
</properties>

将KumuluzEE的核心库包写入配置:

<dependency>
    <groupId>com.kumuluz.ee</groupId>
    <artifactId>kumuluzee-core</artifactId>
    <version>${kumuluzee.version}</version>
</dependency>

作为微服务实现,内嵌了一个HTTP服务器,KumuluzEE是使用Jetty作为servlet实现,因为其高性能和小巧的特点,如果你更换tomcat也可以:

<dependency>
    <groupId>com.kumuluz.ee</groupId>
    <artifactId>kumuluzee-servlet-jetty</artifactId>
    <version>${kumuluzee.version}</version>
</dependency>

现在我们可以编写一个简单Servlet,不需要web.xml,KumuluzEE会扫描元注释自己生成,代码如下:

package com.acme.app;
@WebServlet("/servlet ")
public class SimpleServlet extends HttpServlet {
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/plain ");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("Simple servlet ");
    }
}

KumuluzEE会使用webapp作为你资源resource根目录,作为配置文件,与标准的JavaEE区别是,javaEE是将webapp作为resource目录下。

在你哦资源根目录下创建一个webapp目录,增加案例index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8 " />
    <title>Hello KumuluzEE</title>
</head>
<body>
    <p>Microservices with Java EE</p>
</body>
</html>

编码工作至此完成,不需要main函数,因为kumuluzee-core包会提供一个带有main方法的com.kumuluz.ee.EeApplication类用来启动你的应用。如果你使用IDE,可以通过运行这个类来启动应用,如果从普通终端命令行其道,可以到target目录直接运行该类。

为了能够在target目录直接运行,需要将maven-dependency-plugin放入pom.xml配置,这会将所有依赖包拷贝到和你的类放在一起:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

运行maven install,然后你就能用下面命令行启动应用:

$ java -cp target/classes:target/dependency/* com.kumuluz.ee.EeApplication

在浏览器打开http://localhost:8080即可访问。

 

增加JAX-RS组件以创建REST服务

  为了激活JAX-RS需要加入下面依赖配置:

<dependency>
    <groupId>com.kumuluz.ee</groupId>
    <artifactId>kumuluzee-jax-rs-jersey</artifactId>
    <version>${kumuluzee.version}</version>
</dependency>

现在让我们编写一个RESTful服务代码:

package com.acme.app
@ApplicationPath("/ ")
public class RestApplication extends Application {
}

增加一个rest资源:

package com.acme.app;
@Path("/rest ")
public class RestResource {
    @GET 
    public Response getResources() {
        Map< String,  String> json = new HashMap<>();
        json.put("framework ", "KumuluzEE ");
        return Response.ok(json).build();
    }
}

运行这个应用,访问http://localhost:8080/rest,会看到:

{
    "framework ": "KumuluzEE " 
}

恭喜,现在你已经创建了简单轻量的Java EE应用,遵循微服务模式,能够容易部署到各种云环境中。

 

KumuluzEE项目

微服务专题