cxf webservice接口
利用cxf框架发布webservice接口
- 引入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包
- 接口
package com.webService;
import javax.jws.WebService;
/**
* webservice接口类
*/
@WebService
public interface werServiceTest {
public String receive(String paramString1);
}
- 实现类
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+":其他地区不清楚!!";
}
}
- 添加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>
- 修改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 -->
- 在shiro的配置文件中放开对webservice的拦截
- 启动服务
- 访问地址
http://ip:端口号/项目名/webservice/worksheetBackService
http://localhost:8180/bd-be/webservice/worksheetBackService?wsdl
一、利用axis框架调用webservice接口:
- 引入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包
- 把服务端的接口类复制到客户端,要保证接口类名,方法名,参数和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);
}
- 代码如下:
//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接口相关推荐
- cxf调用接口的几种方式_Java调用CXF WebService接口的两种方式实例
1.静态调用 // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 判断是否抛出 ...
- Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?
摘要:最近在协助同事搞Android调用WebService接口,再测试的过程中发现老师报错,经过baidu,google,终于解决了,现在记录一下: 一:错误信息: 2015-10-28 18:50 ...
- java cxf 工具_利用CXF工具开发WebService接口
简单记录一下webservice接口开发以便供以后参考: 一.根据需求编写wsdl文件 WSDL的文件格式和语法我就不多说了,到网上百度一下,或者到W3CSchool去学习都可以,语法很简单,下面是我 ...
- apache cxf 测试webservice接口
2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...
- 使用cxf发布webservice接口,以及调用webservice接口
一.cxf发布webservice接口 添加maven依赖 <dependency><groupId>org.apache.cxf</groupId><art ...
- 基于CXF框架的webservice接口发布与调用
目录 前言 正文 一,开发接口服务端(soap风格),接收SAP系统推送过来的数据 二,调用SAP提供的webservice接口(soap风格) 三,调用SRM系统提供的rest接口 四,接口调试工具 ...
- cxf3.2 wsdl2java异常,关于使用cxf框架调用webservice接口的异常
做项目的时候需要调用一个webservice接口,使用的是cxf相关的包,但是在weblogic中跑的时候,程序会抛出异常,异常信息如下: Caused by: org.springframework ...
- Apache CXF生成java代码用java调用Webservice接口
这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...
- 使用CXF调用webservice接口是超时异常的捕获处理
在调用第三方提供的webservice接口时我们可以设置超时时间: HTTPClientPolicy client = new HTTPClientPolicy(); client.setReceiv ...
最新文章
- NYOJ 5177 疯牛(最大化最小值 二分搜索)
- 【机器学习基础】获取机器学习和深度学习的练习数据
- 计算机上机模拟试题答案,2016计算机二级上机模拟试题及答案
- 在Ubuntu上安装SAP Cloud Connector的一些错误
- VS2010主题设置及插件推荐
- SQLite数据库的特性
- FMS3 参数设定档修改
- 转载AWS 基础知识
- 记一次网络访问故障排查
- 用 Truffle 插件自动在Etherscan上验证合约代码
- 用PYTHON画谢尔宾斯基三角形(代码可复制)
- 联想win10专业版64位简体中文原版光盘镜像
- CSGO/steam游戏搬砖项目入行前必看知识点汇总(一)
- 进程间通讯(IPC)(有信号捕捉函数)
- NAIPC2018-K-Zoning Houses
- 在网页上嵌入微博--微博秀
- ele-ui 里面的分页操作
- AMI CORE8 OEM BIOS
- 井字棋游戏(电脑先)
- 二手房交易流程和税费