日期:2014-05-18  浏览次数:21312 次

webservice传递List对象
用的axis2做的webservice

刚学会的……

前辈教的,很简单就会了!但是不知道怎么传递复杂的对象。现在做的项目就是要传递List<javaBean>,不知道怎么做了……

从网上搜了好久,发现都是要改写wsdd文件什么的。可是使用axis的好处是可以根据wsdl自动生成大部分代码。我做的webservice的时候只改写了web.xml,并且添加了一个services.xml,就把webservice做好了,然后new->other->Axis2 Code Generator,一步一步生成客户端编码的,所以从网上搜得方法,我直接看晕了,感觉在我这不适用!


求哪位大虾给指点……

急……

谢谢……

------解决方案--------------------
不知道你看的是什么材料,在wsdl语言里面从来没有说描述List的类型。因为IDL要跨语言,有些语言里面有List有些语言压根就没有这个,所以根本没有直接修改wsdd文件的方法。
实际上java做webservice开发如果传递List<JavaBean>对象,是采用的将List转化为JavaBean数组的方法,在一段将List转化为数组然后wsdl描述数组进行传递,另外一方接受到数组之后处理——如果另外一方也是java解析,可以重新转化为List<JavaBean>,如果是C#也可以转成相应的列表
我们上学期软件工程作业就遇到这个问题,解决思路也是这个。
JavaBean里面数据类型和引用对象类型要符合JavaBean规范,空的构造方法,实现序列化接口,这个你们应该知道的吧
------解决方案--------------------
List转化为JavaBean的数组,注意转化为数组而不是JavaBean,具体的实现就是List转化为数组的语法
还有wsdl不是生成的,wsdl是webservice description language是语言,生成的文件是wsdd文件其实就是一个xml文件
具体的例子代码太多了,跟业务逻辑柔和在一起,你是想要转换为数组的么?给你贴具体转换的代码
Java code

@Override
    public EventIdl[] find(String queryString) {
        Session session = HibernateUtil.getSession();
        Transaction ts = session.beginTransaction();
        List lst = session.createQuery(queryString).list();
        ts.commit();
        HibernateUtil.closeSession();//上面代码都是通过Hibernate获得服务器的查询结果
               //查询结果是一个List<Event>类型
        
        EventIdl[] eis = new EventIdl[lst.size()];//新建同样长度数组
        Iterator iter = lst.iterator();
        int i = 0;
        while(iter.hasNext()) {
            Event e = (Event) iter.next();//获得list里面数据,进行必要转化
                        //在你的程序里面如果Event符合JavaBean规范就可以直接用Event数组
                        //我们程序里面的Event有个字段不符合规范,转换为EventIdl类型
            eis[i++] = Event.toEventIdl(e);//对每个数组元素赋值
        }
        return eis;
    }

------解决方案--------------------
你webservice什么水平,如果利用axis2发送和接收JavaBean的程序基础有么?

如果有的话,在客户端没有什么特别的,就是接收到的变成相应的对象数组罢了

还有webservice涉及东西比较多,不像一个GUI纯Java代码给你就贴上来,就是给你

说怎么传List的思路,你如果提不出再针对和具体的问题,笼统的要代码没多少意义的

肯定的说客户端不需要更改什么配置,需要写代码接收对象,但是需要服务端写好的webservice在应用服务器

上成功发布才行


探讨
引用:
List转化为JavaBean的数组,注意转化为数组而不是JavaBean,具体的实现就是List转化为数组的语法
还有wsdl不是生成的,wsdl是webservice description language是语言,生成的文件是wsdd文件其实就是一个xml文件
具体的例子代码太多了,跟业务逻辑柔和在一起,你是想要转换为数组的么?给你贴具体……

------解决方案--------------------
wsdd这些xml文件是利用工具自动生成的,不是不需要写…… 


探讨

引用:
你webservice什么水平,如果利用axis2发送和接收JavaBean的程序基础有么?

如果有的话,在客户端没有什么特别的,就是接收到的变成相应的对象数组罢了

还有webservice涉及东西比较多,不像一个GUI纯Java代码给你就贴上来,就是给你

说怎么传List的思路,你如果提不出再针对和具体的问题,笼统的要代码没多……

------解决方案--------------------
你查看axis2的入门实例,就能找到wsdd文件,说了是自动给你生成的,你要修改什么,本来就不想让你修改的

没给你发送和接收的程序,我重申一遍,我的回答就是针对如何发送和装换List数组,所以贴出来的就跟这个

有关就是List转化为数组了

怎么接收和发送数组对象跟axis2发送普通JavaBean对象一个道理

探讨
引用:
wsdd这些xml文件是利用工具自动生成的,不是不需要写……


不好意思,惹你不耐烦了……

我找了找,并没有发现wsdd文件啊,还有,是不是需要修改wsdd文件啊?如果是的话,那需要怎么修改啊?

还有一点啊,你给的代码有一些我没太明白,是不是里面有利用axis2发送和接收JavaBean的程序啊?