RESTEasy:JAX-RS restful webservices 示例

纯web版本

pom添加依赖:

<dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>3.0.11.Final</version>
        </dependency>
    </dependencies>
web.xml添加servlet定义

<servlet>
    <servlet-name>resteasy-servlet</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>test.MyRESTEasyApplication</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>resteasy-servlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

JAX-RS定义

package test;

import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

public class MyRESTEasyApplication extends Application {
    private Set<Object> singletons = new HashSet<Object>();

    public MyRESTEasyApplication() { singletons.add(new HelloWorldRestService()); }

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

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/hello")
public class HelloWorldRestService {
    @GET
    public Response defaultResponse() {
        return Response.status(404).entity("404: Default Response ....").build();
    }

    @GET
    @Path("/{param}")
    public Response getName(@PathParam("param") String name) {
        String result = "RESTEasy Hello World : " + name;
        return Response.status(200).entity(result).build();
    }
}

web Guice集成版本

pom添加依赖:
<dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-guice</artifactId>
            <version>3.0.16.Final</version>
        </dependency>
    </dependencies>
web.xml添加内容:
    <context-param>
        <param-name>resteasy.guice.modules</param-name>
        <param-value>guice.hello.MyGuiceModule</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>Resteasy</servlet-name>
        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

java代码:
package guice.hello;

public interface Greeter {
    String greet(String name);
}
package guice.hello;

import javax.inject.Singleton;

@Singleton
public class DefaultGreeter implements Greeter {
    public String greet(String name) {
        System.out.println(this);
        return "Hello " + name;
    }
}
package guice.hello;

import com.google.inject.Binder;
import com.google.inject.Module;

// TODO: 可参考 core 模块中的例子:com.conquer.comutils.core.guice.MyGuiceModule
public class MyGuiceModule implements Module {
    public void configure(final Binder binder) {
        binder.bind(MyResource.class);
        binder.bind(Greeter.class).to(DefaultGreeter.class)
        //                使用 javax.inject.Singleton() 标注 实现类 实现单例
//                .in(com.google.inject.Scopes.SINGLETON)// 这里设置单例,默认不是单例的而是每次创建
        ;
    }
}
package guice.hello;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

@Path("hello")
public class MyResource {
    private final Greeter greeter;

    @Inject
    public MyResource(final Greeter greeter) {
        this.greeter = greeter;
    }

    @GET
    @Path("{name}")
    public String hello(@PathParam("name") final String name) {
        return greeter.greet(name);
    }
}

javase版本

RESTEasy可以通过javase程序main方法直接运行服务,生产环境下一般不这么使用,SpringBoot也有类似的用法,不多说了。






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值