利用cxf框架发布webservice接口

  1. 引入cxf jar包

通过maven引入:修改pom.xml文件

<!-- cxf-begin -->

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>3.0.3</version>

</dependency>

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxrs</artifactId>

<version>3.0.3</version>

</dependency>

<dependency> <groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http-jetty</artifactId>

<version>3.1.8</version>

</dependency>

<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>3.1.12</version>

</dependency>

<!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->

<dependency>

<groupId>wsdl4j</groupId>

<artifactId>wsdl4j</artifactId>

<version>1.6.2</version>

</dependency>

<!-- cxf-end -->

手动引入maven仓库中不存在的jar包

  1. 接口

package com.webService;

import javax.jws.WebService;

/**

* webservice接口类

*/

@WebService

public interface werServiceTest {

public String receive(String paramString1);

}

  1. 实现类

package com.webService;

import javax.jws.WebService;

/**

* webservice实现类

* @WebService 注解用在类上标识这个类是一个WebService的服务类

*/

class WebServiceImpl implements werServiceTest{

@Override

public String receive(String paramString1) {

System.out.println("当前城市:"+paramString1);

if("北京".equals(paramString1)){

return paramString1+":晴转多云!";

}

return paramString1+":其他地区不清楚!!";

}

}

  1. 添加CXF的配置文件applicationContext-cxf.xml,并引入cxf的命名空间

<?xml version="1.0" encoding="utf-8"?>

<beans    xmlns="http://www.springframework.org/schema/beans"

xmlns:jaxws="http://cxf.apache.org/jaxws"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

                           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

                           http://cxf.apache.org/jaxws

                           http://cxf.apache.org/schemas/jaxws.xsd">

<!-- 通过spring管理webservice服务类 -->

<bean id="wwww" class="com.webService.WebServiceImpl"></bean>

<!-- 使用cxf发布webservice服务

引入cxf命名空间

address:服务地址

webservice地址:http://ip:端口号/项目名/web.xml url-pattern配置/webservice的address

-->

<jaxws:server address="/worksheetBackService">

<jaxws:serviceBean>

<ref bean="wwww"/>

</jaxws:serviceBean>

</jaxws:server>

</beans>

  1. 修改web.xml

把cxf的配置文件引入

配置cxf的核心servlet

<!-- begin   配置cxf核心的Servlet

作用:用来区分什么请求时一个webservice请求   -->

<servlet>

<servlet-name>workerWebSer</servlet-name>

<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>workerWebSer</servlet-name>

