【webservice】818开发webservice过程中遇到的异常

还是关于axis2的知识哦。webservice的开发,包括服务端的开发、客户端的开发。在“服务端的开发”方面通常是部署好axis2的环境、完成工程的设计与编程、打包发布,一般来说不会出现异常(前提是基本功扎实),然而,在“客户端的开发”方面就不好说了。下面就简单说一下客户端开发可能会出现的问题吧。

1、生成客户端代码时报错。例如用axis2的生成工具去搞axis1的wsdl(这个可以参考前面的博文哦),报错信息是org.apache.axis2.wsdl.codegen.CodeGenerationException  : java.lang.RuntimeException: java.lang.reflect.InvocationTargetException。网上的说法一致是wsdl有问题,说法是正确的,但不够详细。后来webservice服务端厂家提示要用axis1的生成工具,这才解决了问题。貌似没看到其他朋友有这样的遭遇呢,犯错就是学习,呵呵。

2、axis2生成CXF的webservice的wsdl。有一次遇到一个wsdl,和平时看的axis2的wsdl有点不一样,而最后还是可以顺利生成客户端代码,也就是stub类。但是,拿到了这个stub类,却不能和平常一样写客户端代码(平常的做法是,new一个stub类对象,直接调用其子类、子方法就完事了)。后来有群友帮忙,才知道这是csf生成的wsdl,热心的群友还帮我生成了cxf的客户端代码。可是我用axis2的啊,但是还是非常感谢他。再后来,我问厂家拿了报文,根据报文的xml(是soap协议的)一步一步调用才解决了问题。说多了都是泪,直接上代码:

//set值过程  --- 注意参考报文
ISPPNPIServiceStub sub = new ISPPNPIServiceStub();
ISPPNPIServiceStub.Root rootSend = new ISPPNPIServiceStub.Root();
ISPPNPIServiceStub.Msg_head rMsg_head = new ISPPNPIServiceStub.Msg_head();
ISPPNPIServiceStub.Interface_msg rInterfaceMsg = new ISPPNPIServiceStub.Interface_msg();
ISPPNPIServiceStub.Directive rDirective = new ISPPNPIServiceStub.Directive();
ISPPNPIServiceStub.ServiceClass rServiceClass = new ISPPNPIServiceStub.ServiceClass();
ISPPNPIServiceStub.ServiceSubClass rServiceSubClass = new ISPPNPIServiceStub.ServiceSubClass();
ISPPNPIServiceStub.Method rMethod = new ISPPNPIServiceStub.Method();
rMsg_head.setTime("String");
rMsg_head.setFrom("String");
rMsg_head.setTo("String");
rMsg_head.setMsg_type("String");
rMsg_head.setSerial(ipString);
rMethod.setName("IssuePpcCard");//对于报文:<Method Name="IssuePpcCard">
rMethod.setMDN(number);
rMethod.setPWD(pwd);
rServiceSubClass.setName("CSPpcMemberService");
rServiceSubClass.setName("CSService");
rServiceSubClass.setMethod(rMethod);
rServiceClass.setServiceSubClass(rServiceSubClass);
rDirective.setServiceClass(rServiceClass);
rInterfaceMsg.setDirective(rDirective);
rootSend.setInterface_msg(rInterfaceMsg);
rootSend.setMsg_head(rMsg_head);

ISPPNPIServiceStub.Root rootRS = sub.SYNNPIAPI(rootSend, null, null, null, null);
ISPPNPIServiceStub.ResponseSubClass responseSubClass = new ISPPNPIServiceStub.ResponseSubClass();
responseSubClass = rootRS.getInterface_msg().getMsg_response().getResponseClass().getResponseSubClass();

String returnData = JSONObject.fromObject(responseSubClass).toString();

3、查询超时。这个异常就是connect timeout了,因为服务端数据量太大,查询速度慢,返回数据也比较多,整个调用过程超出了默认的时间,解决办法是在生成的stub类的构造函数(有多个哦,别弄错了哦)里面添加这行: _serviceClient.getOptions().setTimeOutInMilliSeconds(600000L);//10 mins timeout。这样一来,stub类实例化的时候会重设连接时间。

4、出现常见的 nullPointException、sqlException等等,那估计就是自己的代码有问题了。

