热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通用的webService(CXF、Axis)调用工具类(无强制依赖)

要支持Axis需要这么几个不常见的依赖:org.apache.axisaxis

要支持Axis需要这么几个不常见的依赖:

org.apache.axisaxis1.4javax.xml.rpcjavax.xml.rpc-api1.1.1commons-discoverycommons-discovery0.2

import java.rmi.RemoteException;import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.commons.lang.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.bda.common.util.WebServiceUtil;
import com.bda.tag.zjdevice.api.cxf.bean.ClientRes;
import com.bda.tag.zjdevice.api.cxf.constant.AxisEnum;/*** * @author Dongguabai**/
public class ZJWebServiceClientUtil extends WebServiceUtil {public static ClientRes invokeCXF(String wsdl, String operationName, String paramXml) throws Exception {JaxWsDynamicClientFactory dcf &#61; JaxWsDynamicClientFactory.newInstance();Client client &#61; dcf.createClient(wsdl);Object[] objects &#61; client.invoke(operationName, paramXml);// 输出调用结果if (objects &#61;&#61; null || objects.length <1) {return new ClientRes(false, "返回参数列表为空&#xff01;");}return XMLUtil.analysisResXml(String.valueOf(objects[0]));}public static ClientRes invokeAxis(AxisEnum axisEnum, String paramXml) throws RemoteException, ServiceException {String result;String wsdl &#61; axisEnum.getWsdl();String operationName &#61; axisEnum.getOperationName();String paramName &#61; axisEnum.getParamName();logger.info("--------------------准备调用接口");logger.info("-------发送的wsdl:{}", wsdl);logger.info("-------发送的operationName:{}", operationName);logger.info("-------发送的paramName:{}", paramName);logger.info("-------发送的paramXml:{}", paramXml);Service service &#61; new Service();Call call &#61; (Call) service.createCall();call.setTargetEndpointAddress(wsdl);call.setEncodingStyle("utf-8");// WSDL里面描述的接口名称(要调用的方法)call.setOperationName(operationName);// 接口方法的参数名, 参数类型,参数模式 IN(输入), OUT(输出) or INOUT(输入输出)call.addParameter(paramName, XMLType.SOAP_STRING, ParameterMode.IN);// 设置被调用方法的返回值类型call.setReturnType(XMLType.XSD_STRING);// 设置方法中参数的值Object[] paramValues &#61; new Object[] { paramXml };// 给方法传递参数&#xff0c;并且调用方法result &#61; (String) call.invoke(paramValues);if (StringUtils.isEmpty(result)) {return new ClientRes(false, "返回参数列表为空&#xff01;");}return XMLUtil.analysisResXml(result);}// public static ClientRes invokeAxis(File file) {
// System.out.println("开始调用WebService");
// try {
// String endpoint &#61; "http://localhost:8080/MyProject/services/Document";
// Service service &#61; new Service();
// Call call &#61; (Call) service.createCall();
// call.setTargetEndpointAddress(new java.net.URL(endpoint));
// call.setOperationName(new QName(endpoint, "addAttachmentInfo"));
// QName qnameattachment &#61; new QName("urn:beanservice", "DataHandler");
//
// DataHandler dh &#61; new DataHandler(new FileDataSource(file));
//
// call.registerTypeMapping(dh.getClass(), qnameattachment, JAFDataHandlerSerializerFactory.class,
// JAFDataHandlerDeserializerFactory.class);
//
// //String rev &#61; (String) call.invoke(new Object[] { dh, "中国工产党.doc" });
// String rev &#61; (String) call.invoke(new Object[] {});
//
// System.out.println(rev);
// } catch (Exception e) {
// System.out.print(e.toString());
// }
//
// System.out.println("调用WebService正常结束");
// return null;
// }private static final Logger logger &#61; LoggerFactory.getLogger(ZJWebServiceClientUtil.class);private ZJWebServiceClientUtil() {}
}

 


推荐阅读
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 深入解析C#中app.config文件的配置与修改方法
    在C#开发过程中,经常需要对系统的配置文件进行读写操作,如系统初始化参数的修改或运行时参数的更新。本文将详细介绍如何在C#中正确配置和修改app.config文件,包括其结构、常见用法以及最佳实践。此外,还将探讨exe.config文件的生成机制及其在不同环境下的应用,帮助开发者更好地管理和维护应用程序的配置信息。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • Java能否直接通过HTTP将字节流绕过HEAP写入SD卡? ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
author-avatar
阳光美女新干线-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有