<url-pattern>/webservice/*</url-pattern>

</servlet-mapping>

<!-- end -->

  1. 在shiro的配置文件中放开对webservice的拦截
  1. 启动服务
  2. 访问地址

http://ip:端口号/项目名/webservice/worksheetBackService

http://localhost:8180/bd-be/webservice/worksheetBackService?wsdl

一、利用axis框架调用webservice接口:

  1. 引入axis jar包

通过maven引入:修改pom.xml文件

<!-- axis begin -->

<dependency>

<groupId>axis</groupId>

<artifactId>axis-ant</artifactId>

<version>1.4</version>

</dependency>

<dependency>

<groupId>org.apache.geronimo.bundles</groupId>

<artifactId>commons-discovery</artifactId>

<version>0.4_1</version>

</dependency>

<dependency>

<groupId>jaxrpc</groupId>

<artifactId>jaxrpc</artifactId>

<version>1.1</version>

</dependency>

<!-- axis end -->

手动导入

//axis調用(服务器端接口类上要加@WebService)

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.encoding.XMLType;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

String url = "http://192.168.1.102:8989/uapws/service/INCGSDataSyncWebService";

String xml="<?xml version='1.0' encoding='utf-8'?><service><data><SJ><ID>2c958ad66e150091016e1f8e0b6b0025</ID><XMBH>LF2019117</XMBH><XMMC>山西省易地扶贫搬迁大型安置点教育医疗设施补短板项目评估工作</XMMC><WTDW>C000100</SJ></data></service>";

String targetspace = "http://itf.ws.nc/INCGSDataSyncWebService";

String method="MDM_XMXX";

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new URL(url));

call.addParameter("string", XMLType.XSD_STRING,ParameterMode.IN);//string 是用soapui时的参数,即是wsdl方法上的name

call.setReturnType(XMLType.XSD_STRING);

call.setUseSOAPAction(true);

String obj = (String) call.invoke(new javax.xml.namespace.QName(targetspace, method),  new Object[] { xml });

System.out.println(obj);

//读取并转换String

SAXReader sax = new SAXReader();//创建一个SAXReader对象

StringReader read = new StringReader(obj);

Document document = sax.read(read);//获取document对象,如果文档无节点,则会抛出Exception提前结束

Element root = document.getRootElement();//获取根节点

Element data = root.element("mess");//获取子节点

String  resultcode=  data.elementText("returnCode");//获取节点的值

String  returnMsg=  data.elementText("returnMsg");//获取节点的值

if("0000".equals(resultcode)){

return this.buildSuccess(entity);

}else{

return this.buildError("msg", returnMsg, RequestStatusEnum.FAIL_FIELD);

}

二、利用cxf框架调用webservice接口:

1、引入jar包

  1. 把服务端的接口类复制到客户端,要保证接口类名,方法名,参数和wsdl上一致

服务器端接口类

@WebService

public interface INCGSDataSyncWebService {

public abstract String MDM_XMXX(String project);

}

客户端接口类

@WebService(targetNamespace="http://itf.ws.nc/INCGSDataSyncWebService")

public interface INCGSDataSyncWebService {

public abstract String MDM_XMXX(@WebParam(name="string")String project);

}

  1. 代码如下:

//cxf調用

String xml="<?xml version='1.0' encoding='utf-8'?><service><data><SJ><ID>2c958ad66e150091016e1f8e0b6b0025</ID></SJ></data></service>";

final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

final String address = "http://192.168.1.102:8989/uapws/service/INCGSDataSyncWebService";

factory.setAddress(address);

factory.setServiceClass(INCGSDataSyncWebService.class);//接口类名    INCGSDataSyncWebService workerService = (INCGSDataSyncWebService) factory.create();

String mdm_XMXX = workerService.MDM_XMXX(xml);

System.out.println(mdm_XMXX);

//读取并转换String

SAXReader sax = new SAXReader();//创建一个SAXReader对象

StringReader read = new StringReader(mdm_XMXX);

Document document = sax.read(read);//获取document对象,如果文档无节点,则会抛出Exception提前结束

Element root = document.getRootElement();//获取根节点

Element data = root.element("mess");//获取子节点

String  resultcode=  data.elementText("returnCode");//获取节点的值

String  returnMsg=  data.elementText("returnMsg");//获取节点的值

if("0000".equals(resultcode)){

return this.buildSuccess(entity);

}else{

return this.buildError("msg", returnMsg, RequestStatusEnum.FAIL_FIELD);

}

cxf webservice接口相关推荐

  1. cxf调用接口的几种方式_Java调用CXF WebService接口的两种方式实例

    1.静态调用 // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 判断是否抛出 ...

  2. Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?

    摘要:最近在协助同事搞Android调用WebService接口,再测试的过程中发现老师报错,经过baidu,google,终于解决了,现在记录一下: 一:错误信息: 2015-10-28 18:50 ...

  3. java cxf 工具_利用CXF工具开发WebService接口

    简单记录一下webservice接口开发以便供以后参考: 一.根据需求编写wsdl文件 WSDL的文件格式和语法我就不多说了,到网上百度一下,或者到W3CSchool去学习都可以,语法很简单,下面是我 ...

  4. apache cxf 测试webservice接口

    2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...

  5. 使用cxf发布webservice接口,以及调用webservice接口

    一.cxf发布webservice接口 添加maven依赖 <dependency><groupId>org.apache.cxf</groupId><art ...

  6. 基于CXF框架的webservice接口发布与调用

    目录 前言 正文 一,开发接口服务端(soap风格),接收SAP系统推送过来的数据 二,调用SAP提供的webservice接口(soap风格) 三,调用SRM系统提供的rest接口 四,接口调试工具 ...

  7. cxf3.2 wsdl2java异常,关于使用cxf框架调用webservice接口的异常

    做项目的时候需要调用一个webservice接口,使用的是cxf相关的包,但是在weblogic中跑的时候,程序会抛出异常,异常信息如下: Caused by: org.springframework ...

  8. Apache CXF生成java代码用java调用Webservice接口

    这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...

  9. 使用CXF调用webservice接口是超时异常的捕获处理

    在调用第三方提供的webservice接口时我们可以设置超时时间: HTTPClientPolicy client = new HTTPClientPolicy(); client.setReceiv ...

最新文章

  1. NYOJ 5177 疯牛(最大化最小值 二分搜索)
  2. 【机器学习基础】获取机器学习和深度学习的练习数据
  3. 计算机上机模拟试题答案,2016计算机二级上机模拟试题及答案
  4. 在Ubuntu上安装SAP Cloud Connector的一些错误
  5. VS2010主题设置及插件推荐
  6. SQLite数据库的特性
  7. FMS3 参数设定档修改
  8. 转载AWS 基础知识
  9. 记一次网络访问故障排查
  10. 用 Truffle 插件自动在Etherscan上验证合约代码
  11. 用PYTHON画谢尔宾斯基三角形(代码可复制)
  12. 联想win10专业版64位简体中文原版光盘镜像
  13. CSGO/steam游戏搬砖项目入行前必看知识点汇总(一)
  14. 进程间通讯(IPC)(有信号捕捉函数)
  15. NAIPC2018-K-Zoning Houses
  16. 在网页上嵌入微博--微博秀
  17. ele-ui 里面的分页操作
  18. AMI CORE8 OEM BIOS
  19. 井字棋游戏(电脑先)
  20. 二手房交易流程和税费

热门文章

  1. grep查找的内容输出到文件
  2. 2022.11.21【bug笔记】|bam文件报错:Cannot add sequence that already exists in SAMSequenceDictionary
  3. 基于基础c语言的水仙花数编程方法
  4. Pinta 1.0发布
  5. 根据IMSI区别运营商
  6. Python AI 换脸,宋小宝都能换脸刘亦菲,你的网恋对象不知道有多可怕!
  7. Altium设置菜单之系统菜单
  8. 克隆一个自己的 AI 来上网课,
  9. C++ 拉格朗日插值法优化 DP
  10. Dubious Document