使用apache CXF和maven开发Web Service

原创 2015年11月18日 10:42:05

1、编写服务器类

   从Java6开始,WebService API从Java EE复制到了Java SE。并遵循了一系列的标准,比如JSR181(Web Service 元数据),JSR224(JAX-WS,基于XML的WebService API),JSR67(SAAJ,SOAP附件标准)等。 并分别定义到javax.jws, javax.xml.ws 和 javax.xml.soap包中。

JSR181支持使用标注(annotation)来定义WebService。在javax.jws中主要的标注类包括:

 
标注 说明
WebService 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
WebMethod 定制Web Service方法
WebParam 定制Web Service方法的参数
WebResult 定制Web Service方法的返回值
SOAPBinding 指定WebService的SOAP映射样式
使用标注可以在不改变代码逻辑的前提下让外部代码能够获得更多的元数据。

 1)创建maven工程

 2)增加CXF依赖

<!-- cxf -->
<dependency>  
    <groupId>org.apache.cxf</groupId>  
    <artifactId>cxf-rt-frontend-jaxws</artifactId>  
    <version>2.7.18</version>  
</dependency> 

<dependency>  
    <groupId>org.apache.cxf</groupId>  
    <artifactId>cxf-rt-transports-http</artifactId>  
    <version>2.7.18</version>  
</dependency>

     会把cxf相关的jar包加载进去

 3)创建服务接口

package com.mar114.cwms.webservice;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

/**
 * 
 * @author LYF
 *
 */
@WebService
public interface ICxfServiceDemo {
    @WebMethod
    public String sayHello(@WebParam(name = "username") String username);
}

 4)服务接口实现类

package com.mar114.cwms.webservice.impl;

public class CxfServiceDemoImpl implements ICxfServiceDemo{
    public String sayHello(String userName) {
         try{

return "Hello "+userName;

}catch( Exception e){

e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//手动回滚事务

}
    }
}

 5)配置WebService接口

  •  添加applicationContext-cxf.xml 接口配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://cxf.apache.org/jaxws 
http://cxf.apache.org/schemas/jaxws.xsd 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd" >

<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
     
<jaxws:endpoint id="cxfServiceDemo"  implementor="com.mar114.cwms.webservice.impl.CxfServiceDemoImpl" 
    address="/cxfDemo" > </jaxws:endpoint>

</beans>

  •   配置web.xml

<!-- CXF webservice接口 -->
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>

</servlet-mapping>

  配置applicationContext.xml(WebService配置事务

 

这样就在webService中的方法中添加了一个事务,但是如果方法出现异常我们必须抛出这个异常(即抛出异常给Spring),这样Spring才可以处理这个异常并且回滚,除上述方法之外,我们也可以手动回滚(我写的webService方法用到的就是手动回滚)

 5)WebService接口测试

 新建一个java project,命名为WebServiceTest

  在该项目中创建一个java类,即com.test.CxfServiceDemoTest,测试代码如下:


控制台输出"Hello 张三",说明WebService接口测试成功。

说明:

  如果确定webservice接口的访问地址:访问你的服务器地址+web.xml中配置的CXFServlet的拦截地址[我配的是/services/*],即http://192.168.1.131:8080/CWMS/services/【CWMS是项目名】,出现如下内容

 点击WSDL后的url,地址变为了http://192.168.1.131:8080/CWMS/services/cxfDemo?wsdl,即为CxfServiceDemoService接口的访问地址



相关文章推荐

使用apache CXF和maven开发Web Service

来源:http://www.cnblogs.com/holbrook/archive/2012/12/12/2814821.html 目前主要的java webservice...

Java使用Apache CXF开发Web Service

以前工作中也用CXF,但都是用别人现成搭好的环境,这次自己重头搭建一遍环境。过程中也有遇到的问题,也做了简单的整理。 对于CXF是干什么用的,我不想多说,大家都知道这是我们在java编程中webSe...

Apache CXF实战之九 发布使用SSL的Web Service .

在使用Web Service的时候,在很多情况下会要求我们发布ssl的web service,此时如果web service是作为一个war包部署在tomcat之类的web容器中的时候,我们可以通过修...

使用Apache CXF搭建REST风格的Web Service

使用Apache CXF搭建REST风格的Web Service
  • Rickesy
  • Rickesy
  • 2015年03月06日 17:14
  • 726

使用 Apache CXF 实现 Web Service 详解

目录[-] 1.Web service的概念2.Web Service架构和云3.Web Service的优势4.Web Service 三个基本技术 4.1 SOAP 4.2 WSDL ...

Apache CXF实战之九 发布使用SSL的Web Service

本文链接:http://blog.csdn.net/kongxx/article/details/7738717Apache CXF实战之一 Hello World Web ServiceApache...
  • kongxx
  • kongxx
  • 2012年07月12日 08:31
  • 10969

Apache CXF实战之七 使用Web Service传输文件

本文链接:http://blog.csdn.net/kongxx/article/details/7540930 Apache CXF实战之一 Hello World Web Service Ap...

Apache CXF实战之七 使用Web Service传输文件

本文链接:http://blog.csdn.net/kongxx/article/details/7540930Apache CXF实战之一 Hello World Web ServiceApache...
  • kongxx
  • kongxx
  • 2012年05月07日 07:44
  • 18202

使用 Apache CXF 实现 Web Service 详解

1.Web service的概念 什么是WebService呢?从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过...
  • jorbiee
  • jorbiee
  • 2014年05月25日 19:32
  • 289

Apache CXF Web Service Development

  • 2013年08月28日 11:33
  • 6.13MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用apache CXF和maven开发Web Service
举报原因:
原因补充:

(最多只允许输入30个字)