您的位置 首页 java

分布式系统开发微服务架构,基于JavaSE部署环境提供REST微服务

常用技术

如何构建 微服务 是一个大话题,本节不会涉及细节,后面章节将会详细讲解。

在单体架构中,项目经常会打包成WAR文件部署在Tomcat或者Jetty等Servlet容器中。这种部署形式被称为基于Servlet的部署(Servlet-based Deployment)。这种部署环境也是使用最广泛的。

有时我们会有这样的需求,当Web应用不是很复杂,对应用性能要求不是很高时,需要将HTTP Server内嵌在我们的Java程序中,只要运行 Java 程序,相应的HTTP Server也就跟着启动了,而且启动速度很快。这就是本节所介绍的基于 Java SE 部署环境(Java SE Deployment)来提供 Rest 微服务。

Jetty HTTP Server

Jetty是流行的Servlet容器和HTTP服务器。在此我们不深究Jetty作为Servlet容器的能力(尽管在我们的测试和实例中都使用它),因为作为基于 Servlet 部署模型它并没有什么特别,我们在这里只重点描述如何使用Jetty的HTTP服务器。

Jersey 和Jetty HTTP Server用法如下。

 URI baseUri = UriBuilder.fromUri("#34;).port(9998).build();
ResourceConfig config = new ResourceConfig(MyResource.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, config);
要加入容器扩展模块依赖。  
 <dependency>
<groupId>org. glassfish .jersey.containers</groupId>
<artifactId>jersey-container-jetty-http</artifactId>
<version>2.30</version></dependency>  

Jetty HTTP容器不支持部署在除了根路径是(“/”)的上下文路径。非根路径的上下文路径在部署中是被忽略的。

构建 REST 程序

构建一个实体类MyBean. java

 @XmlRootElement
public class MyBean {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}  

构建资源类MyResource.java,分别向外暴露各种类型资源,包括文本、XML、JSON格式。

 @Path("myresource")
public class MyResource {
/**
* 方法处理HTTP GET请求。返回的对象以“text/plain”媒体类型给客户端
*
* @return String 以 text/plain 形式响应
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!";
}
/**
* 方法处理HTTP GET请求。返回的对象以“ application /xml”媒体类型给客户端
** @return My pojo 以application/xml形式响应
*/
@GET
@Path("pojoxml")
@Produces(MediaType.APPLICATION_XML)
public MyBean getPojoXml() {
MyBean pojo = new MyBean();
pojo.setName("waylau.com");
pojo.setAge(28);
return pojo;
}
/**
* 方法处理HTTP GET请求。返回的对象以“application/json”媒体类型给客户端
*
* @return MyPojo 以 application/json 形式响应
*/
@GET
@Path("pojojson")
@Produces(MediaType.APPLICATION_JSON)
public MyBean getPojoJson() {
MyBean pojo = new MyBean();
pojo.setName("waylau.com");
pojo.setAge(28);
return pojo;
}
}  

程序的应用配置为RestApplication.java,该配置说明了要扫描的资源类所在的包路径com.waylau.rest.resource,以及支持JSON转换MultiPartFeature。

 public class RestApplication extends ResourceConfig {
public RestApplication() {
// 资源类所在的包路径
packages("com.waylau.rest.resource");
// 注册MultiPart
register(MultiPartFeature.class);
}
}  

主应用程序入口类App.java。

 public class App {
// HTTP server所要监听的uri
public static final String BASE_URI = "#34;;
/**
* Main method.
*
* @param args* @throws IOException
*/
public static void main(String[] args) throws IOException {
JettyHttpContainerFactory.createServer(URI.create(BASE_URI),
new RestApplication());
}
}  

运行

该程序编译后,会生成一个可执行的javase-rest-1.0.0.jar文件,用java -jar执行即可。

java -jar javase-rest-1.0.0.jar

该程序提供了如下API。

 ·。
·。
·。  

本节示例可以在 javase -rest项目下找到。

本文给大家讲解的内容是分布式系统开发实战:微服务架构,基于Java SE部署环境来提供REST微服务

  1. 下篇文章给大家讲解的是分布式系统开发实战:微服务架构实战:基于Spring Boot实现微服务;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

文章来源:智云一二三科技

文章标题:分布式系统开发微服务架构,基于JavaSE部署环境提供REST微服务

文章地址:https://www.zhihuclub.com/186267.shtml

关于作者: 智云科技

热门文章

网站地图