1。如果出现这个异常时, 首先要确定你的 webservice 传入参数是对象还是别的, 如果是对象的话, 就说明你传入的对象有关联的对
象没有被序列化,比如说, 你的传入对象 java B , 这个java B 与 Java A 有关联, 例如 B 中引用了 A , 但是你只传入了 B 的
class 到 webservices,这是,必须将你的 A 对象也序列化后,客户端调用 webservice 时, 会将 A 序列化后返回到客户端, 下面给出个简单的事例:
TypeMappingRegistry registry = service.getTypeMappingRegistry();
TypeMapping mapping = registry.createTypeMapping();
registerBeanMapping(mapping,B.class,new QName("nameSpaceUrl","请求名称"));
registerBeanMapping(mapping,C.class,"相应名称"));
registerBeanMapping(mapping,A.class,"A 的名称"));
registry.register("http://schemas.xmlsoap.org/soap/encoding/",mapping);
mapping.register(type,qname,new BeanSerializerFactory(type,qname),
new BeanDeserializerFactory(type,qname));
}
2。 一般情况下上述代码可以解决这个报错, 如果还是不行的话, 请检查你的客户端调用版本和服务器端webservice 版本是否一些,
本人就吃过一次亏,服务器端使用 axis2 生成的服务, 我用 axis 调用,也会报如上错误, 因为 axis2 在传入、传出参数的时候做了一些
序列化的处理, 所以如果使用 axis2 生成的服务, 需要使用 RPCServiceClient 的方式来调用。 下面给出一个简单的事例:
/**
* 调用WebServices方法.
* <p>
* 调用WebService服务端的方法
* </p>
* @author liubb
* @throws AxisFault
* @throws Exception
*/
public static String invokeGetGreeting(String value,String wsdlUrl,String nameSpace,String methodName) throws AxisFault
{
String returnStr = "" ; // 返回参数
// 使用RPC方式调用WebService
RPCServiceClient rpcServiceClient = new RPCServiceClient();
Options options = rpcServiceClient.getoptions();
OMElement om = null;
// 指定调用WebService的URL
EndpointReference to = new EndpointReference(wsdlUrl);
options.setTo(to);
// 指定方法返回值的数据类型的Class对象
Class[] classes = new Class[]{String.class};
// 指定要调用的方法及WSDL文件的命名空间
QName opAddEntry = new QName(nameSpace,methodName);
// 指定getGreeting方法的参数值
Object[] opAddEntryArgs = new Object[]{value};
om = rpcServiceClient.invokeBlocking(opAddEntry,opAddEntryArgs);
returnStr = om.toString();
return returnStr ;
}
要使用 下面事例进行调用 axis2 的话, 则需要加载 axis2 中的 jar 包, jar 引用如下:
axiom-api-1.2.7.jar
axiom-impl-1.2.7.jar
axis2-adb-1.4.1.jar
axis2-kernel-1.4.1.jar
backport-util-concurrent-3.1.jar
commons-codec-1.3.jar
neethi-2.0.4.jar
stax-api-1.0-2.jar
wstx-asl-3.2.4.jar
XmlSchema-1.4.3.jar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。