在java apache web服务调用中设置复杂类型

时间:2014-05-21 12:46:23

标签: java apache web-services wsdl complextype

必须使用java和apache轴调用wsdl中包含复杂tyles的远程Web服务。 解决方案http://axis.apache.org/axis/java/user-guide.html#WSDL2JavaBuildingStubsSkeletonsAndDataTypesFromWSDL对我来说还不够,因为我必须支持任何类型的类,我的意思是序列化类直到运行时才确定。我对简单类型没有问题,但是当在wsdl中找到复杂类型时,我会遇到问题。参见示例

private Object getParamData(org.apache.axis.client.Call call, Parameter parameter, String arg, Parameters  parameters) {

QName paramType = org.apache.axis.wsdl.toJava.Utils.getXSIType(parameter);
TypeEntry type = parameter.getType();

if (type instanceof BaseType && ((BaseType)type).isBaseType()) {
    DeserializerFactory factory = call.getTypeMapping().getDeserializer(paramType);
    Deserializer deserializer = factory.getDeserializerAs(Constants.AXIS_SAX);
    return ((SimpleDeserializer)deserializer).makeValue(arg);
} else {
// What to do for complex types?
// ElementDeserializerFactory defact =  new ElementDeserializerFactory();
// ((Call)iCall).registerTypeMapping(Element.class, paramType, new ElementSerializerFactory, defact);

我可以创建反序列化器工厂,但是主动反序列化器是空的,我可以获得任何返回值。

0 个答案:

没有答案