1、CXF介绍
CXF 框架是一种基于 Servlet 技术的 SOA 应用开发框架,要正常运行基于 CXF 应用框架开发的企业应用,除了 CXF 框架本身之外,还需要 JDK 和 Servlet 容器的支持。
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。
JAX-RS: Java API for RESTful Web Services is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural style.
CXF supports JAX-RS (JSR-311), the Java API for RESTful Web Services. JAX-RS standardizes the way RESTful services can be developed in Java.
2、下载CXF:
可以从官网上进行下载:
http://cxf.apache.org/download.html
3、下面是一个JAX-RS实现的简单例子:
3.1、首先在Eclipse中创建一个Web项目。
把需要的Jar包引入到Web项目中,所有的JAR包都位于CXF解压文件的lib文件目录下。
3.2、添加部署描述符:
在web.xml文件中添加如下配置信息:
这个配置其实就是配置一个Servlet,这个Servlet是CXF的核心处理类,负责处理所有的请求。当请求的URL和servlet-mapping中的url-pattern中的url匹配时,则找到服务器中对应的Service进行处理。
这里配置了拦截以/bookService/开头的链接进行使用Service服务。
关于CXF在项目中的部署详细可以参考这篇文章:https://cwiki.apache.org/confluence/display/CXF20DOC/Servlet+Transport
3.3、接下来是编写服务器端的Service:
这里使用到了一个实体类Book:
public class Book {
private String bookName;
private String bookPrice;
private String author;
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookPrice() {
return bookPrice;
}
public void setBookPrice(String bookPrice) {
this.bookPrice = bookPrice;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
接下来是Service服务的编写:
@Path(“/bookService”)
public class BookService {
// private static Logger logger = LoggerFactory
// .getLogger(QuestionnaireService.class);
@POST
@Path("/getBookById/{id}")
@Produces("application/json")
public String getBookById(@PathParam("id") String id) {
return "Core Java!";
}
@GET
@Path("/{qnid}/{name}")
@Produces("application/json")
public void addBook(
@PathParam("qnid") String qnid, @PathParam("name") String name) {
}
}
这里以注解的形式把服务注册到Tomcat容器中,各注解的基本解释如下:
**@Path:**访问该Service的Service名
**@POST @GET:**访问该Service的某个方法时使用的HTTP请求方式
**@Produces:**访问Service中某个具体方法时需要提供的路径
**@PathParam:**从URL中传递过来的参数信息
如上面的Service如果需要访问getBookById方法则需要提供如下格式的链接:
bookService/getBookById/123
3.4、接下来就是在页面中获取请求了,我们可以使用Ajax请求,这里就使用YUI的Ajax请求作为例子:
关于YUI的使用可以参考这篇文章:YUI介绍以及快速入门 Yahoo的JS框架