restlet_Restlet框架– Hello World示例

restlet

Restlet是用于Java平台的轻量级,全面的开源REST框架。 Restlet适用于服务器和客户端Web应用程序。 它支持主要的Internet传输,数据格式和服务描述标准,例如HTTP和HTTPS,SMTP,XML,JSON,Atom和WADL。 客户端库的GWT端口也可用。 (参考:http://en.wikipedia.org/wiki/Restlet)

你好世界的例子



  • 项目结构

Selection_021

  • RestletApplication.java
package com.restlet.demo.application;import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;import com.restlet.demo.resource.HelloWorldResource;public class RestletApplication extends Application{ public synchronized Restlet createInboundRoot() {Router router = new Router(getContext());router.attach("/helloWorld",HelloWorldResource.class );return router;}
}
  • ResponseParseFactory.java
package com.restlet.demo.core;import java.util.LinkedHashMap;import org.apache.log4j.Logger;
import org.json.simple.JSONValue;public class ResponseParseFactory {static Logger logger = Logger.getLogger(ResponseParseFactory.class);@SuppressWarnings({ "rawtypes", "unchecked" })public String getFailureJsonString(String msg){String jsonString = "";LinkedHashMap list = new LinkedHashMap();list.put("response_status", "false");list.put("result", msg+"");jsonString = JSONValue.toJSONString(list);logger.info(jsonString);return jsonString;}@SuppressWarnings({ "rawtypes", "unchecked" })public String getSuccessJsonString(String msg){String jsonString = "";LinkedHashMap list = new LinkedHashMap();list.put("response_status","true");list.put("result", msg);jsonString = JSONValue.toJSONString(list);logger.info(jsonString);return jsonString;}
}
  • BaseResource.java
package com.restlet.demo.resource;import java.util.HashMap;
import java.util.Map;import org.apache.log4j.Logger;
import org.json.JSONObject;
import org.json.simple.parser.JSONParser;
import org.restlet.data.Form;
import org.restlet.data.MediaType;
import org.restlet.data.Parameter;
import org.restlet.ext.json.JsonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;import com.restlet.demo.core.ResponseParseFactory;public abstract class BaseResource extends ServerResource{protected ResponseParseFactory parseFactory = null;protected Logger logger = Logger.getLogger(BaseResource.class);String jsonString="";@SuppressWarnings("rawtypes")@Post("json")public Representation doPost(Representation entity){Map json =null;jsonString = "";parseFactory = new ResponseParseFactory();try {JsonRepresentation represent = new JsonRepresentation(entity);JSONObject jsonobject = represent.getJsonObject();JSONParser parser = new JSONParser();String jsonText = jsonobject.toString();json = (Map) parser.parse(jsonText);jsonString = processRequest(json,"post");} catch (Exception e) {e.printStackTrace();jsonString = parseFactory.getFailureJsonString(e.getMessage());}return new StringRepresentation(jsonString, MediaType.APPLICATION_JSON);}@SuppressWarnings("rawtypes")@Getpublic Representation doGet(){Map json =null;parseFactory = new ResponseParseFactory();jsonString = "";try {json = getMapFromParam(getRequest().getResourceRef().getQueryAsForm());parseFactory = new ResponseParseFactory();jsonString = processRequest(json,"get");} catch (Exception e) {e.printStackTrace();jsonString = parseFactory.getFailureJsonString(e.getMessage());}return new StringRepresentation(jsonString, MediaType.APPLICATION_JSON);}public abstract String processRequest(Map json,String method);public static Map<String, String> getMapFromParam(Form form) {Map<String, String> map = new HashMap<String, String>();for (Parameter parameter : form) {map.put(parameter.getName(), parameter.getValue());}return map;}}
  • HelloWorldResource.java
package com.restlet.demo.resource;import java.util.Map;import com.restlet.demo.core.ResponseParseFactory;public class HelloWorldResource extends BaseResource {public String processRequest(Map json, String method) {String returnString = "" ;returnString = new ResponseParseFactory().getSuccessJsonString("Hello " + json.get("user"));return returnString;}
}
  • log4j.properties
# -----------------------------
# Appender to write to console.
# -----------------------------
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.CONSOLE.file =${catalina.base}/logs/regularLogging.log
log4j.appender.CONSOLE.MaxFileSize=100KB# ---------------------------------------------
# Appender to write to application log.
# ---------------------------------------------
log4j.appender.APPLICATIONLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APPLICATIONLOG.File=${catalina.base}/logs/restlet-demo.log
log4j.appender.APPLICATIONLOG.DatePattern='.'yyyy-MM-dd
#log4j.appender.APPLICATIONLOG.File=/home/devphp/public_html/restletframework/logs/APPLICATION-LOG.log
log4j.appender.APPLICATIONLOG.Encoding=UTF-8
log4j.appender.APPLICATIONLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.APPLICATIONLOG.layout.ConversionPattern=%d [%5p]: %m%n# Turn off root logging.
#log4j.rootLogger=info, APPLICATIONLOG
log4j.rootLogger=info, CONSOLE , APPLICATIONLOG
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>RestletDemo</display-name><servlet><servlet-name>RestletServlet</servlet-name><servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class><init-param><param-name>org.restlet.application</param-name><param-value>com.restlet.demo.application.RestletApplication</param-value></init-param></servlet><servlet-mapping><servlet-name>RestletServlet</servlet-name><url-pattern>/service/*</url-pattern></servlet-mapping>
</web-app>

 

  • 呼叫Hello World Web服务

Selection_022

参考: Restlet Framework –来自Sunil Gulabani博客的JCG合作伙伴 Sunil Gulabani的Hello World示例 。

翻译自: https://www.javacodegeeks.com/2013/09/restlet-framework-hello-world-example.html

restlet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在运行时在Spring Cloud Config中刷新属性配置

在本系列Spring Cloud Config的教程系列中&#xff0c;我们将讨论在运行时刷新属性配置的过程&#xff0c;我们将使用Spring Boot致动器/refresh端点进行/refresh 。 此外&#xff0c;我们还将研究使用RefreshScope注释刷新Value属性。 在我的Spring Cloud Config的上一教程中…

pythonnumpy教程_Python学习教程:通俗易懂的Numpy入门教程

Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包&#xff0c;如数据分析工具pandas也是基于numpy构建的&#xff0c;机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。目录如何构建numpy数组如何观察数…

css hack技巧_5种减少Hack的编码技巧

css hack技巧在本文中&#xff0c;我们将探讨五种方法&#xff0c;这些方法可以使用有效的编码来帮助垃圾回收器花费更少的CPU时间分配和释放内存&#xff0c;并减少GC开销。 较长的GC通常会导致我们的代码在回收内存时停止&#xff08;也称为“停止世界”&#xff09;。 一些…

mysql数据库全备_MySQL innobackupex全备是指什么

MySQL innobackupex全备是指什么发布时间&#xff1a;2020-06-03 10:10:31来源&#xff1a;51CTO阅读&#xff1a;133作者&#xff1a;三月下文主要给大家带来MySQL innobackupex全备是指什么&#xff0c;希望这些内容能够带给大家实际用处&#xff0c;这也是我编辑MySQL innob…

数组初始化使用(写)new与不使用(不写)new

首先&#xff0c;数组初始化时&#xff0c;写不写new没有区别的。int arr[] new int[]{ 3, 9, 8};或者int[] arr {3,9,8};编译器遇到 int a[] {3, 8, 9}; 会编译成和 int a[] new int[] {3, 8, 9}; 完全一样的中间代码。 ①不同于String类。String由于实现了常量池&#xf…

Java数组(2)--一维数组

一、一维数组的&#xff08;声明赋值&#xff09;初始化 声明&#xff1a;type var[]; 或 type[] var;&#xff08;示例&#xff1a;int[] age;&#xff09; 初始化&#xff1a; ①动态初始化&#xff1a;声明且为数组元素分配空间&#xff0c;与赋值的操作分开进行 int[] ar…

Java数组(3)--二维(多维)数组

二维数组相当于一维数组的元素是一维数组 一、二维数组声明赋值初始化 动态初始化① int[][] arr new int[3][2];定义了名称为arr的二维数组 二维数组中有3个一维数组 每一个一维数组中有2个元素 一维数组的名称分别为arr[0], arr[1], arr[2] 给第一个一维数组1脚标位赋值为…

workflow java_workflow java实现的activity工作流实例 Develop 238万源代码下载- www.pudn.com...

文件名称: workflow下载收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 134 KB上传时间: 2014-09-18下载次数: 3提 供 者: 张华详细说明&#xff1a;java实现的activity工作流实例 -java activity文件列表(点击判断是否您需要的文件&#xff0c;如果是垃圾请在下面评价投诉)…

使用OAuth 2 / OpenID Connect的SSO的Spring Boot 2本机方法

这篇文章是3篇系列文章的最后一部分&#xff0c;该系列文章探讨了如何为基于Spring Boot 2的应用程序启用OAuth2提供程序SSO。 3个帖子是&#xff1a; 引导兼容OpenID Connect的OAuth2授权服务器/ OpenID提供程序的方法 与OAuth2授权服务器/ OpenID提供程序集成的旧版Spring …

实现任意行数的杨辉三角

public class JavaTest {public static void main(String[] args) {//放置杨辉三角的数组&#xff0c;可通过更改new int[n][]中n的值以获取不同行数的杨辉三角int[][] yangItem new int[10][];//获取杨辉三角数组中每个元素的值for (int i 0;i < yangItem.length;i){//当…

java excel sheet页_Java导出Excel Sheet页

1、问题背景导出Excel表格时&#xff0c;首先要生成Sheet页&#xff0c;下面将介绍如何生成Sheet页2、实现源码/**** Project:* Title:ExcelExport.java* Package:report.utils* Description:* Author:YouHaiDong* Date:2015年11月2日 下午6:29:22* Version:*/package report.u…

鸿蒙与安卓系统简单对比,绝非追求三分天下。

鸿蒙是面向5G物联网、面向全场景的分布式操作系统&#xff0c;其不是安卓系统的分支或修改而来的&#xff0c;与安卓、iOS是不一样的操作系统。鸿蒙将打通手机、电脑、平板、电视、电器设备、工业自动化控制、无人驾驶、车机设备 、智能穿戴统一成一个操作系统&#xff0c;并且…

(0.1)鸿蒙HarmonyOS开发工具DevEco Studio设置

1、打开设置操作框 2.1主题设置&#xff08;可以工具自己的喜好设置主题&#xff09; 2.2设置字体 2.3设置注释 2.4设置提示语句忽略大小写&#xff08;输入小写时&#xff0c;提示语句也会出现大写的关键字等&#xff09; 2.5设置自动导包&#xff08;不用导包&#xff0c;工具…

向Java最佳专家的全球专家学习Java

Java with the Best Virtual Conference是您学习微服务&#xff0c;Java 9&#xff0c;Kubernetes以及其他Java的指南&#xff01; 将于4月17日至18日收听&#xff0c;收听来自Pivotal&#xff0c;RedHat&#xff0c;Microsoft&#xff0c;Oracle和Netflix等公司的行业领导者进…

(0.2)HarmonyOS鸿蒙开发工具DevEco Studio工程文件目录结构

1、基本不会去动添加修改的一些文件夹 2、主要直接使用操作的文件夹entry 3、开发操作main文件夹 也就是说&#xff0c;我们其实主要就只要用到java&#xff0c;resources两个文件夹和config.json一个文件。把代码放java文件夹里面&#xff0c;把开发用到的图片视频等资源放res…

(0.3)HarmonyOS鸿蒙开发工具DevEco Studio 模拟器使用

1、登录华为账号 2、打开模拟器 3、选择模拟器 4、将程序运行在模拟器 5、当下面的building进度条完成后

(1.1)HarmonyOS鸿蒙中Ability概念及意义

1、简单理解&#xff1a;在鸿蒙中&#xff0c;可以简单理解为&#xff0c;打开APP后一个页面为一个Ability&#xff0c;而一个页面里面又有很多子页面&#xff08;切片、片段&#xff09;为AbilitySlice。 2、意义 一个Ability对应一个Hap包&#xff0c;一个APP则是由多个Hap包…

Java实现冒泡排序动画展示

原理&#xff1a;每次比较两个相邻的元素&#xff0c;将较大&#xff08;较小&#xff09;的元素交换至右边。 思路&#xff1a;每次冒泡排序操作都会将相邻的两个元素进行比较&#xff0c;看是否满足大小关系要求&#xff0c;如果满足&#xff0c;就根据需要&#xff08;从小…

使用Zipkin和Sleuth进行SpringBoot微服务跟踪

在本文中&#xff0c;我们将了解使用Zipkin和Spring cloud sleuth框架的微服务分布式跟踪。 尽管微服务具有自身的挑战&#xff0c;但微服务是出色的架构。 复杂的微服务架构具有与其他微服务的下游和上游依存关系&#xff0c;并且一切都是相互联系的。 在大多数情况下&#x…

log4j性能 slf4j_Log4j 2:性能接近疯狂

log4j性能 slf4j最近&#xff0c;Apache社区中一位受人尊敬的成员尝试了Log4j 2并在Twitter上写道&#xff1a; TheASF &#xff03;log4j2摇摇欲坠 &#xff01; 性能接近疯狂^^ http://t.co/04K6F4Xkaa — Mark Struberg&#xff08;struberg&#xff09; 2013年5月7日 &a…