“Wildfly9下resteasy的简单应用实例”的版本间的差异

来自软件实验室
跳转至: 导航搜索
测试一下
第93行: 第93行:
  
 
== 测试一下 ==
 
== 测试一下 ==
 +
首先build project(不要忘记了这一步,尤其是关闭了Build Automatically),然后在servers view中添加wildfly9(如果已经添加了wildfly9跳过此步):
 +
[[文件:wildfly_resteasy_3.png]]
 +
 +
将restHello部署到wildfly:
 +
[[文件:wildfly_resteasy_4.png]]
 +
 +
然后启动wildfly,打开浏览器访问http://localhost:8080/restHello/rest/hello/sayHello?name=subaochen,见证奇迹的时刻:
 +
[[文件:wildfly_resteasy_5.png]]
 +
 +
尝试改变?name=后面的字符串看看效果如何?
  
 
== 注解的解释 ==
 
== 注解的解释 ==
  
 
== 编写客户端页面 ==
 
== 编写客户端页面 ==

2015年12月9日 (三) 11:16的版本

通过下面的实例可以看出,resteasy 3.0.11之后创建一个restful应用是多么的简单!

环境准备

本案例用到的工具及其版本号如下:

  • wildfly 9.0.2,其中默认自带的resteasy版本是3.0.11,本案例没有升级resteasy的版本。
  • eclipse Mars,安装了JBoss Tools 4.0。

创建项目

在Eclipse中通过new->Web->Dynamic Web Project创建新项目helloRest: Wildfly resteasy 0.png

注意在最后一步要选中创建web.xml文件:

Wildfly resteasy 1.png

编写web.xml

打开创建的文件,在WebContent/WEB-INF目录找到web.xml文件。由于wildfly9已经紧密集成了resteasy,不再需要在web.xml中配置任何内容了!

如果熟悉JSF,Servlet技术,会记得一般需要在web.xml中配置哪个servlet负责响应和分发用户的请求,比如以前版本的wildfly要使用resteasy的配置选项如下:

    <servlet>
        <servlet-name>Resteasy</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>sample.HelloWorldApplication</param-value>
        </init-param>
 
    </servlet>
 
    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

但是请记住,wildfly 9之后,再使用resteasy就不需要这个选项了,道理参见下面代码的@ApplicationPath注解。

编写服务器端接口

首先需要编写一个程序的入口,即编写一个带有@ApplicationPath注解的类,这个类是Application的子类,通过ApplicationPath注解告诉wildfly整个应用程序的入口url是什么。目前这个类可以是空的。 注意,Application类的全称是javax.ws.rs.core.Application,不要选错了。

Wildfly resteasy 2.png

 
package helloRest;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class MyApplication extends Application
{

}


接着定义一个服务接口如下:

package helloRest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;

@Path("hello")
public interface HelloService
{
    @GET
    @Path("{name}")
    public String sayHello(@QueryParam("name") String name);
}

编写一个HelloService的实现类如下:

 
package helloRest;

public class Hello implements HelloService
{
    @Override
    public String sayHello(String name)
    {
        // TODO Auto-generated method stub
        return "hello " + name ;
    }
}


测试一下

首先build project(不要忘记了这一步,尤其是关闭了Build Automatically),然后在servers view中添加wildfly9(如果已经添加了wildfly9跳过此步): Wildfly resteasy 3.png

将restHello部署到wildfly: Wildfly resteasy 4.png

然后启动wildfly,打开浏览器访问http://localhost:8080/restHello/rest/hello/sayHello?name=subaochen,见证奇迹的时刻: Wildfly resteasy 5.png

尝试改变?name=后面的字符串看看效果如何?

注解的解释

编写客户端页面