Web Service Apache CXF介绍和一个简单的使用例子
本文由发表于6年前 | J2EE | 评论数 1 |  被围观 12,490 views+
1、CXF介绍2、下载CXF:3、下面是一个JAX-RS实现的简单例子:3.1、首先在Eclipse中创建一个Web项目。3.2、添加部署描述符:3.3、接下来是编写服务器端的Service:3.4、接下来就是在页面中获取请求了,我们可以使用Ajax请求,这里就使用YUI的Ajax请求作为例子:
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-name>CXFServlet</servlet-name>
        <servlet-class>
            org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet
        </servlet-class>
        <init-param>
            <param-name>jaxrs.serviceClasses</param-name>
            <param-value>
                com.itzhai.book.BookService
            </param-value>
        </init-param>
        <init-param>
            <param-name>jaxrs.providers</param-name>
            <param-value>
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/bookService/*</url-pattern>
    </servlet-mapping>

这个配置其实就是配置一个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请求作为例子:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取您需要的图书</title>
<script type="text/javascript" src="script/yui3/build/yui/yui-min.js"></script>
<script>
    YUI().use('node',function(Y){
        var bookId = Y.one('#book_id');
//         alert(bookId);
        Y.one('#search_book').on('click', function(){
            document.forms[0].submit();
        });
    });
</script>
</head>
<body>

<form action="bookService/getBookById/123" method="post">
    请输入图书编号:<input type="text" id="book_id" />
    <input type="button" value="查找" id="search_book" />
</form>
</body>
</html>
关于YUI的使用可以参考这篇文章:YUI介绍以及快速入门 Yahoo的JS框架
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/web-service-apache-cxf-introduction-and-use-a-simple-example.html
关键字: , , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 12/19
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    一条评论
  1. 广州私家侦探 2011年12月28日03:40:08  #-49楼 回复 回复

    不错不错。学习了。

给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 jQuery上传插件Uploadify的使用例子和相关资料 2012/1/11
2 Java笔记 – 扫描输入 2013/12/16
3 JPA一对多映射相关例子以及查找注意事项 2012/5/6
4 Java Web笔记 – 客户化JSP标签库 自定义标签 2011/11/12
5 C++语法笔记 – 数组 指针与字符串 2011/9/4
6 Javascript笔记汇总 | IT宅文章归档 AD 2012/05/23 2012/5/22
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.