总而言之:服务端开发一般不出错;客户端开发时,先问厂家拿wsdl和url,调不通就问厂家拿报文就是了,如果拿了报文后还是怎么弄也弄不好?最后一招:放弃axis,直接写servlet(也就是要弄javaweb系统了)!

老鸟勿喷哦~ 转载请说明出自whilejolly:http://blog.csdn.net/seedingly/article/details/39052189

时间: 2024-08-28 07:33:22

【webservice】818开发webservice过程中遇到的异常的相关文章

【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs

异常: 2014-02-24 12:15:48,507 WARN  [Thread-2] util.DynamicClassLoader (DynamicClassLoader.java:<init>(106)) - Failed to identify the fs of dir hdfs://fulonghadoop/hbase/lib, ignored java.io.IOException: No FileSystem for scheme: hdfs 解决: 在pom文件中加入: &

【10.2.3】ArcGIS Runtime for Android搭建开发环境过程中问题详解

一.Visual Studio Ultimate2012安装过程问题 1.问题描述 安装完成后,您将看到一条消息,指示安装程序已完成,但并不是所有的功能具有已正确安装,以及以下警告消息: Microsoft Web Deploy 3.0 所需的证书不在有效期内根据当前系统时钟或签名文件中的时间戳验证时. 2.解决方案 修改电脑系统时间为2013年7月,断网后重新安装,成功后再联网. Visual Studio Ultimate2012激活密钥:RBCXF-CVBGR-382MK-DFHJ4-C6

记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题

问题一. Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd 找不到这个.wsdd的配置文件,没有自动生成! 原因是使用Eclipse自动生成axis服务端时没有执行的最后一步!如图: 当进行的这一步时,需要接着点击启动服务的按钮,之后Next按钮就会可用,点击Next按钮后就会自动生成这个.wsdd文件! 问题二. AxisFault faultCod

做开发的过程中,搞着搞着出现异常了,这可怎么办

前言 在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹 出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连 我们自己本身可能都接受不了.虽然我们在发布程序时总会经过仔细的测试,但是 难免会碰到预料不到的错误. 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)https://github.com/xiangjiana/Android-MS(VX:mm14525201314) 今天就来自定义一个程序出错时的处理,类似iphone

用AngularJS开发的过程中如何查看Scope内容

scope的继承就好比JS的原型链继承,深入理解Scope:http://www.lovelucy.info/understanding-scopes-in-angularjs.html 通过查看官网文档:http://docs.angularjs.cn/guide/scope(这个链接不知道为什么直接点击会显示Not Found,首先访问http://docs.angularjs.cn/api,点击导航栏的“英文文档”在下拉菜单中选择“Developer Guide”,左边导航栏中选择“Sco

开发android过程中eclipse闪退解决

有一次eclipse崩溃了,然后再双击就无法打开了.换了几个版本也是如此. 后来找到了这个方法:删除文件 [workspace]/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi 原来是workspace的问题. 当然还有一个办法就是换一个workspace.

WebStorm开发ReactNative过程中导入插件设置智能提示

1.clone项目到本地 git clone https://github.com/virtoolswebplayer/ReactNative-LiveTemplate 2.添加ReactNative.jar file -> import settings -> ReactNative.jar 3.ok完事 另外,如下图语言版本设置,及支持库勾选 原文地址:https://www.cnblogs.com/hzglearn/p/8856744.html

扩展jQuery的方法统一处理AJAX调用过程中产生的异常错误信息

由于项目中大量的实用了.post方法,而该方法默认不对请求的异常进行处理,后期又要处理该问题.前期的解决方案是将使用.post请求都改造为$.ajax请求,但由于两个方法的实现(需要的参数)等相差很大,修改起来很麻烦! 期间尝试使用定义"AJAX 请求发生错误时执行函数($(document).ajaxError())" 的方式来解决问题,但影响范围太大,长轮询发生的错误也被捕获,导致页面一打开就弹出系统异常的对话框. 所以这里采用扩展jQuery的方法的技术来解决问题: /* 扩展j

SOAP Webservice和RESTful Webservice

REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性.REST提出设计概念和准则为: 1.网络上的所有事物都可以被抽象为资源(resource)2.每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识3.所有的操作都是无状态的 REST简化开发,其架构遵循CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建,获取,更新和删除就可以完成相关的操作和处理.您可以通过