加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我的第一个webservice接口遇到的问题

发布时间:2020-12-16 21:59:10 所属栏目:安全 来源:网络整理
导读:我对webservice一直觉得很陌生很难理解,工作中遇到了需要使用webservice的情况只好硬着头皮去做。 我做了一个webservice接口: ePolicyCallBackWSDD.java: public class ePolicyCallBackWSDD { ? ? public static Logger logger = Logger.getLogger(ePolicy

我对webservice一直觉得很陌生很难理解,工作中遇到了需要使用webservice的情况只好硬着头皮去做。

我做了一个webservice接口:

ePolicyCallBackWSDD.java:

public class ePolicyCallBackWSDD {
? ? public static Logger logger = Logger.getLogger(ePolicyCallBackWSDD.class);
public synchronized int ?saveCallBackPolicy(CallBackPolicyInfo cbpi){
CallBackWSDDService wsd=new CallBackWSDDService();

int rt=wsd.saveCallBackPolicy(cbpi);
System.out.println(rt);
logger.info("saveCallBackPolicy:return="+rt);
return rt;
}

CallBackWSDDService.java:

public int saveCallBackPolicy(CallBackPolicyInfo cbpi) {
SessionHibernate bhd ?= new SessionHibernate();
BaseHibernateDAO bd=new BaseHibernateDAO();

? ? ? ? ? ? ? ........................

? ? ? ?//保存CallBackPolicyInfo参数,返回结果

}

在server-config.wsdd 文件中做了如下配置:

? <service name="ePolicyCallBackWSDD" provider="java:RPC">
? <parameter name="allowedMethods" value="*"/>
? <parameter name="scope" value="request"/>
? <parameter name="className" value="com.generaliChina.callCenter.callBack.webService.ePolicyCallBackWSDD"/>
?</service>


以为万事大吉,把接口地址给客户端同事让他测试,结果报错:

org.xml.sax.SAXException: Deserializing parameter 'cbpi':?could not find deserializer for type {http://business.hibernate.callBack.callCenter.generaliChina.com}CallBackPolicyInfo


客户端同事问我能不能把参数改一下,不要使用对象,用数组或者列表,我不死心,觉得总会找到报错原因的,就去查资料,找到了如下答案:

错误提示已经很明确了说你的方法中的book变量没有指定消息解析器,对于自定义类型(即自定义类)必须指定解析器否则AXIS不知道如何把SOAPMessage和方法参数之间进行转换,在wsdd部署文件中的该服务的<service></service>中增加子元素:
<beanMapping qname="myNS:Book" xmlns:myNS="urn:BookService" languageSpecificType="java:Book类的完全类名称"/>
我试着改了一下,在server-config.wsdd文件中作了修改:
? <service name="ePolicyCallBackWSDD" provider="java:RPC">
? <parameter name="allowedMethods" value="*"/>
? <parameter name="scope" value="request"/>
? <parameter name="className" value="com.generaliChina.callCenter.callBack.webService.ePolicyCallBackWSDD"/>
?<beanMapping qname="myNS:CallBackPolicyInfo" xmlns:myNS="urn:ePolicyCallBackWSDD" languageSpecificType="java:com.generaliChina.callCenter.callBack.hibernate.business.CallBackPolicyInfo"/>
?</service>

再次测试,ok!很激动,感谢万能的网友。

原文地址如下:

https://zhidao.baidu.com/question/121567050.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读