RESTEasy ,JBoss项目, JAX-RS规范的实现。 在本教程中,我们向您展示如何使用RESTEasy框架创建简单的REST风格的Web应用程序。
本文中使用的技术和工具:
- 可重构2.2.1.GA
- JDK 1.6
- Maven的3.0.3
- Eclipse 3.6
1.目录结构
查看本教程的最终目录结构。 只是一个标准的Web项目结构。
2.标准Web项目
创建一个标准的Maven Web项目结构。
mvn archetype:generate -DgroupId=com.mkyong.common -DartifactId=RESTfulExample
-DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
转换为Eclipse Web项目。
mvn eclipse:eclipse -Dwtpversion=2.0
3.项目依赖
在您的Maven pom.xml
文件中声明JBoss公共Maven存储库和“ resteasy-jaxrs ”。 这就是您使用RESTEasy所需的全部。
档案:pom.xml
<project ...">
<repositories>
<repository>
<id>JBoss repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.2.1.GA</version>
</dependency>
</dependencies>
</project>
4. REST服务
一个简单的REST服务。 参见文章末尾的演示,它应该是不言自明的。
package com.mkyong.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/message")
public class MessageRestService {
@GET
@Path("/{param}")
public Response printMessage(@PathParam("param") String msg) {
String result = "Restful example : " + msg;
return Response.status(200).entity(result).build();
}
}
5. web.xml
现在,配置侦听器和servlet以支持RESTEasy。 阅读此JBoss文档以获取详细说明。
档案:web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Restful Web Application</display-name>
<!-- Auto scan REST service -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!-- this need same with resteasy servlet url-pattern -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
注意
如果用于resteasy servlet的servlet映射具有除/ *之外的url模式,则需要设置“ resteasy.servlet.mapping.prefix ”。在上面的示例中,resteasy servlet的url-pattern是“ / rest / * ”,因此您也必须将“ resteasy.servlet.mapping.prefix”设置为“ / rest ”,否则,您将遇到资源找不到错误信息。
注意
请记住,将“ resteasy.scan ”设置为true,以便RESTEasy将自动查找并注册您的REST服务。
6.演示
在此示例中,来自“ projectURL / rest / message / ”的Web请求将与“ MessageRestService ”匹配,而“ projectURL / rest / message / {any values} ”将与@PathParam参数匹配。
测试1:http:// localhost:8080 / RESTfulExample / rest / message / mkyong
测试2:http:// localhost:8080 / RESTfulExample / rest / message / hello%20world
备用REST服务注册
在上面的示例中,您通过“ ResteasyBootstrap ”侦听器注册REST服务。 在这里,我向您展示了另一种方式。
创建一个类并扩展javax.ws.rs.core.Application
,然后手动添加您的REST服务。
package com.mkyong.app;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import com.mkyong.rest.MessageRestService;
public class MessageApplication extends Application {
private Set<Object> singletons = new HashSet<Object>();
public MessageApplication() {
singletons.add(new MessageRestService());
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
File:web.xml ,不再有侦听器,如下配置您的应用程序类:
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Restful Web Application</display-name>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<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>com.mkyong.app.MessageApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
做完了
下载源代码
下载它– RESTEasy-Hello-World-Example.zip (7 KB)
参考文献
翻译自: https://mkyong.com/webservices/jax-rs/resteasy-hello-world-example/