Restlet 2.0 边学边写(一)第一步

关于Rest的起源和框架、入门资料的一些东西大家可以去看看ajax的博客,我直接从第一步开始吧。

首先要从 http://www.restlet.org/downloads/stable下载并安装Restlet,我安装的是2.0.10 Java EE 版。
安装完成后,docs里面是文档,lib里面是我们需要的类库,src是Restlet的源码。src目录下org.restlet.example包里面有很多的例子可以学习,说明可以看readme.txt。

接下来开始我们的第一个应用。
我的环境是JDK1.5+MyEclipse8.6+tomcat5.5.25。

1.创建项目
首先在eclipse中创建一个Web Project,命名为firstSteps,JavaEE级别选5.0。部署在tomcat中后,启动tomcat,通过浏览器访问 http://localhost:8080/firstSteps/ 能看到首页。

2.导入包
从Restlet安装目录/lib中将org.restlet.jar拷贝至项目/WebRoot/WEB-INF/lib目录下,并加入Build Path中。

3.Let's Roll
在src目录下创建包com.sunny.restlet.firstSteps。
在包中创建Resource类HelloWorldResource,代码如下:
package com.sunny.restlet.firstSteps;

import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;

/**
 * Resource which has only one representation.
 */
public class HelloWorldResource extends ServerResource {

    @Get
    public String represent() {
        return "hello, world";
    }

}

这就是我们的资源类,可以看到里面将represent方法注释成@Get,这表明资源类要将represent方法对外提供为Get访问。

接下来是Application类FirstStepsApplication:
package com.sunny.restlet.firstSteps;

import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
public class FirstStepsApplication extends Application { 
    @Override  
    public synchronized Restlet createRoot() {   
        // Create a router Restlet that routes each call to a   
        // new instance of HelloWorldResource.   
        Router router = new Router(getContext());   
        // Defines only one route   
        router.attachDefault(HelloWorldResource.class);   
        return router;   
    }   
}  

FirstStepsApplication中将HelloWorldResource附加到Context上。

我们需要一个主类将Application附加到Host上并启动服务:
package com.sunny.restlet.firstSteps;

import org.restlet.Component;
import org.restlet.data.Protocol;

public class FirstStepsMain {
	public static void main(String[] args) throws Exception {  
	    // Create a new Component.  
	    Component component = new Component();  
	  
	    // Add a new HTTP server listening on port 8182.  
	    component.getServers().add(Protocol.HTTP, 8182);  
	  
	    // Attach the sample application.  
	    component.getDefaultHost().attach("/firstSteps",  
	            new FirstStepsApplication());  
	  
	    // Start the component.  
	    component.start();  
	}          
}

主类会启动本地的8182端口作为主机并将FirstStepsApplication附加到/firstSteps目录。

4.运行
运行FirstStepsMain类,会输出以下信息:
  • 2012-1-11 2:25:35 org.restlet.engine.http.connector.HttpServerHelper start
  • 信息: Starting the internal HTTP server on port 8182

此时可以通过浏览器访问 http://localhost:8182/firstSteps/就可以看到提示信息“hello, world”了。
第一个Restlet应用运行成功。

5.在Servlet容器中运行
刚才只是我们运行一个主类来启动8182端口作为主机,很多人可能更希望在Servlet容器中启动服务。
5.1.导入包
想要在Servlet容器中运行Restlet,需要导入包org.restlet.ext.servlet.jar,同样可以在Restlet/lib目录下找到它。
5.2.配置RestletServlet
修改WEB-INF/web.xml,在</web-app>前加入以下配置:
<servlet>
	<servlet-name>RestletServlet</servlet-name>
	<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>

	<!-- FirstStepsApplication -->
	<init-param>
		<param-name>org.restlet.application</param-name>
		<param-value>com.sunny.restlet.firstSteps.FirstStepsApplication</param-value>
	</init-param>
</servlet>

<!-- Catch all requests -->
<servlet-mapping>
	<servlet-name>RestletServlet</servlet-name>
	<url-pattern>/*</url-pattern>
</servlet-mapping>

5.3.部署运行
重新部署firstSteps,通过浏览器访问 http://localhost:8080/firstSteps/就可以看到首页变成提示信息“hello, world”了。
至此Servlet运行成功。

猜你喜欢

转载自sb33060418.iteye.com/blog/1340721