- 浏览: 32757 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
gezi2213:
commons-httpclient-3.0.jar
传个包 ...
httpclient 调用webservice
"欢迎您光临敝博,为了方便您阅读,建议您 订阅我的博客 以获得最即时的更新。新浪微博账号:@hoorace "
REST简介
REST(Representational State Transfer)中文解释为“表述性状态转移”,是2000年由Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的架构风格。REST是基于HTTP,URI,XML,JSON等协议或者标准,它促使了http协议的更加正确使用。相对于SOAP和WSDL提供的web service方案,REST显得更加简单。
基于REST的web service应该遵守一些基本的原则:
1:资源的识别:系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址,URI 的结构应该简单、可预测且易于理解,比如定义目录结构式的 URI。
2:协议: 以遵循 HTTP/1.1 RFC2616 所定义的协议的方式显式地使用 HTTP 方法,建立创建、检索、更新和删除(CRUD:Create, Retrieve, Update and Delete)操作与 HTTP 方法之间的一对一映射:
POST: 在服务器上创建资源;
GET: 检索某个资源;
PUT: 更改资源状态或对其进行更新;
DELETE: 删除某个资源。
3:自描述的消息:URI 所访问的每个资源都可以使用不同的形式加以表示(比如 XML 或者 JSON),具体的表现形式取决于访问资源的客户端,客户端与服务提供者使用一种内容协商的机制(请求头与 MIME 类型)来选择合适的数据格式,最小化彼此之间的数据耦合。
Java Rest Framework
1:Restlet: 出现的较早,在JAX-RS之前就有了,支持的框架较多,但是使用起来不够简单。
1:CXF: 是Celtix 和 XFire合并后的项目,支持SOAP,WSDL,JSR-WS,REST,配置较为复杂,侵入性太强,单纯构建restful web service显得较重。
2:Resteasy: 是jboss下面一个对JAX-RS(JSR311)的一个实现,使用起来简单方便,支持spring,oauth等。
3:Jersey: 是sun公司对JAX-RS(JSR311)的一个参考实现,不过现在在逐渐的摆脱参考实现的阴影,逐渐渗透到企业应用,和sun的glassfish和netbeans结合使用可以很方便的构建restful web service。
实现restful web service使用CXF和restlet都显得太重,使用Jersey总是觉得这个是官方的参考实现,看看Easyrest的文档还是较为全面,所以选择Easyrest来作为rest api的java框架。
注:JSR 311 或 JAX-RS(用于 RESTful Web Services 的 Java API)的提议开始于 2007 年,1.0 版本到 2008 年 10 月定稿。目前,JSR 311 版本 1.1 还处于草案阶段。该 JSR 的目的是提供一组 API 以简化 REST 样式的 Web 服务的开发。
RESTEasy的一些功能点
实现中遵守 JAX-RS 规范
需要 JDK 5 或者以上版本的应用服务器中运行
支持在应用服务器中作 junit 测试
使用annotations更简单的写客户端应用 (JAX-RS 只定义了服务器端的)
支持HTTP 1.1缓存语义包括缓存。
支持多种格式: XML, JSON, YAML, Fastinfoset, Multipart, XOP, Atom, etc.
支持JAXB 和XML, JSON, Jackson, Fastinfoset, and Atom 互转
支持GZIP ,JBoss Web, Tomcat 6, and Servlet 3.0,EJB, Seam, Guice, Spring, and Spring MVC integration
使用Resteasy构建 restful web service
把对图书馆的书籍的操作作为例子,讨论使用resteasy构建restful web service的方法。中间包括pom.xml的配置,web.xml的配置,相关上下文类的实现,核心类中到一些方法。
1:创建工程,配置pom.xml
mvn archetype:create -DgroupId=com.longtask.rest.easyrest -DartifactId=easyrest -DarchetypeArtifactId=maven-archetype-webapp
mvn eclipse:eclipse
导入maven工程到eclipse,然后添加如下内容到pom.xml中:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.longtask.rest.easyrest</groupId>
<artifactId>easyrest</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>easyrest Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>jboss</id>
<url>http://repository.jboss.org/maven2</url>
</repository>
</repositories>
<dependencies>
<!– core library –>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.0.1.GA</version>
</dependency>
<!– resteasy-jaxb-provider –>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-oauth</artifactId>
<version>2.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-atom-provider</artifactId>
<version>2.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cache-core</artifactId>
<version>2.0-beta-2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>easyrest</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
需要把相关到JAX-RS规范实现的包和相关的使用到的resteasy的包添加进去。
2:web.xml的配置
RESTeasy 实现了部署为WAR文件的 Servlet , 在 WEB-INF/web.xml 需要配置相关到信息。具体配置如下:
<web-app>
<display-name>easyrest</display-name>
<context-param>
<param-name>javax.ws.rs.core.Application</param-name>
<param-value>com.longtask.rest.resteasy.EasyRestApplication</param-value>
</context-param>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/services</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</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>/services/*</url-pattern>
</servlet-mapping>
</web-app>
3:应用的实现
应用:按照JSR-RS的规范,在web.xml中的配置的类,需要通过继承javax.ws.rs.core.Application实现一个类来告知有哪些应用。
public class EasyRestApplication extends Application {
HashSet<Object> singletons = new HashSet<Object>();
public EasyRestApplication() {
singletons.add(new Library());
}
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
//set.add(Library.class);
return set;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
POJO对象:用来传递相关内容,使用javax.xml.bind.annotation将Java pojo定制成XML 模式映射,提供给resteasy返回内容的时候调用。对象必须有相关到构造函数,否则报错。
JAX-RS 支持使用 JAXB (Java API for XML Binding) 将 JavaBean 绑定到 XML 或 JSON,反之亦然。JavaBean 必须使用 @XmlRootElement 注释。清单 8 使用 Contact bean 作为示例。没有明确 @XmlElement 注释的字段将包含一个名称与之相同的 XML 元素。
@XmlRootElement(name = "book")
public class Book {
private String name;
private String content;
public Book() {
}
public Book(String name, String content) {
this.name = name;
this.content = content;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
应用访问路径的设置:
@Path("/library")
public class Library{}
注:@Path表示访问到路径,必须存在于类或者是资源方法中,如果不存在,则通过相对路径来关联类或者方法。如果有@Path,而没有HTTP方法,则该方法为JAXRSResourceLocators。
GET:获取一个资源
public static List<Book> books = new ArrayList<Book>();
static{
books.add(new Book("huhu","huhu"));
books.add(new Book("haha","haha"));
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/books")
public List<Book> listBooks(){
return books;
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/book/{id}")
public Book getBook(@PathParam("id") String id){
if("1".equals(id))
return new Book("huhu","huhu");
else
return new Book("haha","haha");
}
通过启动tomcat后,通过访问:curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/books 可以获取相关到返回结果。相关参数到一些说明:
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}):返回的内容格式设置
@PathParam :访问到路径对于到参数
PUT:
@PUT
@Path("/book/{name}")
public void updateBook(@PathParam("name") PathSegment book){
Iterator<Book> it = books.iterator();
String name = String.valueOf(book.getMatrixParameters().get("name"));
String content = String.valueOf(book.getMatrixParameters().get("content"));
while(it.hasNext()){
Book booktmp = it.next();
if(name.equals(booktmp.getName())){
booktmp.setContent(content);
break;
}
}
}
PathSegment是传递多个参数的接口,可以在POST方法后面添加多个参数传入给相关方法中。
POST:
@POST
@Path("/book/{name}/{content}")
public void addBook(@PathParam("name") String name,@PathParam("name") String content){
books.add(new Book(name,content));
}
DELETE:
@DELETE
@Path("/book/{name}")
public void delBook(@PathParam("name") String name){
Iterator<Book> it = books.iterator();
while(it.hasNext()){
Book book = it.next();
if(name.equals(book.getName())){
it.remove();
}
}
}
使用mvn package命名打包工程,把工程放到tomcat webapps目录下面。目前的应用只是简单到测试,涉及到和Spring等框架的交互,OAUTH协议等内容暂时不考虑。更多到内容请参考官方文档。
用cURL简单测试restful web service
#test GET
curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/books
curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/book/1
#test POST
curl -i -H "Accept: application/json" -X POST http://localhost:8081/easyrest/services/library/book/lala/lala
curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/books
#test DELETE
curl -i -H "Accept: application/json" -X DELETE http://localhost:8081/easyrest/services/library/book/lala
#test PUT not success
curl -i -H "Accept: application/json" -X PUT http://localhost:8081/easyrest/services/library/book;name=haha;content=xiugai
注:Curl 是一个流行的命令行工具,可以向使用 HTTP 和 HTTPS 协议的服务器发送请求。这是一个与 RESTful Web 服务通讯的好工具,因为它可以通过任何 HTTP 方法发送内容。Curl 已经在 Linux 和 Mac 中自带。
Link:http://www.longtask.com/blog/?p=610
REST简介
REST(Representational State Transfer)中文解释为“表述性状态转移”,是2000年由Roy Fielding 在他的博士论文 《 Architectural Styles and the Design of Network-based Software Architectures 》中提出的架构风格。REST是基于HTTP,URI,XML,JSON等协议或者标准,它促使了http协议的更加正确使用。相对于SOAP和WSDL提供的web service方案,REST显得更加简单。
基于REST的web service应该遵守一些基本的原则:
1:资源的识别:系统中的每一个对象或是资源都可以通过一个唯一的 URI 来进行寻址,URI 的结构应该简单、可预测且易于理解,比如定义目录结构式的 URI。
2:协议: 以遵循 HTTP/1.1 RFC2616 所定义的协议的方式显式地使用 HTTP 方法,建立创建、检索、更新和删除(CRUD:Create, Retrieve, Update and Delete)操作与 HTTP 方法之间的一对一映射:
POST: 在服务器上创建资源;
GET: 检索某个资源;
PUT: 更改资源状态或对其进行更新;
DELETE: 删除某个资源。
3:自描述的消息:URI 所访问的每个资源都可以使用不同的形式加以表示(比如 XML 或者 JSON),具体的表现形式取决于访问资源的客户端,客户端与服务提供者使用一种内容协商的机制(请求头与 MIME 类型)来选择合适的数据格式,最小化彼此之间的数据耦合。
Java Rest Framework
1:Restlet: 出现的较早,在JAX-RS之前就有了,支持的框架较多,但是使用起来不够简单。
1:CXF: 是Celtix 和 XFire合并后的项目,支持SOAP,WSDL,JSR-WS,REST,配置较为复杂,侵入性太强,单纯构建restful web service显得较重。
2:Resteasy: 是jboss下面一个对JAX-RS(JSR311)的一个实现,使用起来简单方便,支持spring,oauth等。
3:Jersey: 是sun公司对JAX-RS(JSR311)的一个参考实现,不过现在在逐渐的摆脱参考实现的阴影,逐渐渗透到企业应用,和sun的glassfish和netbeans结合使用可以很方便的构建restful web service。
实现restful web service使用CXF和restlet都显得太重,使用Jersey总是觉得这个是官方的参考实现,看看Easyrest的文档还是较为全面,所以选择Easyrest来作为rest api的java框架。
注:JSR 311 或 JAX-RS(用于 RESTful Web Services 的 Java API)的提议开始于 2007 年,1.0 版本到 2008 年 10 月定稿。目前,JSR 311 版本 1.1 还处于草案阶段。该 JSR 的目的是提供一组 API 以简化 REST 样式的 Web 服务的开发。
RESTEasy的一些功能点
实现中遵守 JAX-RS 规范
需要 JDK 5 或者以上版本的应用服务器中运行
支持在应用服务器中作 junit 测试
使用annotations更简单的写客户端应用 (JAX-RS 只定义了服务器端的)
支持HTTP 1.1缓存语义包括缓存。
支持多种格式: XML, JSON, YAML, Fastinfoset, Multipart, XOP, Atom, etc.
支持JAXB 和XML, JSON, Jackson, Fastinfoset, and Atom 互转
支持GZIP ,JBoss Web, Tomcat 6, and Servlet 3.0,EJB, Seam, Guice, Spring, and Spring MVC integration
使用Resteasy构建 restful web service
把对图书馆的书籍的操作作为例子,讨论使用resteasy构建restful web service的方法。中间包括pom.xml的配置,web.xml的配置,相关上下文类的实现,核心类中到一些方法。
1:创建工程,配置pom.xml
mvn archetype:create -DgroupId=com.longtask.rest.easyrest -DartifactId=easyrest -DarchetypeArtifactId=maven-archetype-webapp
mvn eclipse:eclipse
导入maven工程到eclipse,然后添加如下内容到pom.xml中:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.longtask.rest.easyrest</groupId>
<artifactId>easyrest</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>easyrest Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>jboss</id>
<url>http://repository.jboss.org/maven2</url>
</repository>
</repositories>
<dependencies>
<!– core library –>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.0.1.GA</version>
</dependency>
<!– resteasy-jaxb-provider –>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-oauth</artifactId>
<version>2.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-atom-provider</artifactId>
<version>2.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cache-core</artifactId>
<version>2.0-beta-2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>easyrest</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
需要把相关到JAX-RS规范实现的包和相关的使用到的resteasy的包添加进去。
2:web.xml的配置
RESTeasy 实现了部署为WAR文件的 Servlet , 在 WEB-INF/web.xml 需要配置相关到信息。具体配置如下:
<web-app>
<display-name>easyrest</display-name>
<context-param>
<param-name>javax.ws.rs.core.Application</param-name>
<param-value>com.longtask.rest.resteasy.EasyRestApplication</param-value>
</context-param>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/services</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</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>/services/*</url-pattern>
</servlet-mapping>
</web-app>
3:应用的实现
应用:按照JSR-RS的规范,在web.xml中的配置的类,需要通过继承javax.ws.rs.core.Application实现一个类来告知有哪些应用。
public class EasyRestApplication extends Application {
HashSet<Object> singletons = new HashSet<Object>();
public EasyRestApplication() {
singletons.add(new Library());
}
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
//set.add(Library.class);
return set;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
POJO对象:用来传递相关内容,使用javax.xml.bind.annotation将Java pojo定制成XML 模式映射,提供给resteasy返回内容的时候调用。对象必须有相关到构造函数,否则报错。
JAX-RS 支持使用 JAXB (Java API for XML Binding) 将 JavaBean 绑定到 XML 或 JSON,反之亦然。JavaBean 必须使用 @XmlRootElement 注释。清单 8 使用 Contact bean 作为示例。没有明确 @XmlElement 注释的字段将包含一个名称与之相同的 XML 元素。
@XmlRootElement(name = "book")
public class Book {
private String name;
private String content;
public Book() {
}
public Book(String name, String content) {
this.name = name;
this.content = content;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
应用访问路径的设置:
@Path("/library")
public class Library{}
注:@Path表示访问到路径,必须存在于类或者是资源方法中,如果不存在,则通过相对路径来关联类或者方法。如果有@Path,而没有HTTP方法,则该方法为JAXRSResourceLocators。
GET:获取一个资源
public static List<Book> books = new ArrayList<Book>();
static{
books.add(new Book("huhu","huhu"));
books.add(new Book("haha","haha"));
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/books")
public List<Book> listBooks(){
return books;
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/book/{id}")
public Book getBook(@PathParam("id") String id){
if("1".equals(id))
return new Book("huhu","huhu");
else
return new Book("haha","haha");
}
通过启动tomcat后,通过访问:curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/books 可以获取相关到返回结果。相关参数到一些说明:
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}):返回的内容格式设置
@PathParam :访问到路径对于到参数
PUT:
@PUT
@Path("/book/{name}")
public void updateBook(@PathParam("name") PathSegment book){
Iterator<Book> it = books.iterator();
String name = String.valueOf(book.getMatrixParameters().get("name"));
String content = String.valueOf(book.getMatrixParameters().get("content"));
while(it.hasNext()){
Book booktmp = it.next();
if(name.equals(booktmp.getName())){
booktmp.setContent(content);
break;
}
}
}
PathSegment是传递多个参数的接口,可以在POST方法后面添加多个参数传入给相关方法中。
POST:
@POST
@Path("/book/{name}/{content}")
public void addBook(@PathParam("name") String name,@PathParam("name") String content){
books.add(new Book(name,content));
}
DELETE:
@DELETE
@Path("/book/{name}")
public void delBook(@PathParam("name") String name){
Iterator<Book> it = books.iterator();
while(it.hasNext()){
Book book = it.next();
if(name.equals(book.getName())){
it.remove();
}
}
}
使用mvn package命名打包工程,把工程放到tomcat webapps目录下面。目前的应用只是简单到测试,涉及到和Spring等框架的交互,OAUTH协议等内容暂时不考虑。更多到内容请参考官方文档。
用cURL简单测试restful web service
#test GET
curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/books
curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/book/1
#test POST
curl -i -H "Accept: application/json" -X POST http://localhost:8081/easyrest/services/library/book/lala/lala
curl -i -H "Accept: application/json" http://localhost:8081/easyrest/services/library/books
#test DELETE
curl -i -H "Accept: application/json" -X DELETE http://localhost:8081/easyrest/services/library/book/lala
#test PUT not success
curl -i -H "Accept: application/json" -X PUT http://localhost:8081/easyrest/services/library/book;name=haha;content=xiugai
注:Curl 是一个流行的命令行工具,可以向使用 HTTP 和 HTTPS 协议的服务器发送请求。这是一个与 RESTful Web 服务通讯的好工具,因为它可以通过任何 HTTP 方法发送内容。Curl 已经在 Linux 和 Mac 中自带。
Link:http://www.longtask.com/blog/?p=610
发表评论
-
CAS
2012-11-29 15:47 1187单点登录(Single Sign On , ... -
jvm的内存溢出异常
2012-09-25 09:17 819LINK:http://www.cnblogs.com/eva ... -
jBPM4开发入门
2012-08-20 15:23 935jBPM(java Business Process Ma ... -
给js文件传参数
2012-07-10 10:59 2671给js文件传参数 一、利用全局变量 这是最简单的一种方式,比 ... -
Groovy入门教程
2012-06-19 13:39 955Groovy入门教程 kmyhy@126.com 2009- ... -
正则表达式
2012-05-25 14:55 9081、 常用的元字符 . 匹配除换行符以外的任意字符 ... -
shiro spring 配置
2012-05-24 15:57 1947Apache Shrio是一个安全认证框架,和Spring S ... -
tomcat ssh
2012-05-18 16:22 1001生成服务器证书: keytool -genkey -v -al ... -
git 多人操作
2012-05-18 15:34 1029GIT的介绍就不多说了。这里只是简单的写些入门的操作。 这里 ... -
jetty快速入门与嵌入使用 jetty
2012-05-17 16:09 1042看到开源项目发布的时候都带一个 jsp 容器(jetty)。拿 ... -
一些链接
2012-05-08 14:26 683windows 安装 apache php wordpress ...
相关推荐
Jetty是一款轻量级、高性能的Java Servlet容器,而RestEasy是JAX-RS(Java API for RESTful Web Services)的一个实现,使得创建RESTful服务变得简单。通过将这两者集成,我们可以构建一个快速、灵活且易于维护的Web...
本文将深入探讨如何使用JAX-RS来构建RESTful Web Service,并结合实际代码示例进行解析。 首先,理解RESTful架构风格的核心概念至关重要。REST强调资源的概念,通过URI(统一资源标识符)来唯一标识每个资源。HTTP...
在Spring框架支持REST之前,人们会使用其他几种实现技术来创建Java RESTful Web Services,如Restlet、RestEasy和Jersey。Jersey是其中最值得注意的,它是JAX-RS(JSR 311)的参考实现。 Spring是一个得到广泛...
- **RESTEasy**:提供了一套完整的框架来构建RESTful Web Services。 #### 四、Jersey客户端API的优势 - **作为JAX-RS规范的一部分**,Jersey客户端API经过严格的内部测试,确保了其生产级别的稳定性和可靠性。 - ...
A step-by-step guide portraying the importance of securing a RESTful web service with simple examples applied to real-world scenarios In Detail This book will serve as a practical companion for you to...
本文将详细介绍如何使用Eclipse IDE创建一个RESTful Web服务工程。 首先,我们需要确保Eclipse已经安装了Java开发工具(JDT)和Web Tools Platform(WTP)。如果没有,可以通过Eclipse Marketplace搜索并安装它们。...
这些文档可能包含了关于RESTful服务的基础知识、设计原则以及如何使用RestEasy进行实现的详细步骤。RESTful服务的核心概念包括URI(统一资源标识符)、HTTP方法(GET、POST、PUT、DELETE等)、状态码以及资源表示。...
2. JAX-RS(Java API for RESTful Web Services):Java平台上的REST服务开发标准,如Jersey和RESTEasy库。 六、Web服务的最佳实践 1. 设计清晰的API接口,遵循命名规范,使服务易于理解和使用。 2. 使用版本控制,...
实现RESTful Web服务通常使用Java的JAX-RS(Java API for RESTful Web Services)标准。常见的JAX-RS实现有Jersey、RESTEasy和Apache CXF等。开发者可以通过定义资源类和资源方法,以及使用注解来配置路由和HTTP...
- `Resources`:表示资源的Java类,这些类通常会继承自Java的`javax.ws.rs.core.Resource`或者使用JAX-RS(Java API for RESTful Web Services)框架如Jersey或RESTEasy提供的注解来定义资源方法。 - `Component`:...
在IT行业中,RESTful API是服务端与客户端通信的常用方式,而RESTEasy是一个流行的Java框架,用于构建符合REST原则的Web服务。本篇将详细探讨如何在RESTEasy中设置超时时间,以及相关的源码解析和工具使用。 首先,...
在Java中,可以使用JAX-RS(Java API for RESTful Web Services)来创建REST服务,如Jersey或RESTEasy库。 3. WSDL:WSDL是XML格式的规范,用于描述Web服务及其接口。它定义了服务的位置、使用的消息协议以及服务...
开发Web服务通常涉及使用像Apache Axis、JAX-WS或RESTEasy这样的工具和框架。这些工具简化了服务的创建、部署和测试过程。 10. **服务测试** 使用工具如SOAPUI,开发者可以测试Web服务的正确性和性能,确保它们...
- Java中常见的实现RESTful服务的框架有JAX-RS(Java API for RESTful Web Services),如Jersey和RESTEasy。 - JAX-RS提供注解,如`@Path`、`@GET`、`@POST`、`@PUT`、`@DELETE`,用于标记资源类和方法。 4. **@...
在Java中,常见的Web服务框架有JAX-WS(Java API for XML Web Services)用于SOAP服务,而JAX-RS(Java API for RESTful Web Services)则用于REST服务。 二、创建Web服务 1. **选择Web服务类型**:确定你的项目是...
2. JAX-RS(Java API for RESTful Web Services):用于构建RESTful Web服务,如Jersey、RESTEasy和Spring MVC等实现。 三、开启Web服务 1. 创建服务端:使用JAX-WS或JAX-RS,定义服务接口和实现,然后部署到应用...
Java中实现REST服务常使用JAX-RS(Java API for RESTful Web Services)框架,如Jersey或RESTEasy。通过使用`@Path`、`@GET`、`@POST`等注解,可以将HTTP请求映射到Java方法。 5. **JAXB** JAXB是Java中处理XML...
在云门户的开发中,使用了RESTEasy,这是一个JAX-RS(Java API for RESTful Web Services)的实现,它允许开发者轻松地在Java EE应用中构建RESTful服务。RESTEasy与Spring框架结合,可以方便地进行依赖注入,提高...
本示例是使用Java EE平台来实现一个RESTful Web Service的简单应用,名为"RESTful_WS_Example",并且已经创建了版本分支v1.1,这表明项目正在进行持续的开发和改进。 首先,我们来深入理解RESTful架构原则: 1. ...
在Java中,开发RESTful服务通常使用Java API for RESTful Web Services (JAX-RS)规范,如Jersey、RESTEasy或Apache CXF等实现。本项目“restfulservice”可能是一个使用这些框架创建的示例应用。 首先,我们需要...