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应用,遵循微服务模式,能够容易部署到各种云环境中。