RESTEasy 中的 InternalDispatcher_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > RESTEasy 中的 InternalDispatcher

RESTEasy 中的 InternalDispatcher

 2011/12/5 7:34:31  阿男bluedash  http://bluedash.iteye.com  我要评论(0)
  • 摘要:RESTEasy中的InternalDispatcher可以将一个请求Forward给另一个请求,通过这种方法可以实现API的迁移,在保留原URL服务的基础上,将服务迁至另一URL,本文给出一个例子:假设我们想将用户的请求从:http://0.0.0.0/users/forwards/{name}转向至:http://0.0.0.0/users/{name}可在代码中使用InternalDispatcher来实现:packageorg.bluedash.resteasy
  • 标签:
RESTEasy 中的 InternalDispatcher 可以将一个请求 Forward 给另一个请求,通过这种方法可以实现API的迁移,在保留原URL服务的基础上,将服务迁至另一URL,本文给出一个例子

假设我们想将用户的请求从:

http://0.0.0.0/users/forwards/{name}


转向至:

http://0.0.0.0/users/{name}


可在代码中使用InternalDispatcher来实现:


package org.bluedash.resteasy.interceptors;

import java.net.URI;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.ext.RuntimeDelegate;

import org.jboss.resteasy.spi.InternalDispatcher;

@Path("/users")
public class UserServlet {

	@Path("{name}")
	@GET
	@Produces("text/plain")
	public String getUsers(@PathParam("name") String name) {
		UriBuilder.fromUri(URI.create("http://localhost"));
		System.out.println(RuntimeDelegate.getInstance());
		return "User: " + name;
	}

	@Path("forwards/{name}")
	@GET
	@Produces("text/plain")
	public String getMockedUsers(@PathParam("name") String name,
			@Context InternalDispatcher dispatcher) {
		return (String) dispatcher.getEntity("/users/" + name);

	}

}


这样,当用户访问/users/fowards/{name}时,InternalDispatcher 会将请求转至 /users/{name}所对应的代码来处理。
  • 相关文章
发表评论
用户名: 匿名