xfire开发webservice时返回类型是复杂对象
在myeclipse下开发的首先,有一个方法返回类型是List,里面是自定义的类的对象,没有参数。我在myeclipse自带的webservicesexplorer里可以...
在myeclipse下开发的
首先,有一个方法返回类型是List,里面是自定义的类的对象,没有参数。我在myeclipse自带的web services explorer里可以看到返回值,是正确的。但是在写客户端的时候,发现返回给我的list里面成员都是null,但是list的size是正确的
然后,因为当成员是string时,返回是list的运用是正确的。我就自己测试是否在传递自定义类时出错,写了很简单的测试
这是接口
public interface ITest {
public Entity getEn();
}
这是接口实现
public class TestImpl implements ITest {
public Entity getEn(){
Entity en = new Entity();
en.itr=8;
en.str="bless";
return en;
}
}
这是自定义类的代码
public class Entity {
public String str =new String();
public int itr ;
}
这是配置的ITest.aegis.xml
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="getEn">
<return-type componentType="test.Entity" />
</method>
</mapping>
</mappings>
这是写的测试客户端
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Service srvcModel = new ObjectServiceFactory()
.create(ITest.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String URL = "http://localhost:8080/WsTest/services/Test";
ITest srvc = null;
try {
srvc = (ITest) factory.create(
srvcModel, URL);
Entity en=new Entity();
en = srvc.getEn();
System.out.println(en.str);
System.out.println(en.itr);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
包结构是正确的
但是发现这个返回的entity的成员值还是初始化状态,服务器的代码好像没有修改,web services explorer里的soap信息如下
- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soap:Body>
- <getEnResponse xmlns="http://test">
<out />
</getEnResponse>
</soap:Body>
</soap:Envelope>
不知道为什么没有输出值
熟悉xfire开发的人看看是怎么回事 展开
首先,有一个方法返回类型是List,里面是自定义的类的对象,没有参数。我在myeclipse自带的web services explorer里可以看到返回值,是正确的。但是在写客户端的时候,发现返回给我的list里面成员都是null,但是list的size是正确的
然后,因为当成员是string时,返回是list的运用是正确的。我就自己测试是否在传递自定义类时出错,写了很简单的测试
这是接口
public interface ITest {
public Entity getEn();
}
这是接口实现
public class TestImpl implements ITest {
public Entity getEn(){
Entity en = new Entity();
en.itr=8;
en.str="bless";
return en;
}
}
这是自定义类的代码
public class Entity {
public String str =new String();
public int itr ;
}
这是配置的ITest.aegis.xml
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<mapping>
<method name="getEn">
<return-type componentType="test.Entity" />
</method>
</mapping>
</mappings>
这是写的测试客户端
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Service srvcModel = new ObjectServiceFactory()
.create(ITest.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String URL = "http://localhost:8080/WsTest/services/Test";
ITest srvc = null;
try {
srvc = (ITest) factory.create(
srvcModel, URL);
Entity en=new Entity();
en = srvc.getEn();
System.out.println(en.str);
System.out.println(en.itr);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
包结构是正确的
但是发现这个返回的entity的成员值还是初始化状态,服务器的代码好像没有修改,web services explorer里的soap信息如下
- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soap:Body>
- <getEnResponse xmlns="http://test">
<out />
</getEnResponse>
</soap:Body>
</soap:Envelope>
不知道为什么没有输出值
熟悉xfire开发的人看看是怎么回事 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询