`
jiagou
  • 浏览: 2529598 次
文章分类
社区版块
存档分类
最新评论

Restlet 2.2 借助Servlet部署到Tomcat的方法

 
阅读更多

Restlet 2.2提供了Servlet和Spring的扩展,可以简单方便的将Restlet部署到Tomcat等环境中。


本文描述利用Restlet 2.2 Servlet扩展,实现到Tomcat环境的部署。


一、通过org.restlet.ext.servlet.ServerServlet 部署


1、用 Application实现


1)、创建一个继承 ServerResource的类

package org.teamlet.rest.component;


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


public class ComponentResource extends ServerResource {


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



2)、创建一个继承 Application 的类

package org.teamlet.rest.component;

import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
 
public class ComponentApplication extends Application {

	@Override
	public synchronized Restlet createInboundRoot() {

		Router router = new Router(getContext());

		router.attach("/hello", ComponentResource.class);

		return router;
	}
}


3)、修改web.xml

<context-param>
   <param-name>org.restlet.application</param-name>
   <param-value>org.teamlet.rest.component.ComponentApplication</param-value>
</context-param>

<servlet>
   <servlet-name>RestletServlet</servlet-name>
   <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>RestletServlet</servlet-name>
   <url-pattern>/rest/*</url-pattern>
</servlet-mapping>


4)、部署后,通过 http://127.0.0.1:8080/myservice/rest/hello 访问


2、用Component实现

1)、创建两个继承 ServerResource的类:方法同上

2)、创建两个继承 Application 的类:方法同上,resource类与相应的application对应

3)、创建一个继承 Component 的类: (注:这里one 和two 绑定到不同的application即可,我这里写的是同一个)

package org.teamlet.rest.component;
public class ComponentComponent extends org.restlet.Component {

	public ComponentComponent() {

		getDefaultHost().attach("/one", new ComponentApplication());
		getDefaultHost().attach("/two", new ComponentApplication());

	}
}


4)、配置 web.xml

<init-param>
    <param-name>org.restlet.component</param-name>
    <param-value>org.teamlet.rest.component.ComponentComponent</param-value>
</init-param>

<servlet>
    <servlet-name>RestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

5)、部署后,通过 http://127.0.0.1:8080/myservice/rest/one 和 http://127.0.0.1:8080/myservice/rest/two访问


二、通过org.restlet.ext.servlet.ServletAdapter 部署

1、创建一个servlet类,继承HttpServlet

2、在servlet中创建一个Restlet实例trace,在handle方法中重写逻辑

public class TestServlet extends HttpServlet {
    private ServletAdapter adapter;

    public void init() throws ServletException {
        super.init();
        this.adapter = new ServletAdapter(getServletContext());

        Restlet trace = new Restlet(this.adapter.getContext()) {
            public void handle(Request req, Response res) {
                getLogger().info("Hello World");
                res.setEntity("Hello World!", MediaType.TEXT_PLAIN);
            }
        };

        this.adapter.setNext(trace);
    }

    protected void service(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        this.adapter.service(req, res);
    }
}

3、配置 web.xml

<servlet>
    <servlet-name>RestletServlet</servlet-name>
    <servlet-class>org.teamlet.rest.component.TestServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>


4、说明这个方法通常用在spring环境中,下一篇介绍spring部署的时候会讲到到这个ServletAdapter的用法。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics