使用Embedded Tomcat 和 Resteasy 来发布一个 Restful Service

需求是比较简便的发布,不需要配置文件。于是就像到了Embedded Tomcat。代码如下:

public class TomcatLauncher {
    public static void main(String[] args) throws Exception {

        Path path = Files.createTempDirectory("webapps");

        Tomcat tomcat = new Tomcat();

        // 添加一个webapp,路径是/t
        Context ctx = tomcat.addWebapp("/t", new File(".").getAbsolutePath());
        //Resteasy的Listener
        ctx.addApplicationListener("org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap");
        //各个Resource的配置类
        ctx.addParameter("javax.ws.rs.core.Application", "com.rum.restful.Config");
        //路径配置,一般和下面的Servlet Mapping那里的一致
        ctx.addParameter("resteasy.servlet.mapping.prefix", "/services");

        //在webapp /t下面添加名字为Resteasy的Servlet
        tomcat.addServlet("/t", "Resteasy", new HttpServletDispatcher());
        //将所有/services下面的请求交给ResteasyServlet处理
        ctx.addServletMapping("/services/*", "Resteasy");

        // Tomcat Native / APR . 需要tc-native1.dll
        // 不是必须
        StandardServer server = (StandardServer)tomcat.getServer();
        AprLifecycleListener listener = new AprLifecycleListener();
        server.addLifecycleListener(listener);

        tomcat.setPort(8080);    // 端口 
        tomcat.start();
        tomcat.getServer().await();
    }
}

其中com.rum.restful.Config是Resteasy的Application配置类:

public class Config extends Application {
    HashSet<Object> singletons = new HashSet<Object>();

    public Config() {
        singletons.add(new HelloResource());
    }

    @Override
    public Set<Class<?>> getClasses()
    {
        HashSet<Class<?>> set = new HashSet<Class<?>>();
        return set;
    }

    @Override
    public Set<Object> getSingletons()
    {
        return singletons;
    }
}

HelloResource是一个Restful Resource:

@Path("trace")
public class HelloResource {


    @GET
    @Produces("text/plain")
    public String toString(@QueryParam("id") String id) {
        return Thread.currentThread().getName() + "hello, world " + id;
    }

}

然后就可以通过http://SERVER:8080/t/services/trace来访问这个Resource了。

什么web.xml 都不需要了,呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值