读书人

webservice传递List对象解决方案

发布时间: 2012-01-02 22:40:04 作者: rapoo

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的程序啊?

读书人网 >Java Web开发

热点推荐