Restlet框架– Hello World示例

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

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

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

相关文章

BZOJ2809 dispatching 【可并堆】

题目分析&#xff1a; yy一下就知道了&#xff0c;合并用可并堆少个log。 代码&#xff1a; 1 #include<bits/stdc.h>2 using namespace std;3 4 const int maxn 102000;5 6 int n,m;7 int b[maxn],c[maxn],l[maxn],sz[maxn];8 long long tot[maxn];9 int dis[maxn],v…

php ci 框架 扩展缓存类,CodeIgniter扩展核心类实例详解

本文实例讲述了CodeIgniter扩展核心类的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;CI中对核心类、辅助类和函数的扩展是相当方便的&#xff0c;配置文件中指定了subclass_prefix扩展前缀&#xff0c;默认为MY_&#xff0c;扩展时需要以该配置为前缀&#xff…

jQuery下如何使用Json传递数据

json的结构为&#xff1a; {\"data\":[{\"key1\":\"1\"},{\"key2\":\"2\"},{\"key3\":\"3\"}]} 因为要进行输出&#xff0c;所以里边加了转义符&#xff0c;希望大家不要在此迷惑。下边&#xff0c;我就…

七牛云

待续....转载于:https://www.cnblogs.com/tovictory/p/8647883.html

Servlet 3的异步Servlet功能

在深入了解什么是异步Servlet之前&#xff0c;让我们尝试了解为什么需要它。 假设我们有一个Servlet&#xff0c;处理时间很长&#xff0c;如下所示。 LongRunningServlet.java package com.journaldev.servlet;import java.io.IOException; import java.io.PrintWriter;impo…

简单却实用的的例子:Jquery获取 radio 选中后的文字

今天在 QQ 群里有朋友问到 jQuery 怎么获取选中 radio 后的文本&#xff0c;可见要熟练的使用 jQuery 应该很好的掌握 jQuery 选择器&#xff0c;下边就让我们简单看看这个问题。 首先&#xff0c;他给出的 HTML 示例如下&#xff1a; <input type"radio" id"…

excel的宏与VBA入门——代码调试

直接介绍重点&#xff1a; 常用的操作是导航栏的逐句与断点&#xff1a; 添加断点&#xff1a;调试->切换断点 单步运行&#xff1a;调试->逐句 查看变量的窗口&#xff1a;视图->本地窗口 转载于:https://www.cnblogs.com/jiangbei/p/9561352.html

php访问服务器文件路径,PHP与服务器文件系统的简单交互

1、php.ini中关于文件上传的设置指令2、文件上传过程(1)上传文件提交表单html代码&#xff1a;Adminstration - upoload new filesUpload new filesUpload a file(2)php处理上传文件代码①在php脚本中&#xff0c;需要处理的数据保存在超级变量数组$_FILES中&#xff0c;开启re…

泽西岛客户:测试外部呼叫

吉姆和我在上周一直在做一些工作&#xff0c;其中涉及调用neo4j的HA状态URI来检查实例是否是主/从属&#xff0c;并且我们一直在使用jersey-client 。 该代码大致如下所示&#xff1a; class Neo4jInstance {private Client httpClient;private URI hostname;public Neo4jInst…

django F和Q 关键字使用

F 的使用&#xff1a; 想给表里每个价格加上一百就要用上F&#xff0c;直接加是不行的。 转载于:https://www.cnblogs.com/wuheng-123/p/9561422.html

php酷狗音乐json,用php来搜索酷狗音乐

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼返回结果要使用$datajson_decode($json,true);转换为php array变量搜索歌曲&#xff1a;http://mobilecdn.kugou.com/api/v3/search/song?formatjson&keyword想象之中&page1&pagesize30返回实例&#xff1a;Array([st…

了解OutOfMemoryError

每当您发现自己盯着一个带有OutOfMemoryError的堆栈跟踪时&#xff0c;它应该都非常清晰。 该程序不再有肘部空间&#xff0c;并且由于缺少它而濒临死亡。 从10,000英尺或高管椅子上可能已经包含太多信息。 但是&#xff0c;那些必须构建或维护应用程序并弄清为什么会产生特定错…

jQuery之合成事件

jQuery提供一些方法将两种效果合并到一起&#xff0c;比如&#xff1a;mouseover、mouseout。 下面是一些案例&#xff1a; hover(over,out)一个模仿悬停事件&#xff08;鼠标移动到一个对象上面及移出这个对象&#xff09;的方法。这是一个自定义的方法&#xff0c;它为频繁使…

基础命令_1

避免误删除数据1.尽量把文件移动到 /tmp目录2.参数最小化 -f -rf3.-f或-fr放在命令最后#########################################################################################################################find 命令 <find(选项)(参数)> find命令用来在…

php pdo使用事务,PHP内PDO事务使用步骤详解

这次给大家带来PHP内PDO事务使用步骤详解&#xff0c;PHP内PDO事务使用的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。概要&#xff1a;将多条sql操作(增删改)作为一个操作单元&#xff0c;要么都成功&#xff0c;要么都失败。单条数据不用事务处理被…

[转帖]真TM长的:SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCMBCM

谈到GAM和SGAM&#xff0c;我们不得不从数据库的页和区说起。 https://blog.csdn.net/snowfoxmonitor/article/details/49991015 一个数据库由用户定义的空间构成&#xff0c;这些空间用来永久存储用户对象&#xff0c;例如数据库管理信息、表和索引。这些空间被分配在一个或多…

六大Java功能

我花了无数小时来对不同的应用程序进行故障排除。 通过经验&#xff0c;我可以得出关于大多数开发人员应该远离的几个Java SE功能/ API的结论。 当我提到大多数开发人员时&#xff0c;我会想到常规的Java EE开发人员&#xff0c;而不是库设计人员/基础结构工程师。 全面披露&a…

解决socket 粘包的三种方法

在socket编程中&#xff0c;当服务器连续向客户机发送两条指令时&#xff0c;就容易发生粘包 解决方法 1.sleep&#xff08;&#xff09;通过睡眠来隔断两条语句 2、设置一条回执语句&#xff0c;当对方接受完信息后返回一个值 3根本解决&#xff1a; 通过在客户端程序中来确定…

用Jquery实现选项卡功能

jQuery实现选项卡功能。首先将界面搭建好。有导航头tab_menu&#xff0c;还有内容tab_box。要实现的效果就是&#xff0c;点击后&#xff0c;将相应的内容显示出来&#xff0c;其他内容隐藏掉。同时为了展现选中状态&#xff0c;为选中的项添加背景&#xff0c;以示区别。 这一…

帝国模板php代码,让帝国cms搜索页模板支持php代码

1.在/e/search/result/index.php头上加入require(../../class/functions.php);2.在/e/search/result/index.php 120行左右//替换公共模板变量$listtemp$tempr[temptext];这行代码之前加上$tempr[temptext]DtNewsBq(list.$tempr[tempid],$tempr[temptext],0);完整代码如下&#…