webservice如何定义一个map,在线等,急
我用的是xfire开发的,用java做了一个简单的测试程序
先定义了一个接口,需要传入一个map
public interface MapService {
public String getMap(Map<String,String> map);
}
然后定义了一个实现类
public class MapServiceImp implements MapService {
public String getMap(Map<String,String> map) {
String str="";
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
Object key = entry.getKey();
Object value = entry.getValue();
str+="(key=" + key.toString() + ", value=" + value.toString()+"),";
}
str="["+str.substring(0,str.length()-1)+"]";
return str;
}
}
然后在aegis.xml里面就不知道怎么定义了
是这样定义的吗?我调试了好像不正确
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping >
<method name="getMap">
<parameter index="0" keyType="java.lang.String" componentType="java.lang.String"/>
</method>
</mapping >
</mappings>
jdk是1.6的
[解决办法]
webservice是不能直接传输Map的,需要采用“曲线折中”的办法,这里的Map我觉得可以转换为一个JavaBean的数组,每个JavaBean里面一个存着键和值,JavaBean实现序列化接口就可以在webservice通过SOAP传输
接受方接收到的就是一个JavaBean的数组,如果是java调用,可以写个方法重新组装为Map