XFire编写WebService 怎么返回数据? 高手进、、、急!!!!

漫天雪_昆仑巅
博客专家认证
2012-01-10 05:35:46
最近想弄下WebService,由于使用的Java工具是MyEclipse,所以就用其自带的XFire比较简单,服务端、客户端都弄好了,现在是服务端需要弄一个返回集合类型的接口(方法):代码如下
接口:

public interface IuserService {

public List<User> list();

public User getUser(Integer id);

}

实现类:(测试用的,很简单)

public class userServiceImpl implements IuserService {

public List<User> list() {
// TODO Auto-generated method stub
List<User> ulist = new ArrayList<User>();
for (int i = 0; i < 3; i++) {
User user = new User(i, "name" + i);
ulist.add(user);
}
return ulist;
}

}

现在服务端返回的是一个集合List<User>

但是在客户端怎么接受这个集合;客户端返回的是一个ArrayOfUser类型,
即:service.list();

又不能强转为 List<User>

该怎么获取才好了?是不是还需要配置什么? 各位大神 帮帮忙,很急、、、!!!!
...全文
263 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 loveliy520 的回复:]
那你的web.xml文件中配置的是否org.codehaus.xfire.transport.http.XFireConfigurableServlet,还有那个services.xml文件配置了没有
[/Quote]
额 Web.xml中没有配置这个,在添加XFire支持的时候自动添加了一个XFireServlet的Mapping Url所以 我想应该不要再配置什么吧?service.xml中配置好了的,
第一次弄这个,在网上搜索整合的方法实在太多了,到处看了一下,发现很乱,昨天又没空弄、
所以想问下大家有知道什么关于Spring + Xfire整合的教程么(自己曾用过的,要不网上的很多老是不能运行或者写的不完整的)?资料、视频、网址都行。谢谢了!
loveliy520 2012-01-12
  • 打赏
  • 举报
回复
那你的web.xml文件中配置的是否org.codehaus.xfire.transport.http.XFireConfigurableServlet,还有那个services.xml文件配置了没有
jryjx 2012-01-11
  • 打赏
  • 举报
回复
恩,还能这样,我一会看看
  • 打赏
  • 举报
回复
但是现在又出现了一个问题,我把Struts +Hibernate和Spring和XFire弄到了一起,其实Struts不打算用的,主要为了测试一下,然后发现Struts的Action测试通过,能操作数据库。但是我需要访问这个XFire的wsdl的时候,
http://localhost:8080/java_xfire_service/services/studentservice?wsdl

这个xml没能生成,页面只出现了一句话:

Generated by XFire ( http://xfire.codehaus.org )


--------------------------------------------------------------------------------

其中Spring配置文件如下:
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />

<context:component-scan base-package="com.dao"></context:component-scan>
<context:component-scan base-package="com.service"></context:component-scan>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=c3p0Test">
</property>
<property name="username" value="sa"></property>
<property name="password" value="sa123456"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.model.Student</value>
</list>
</property>
</bean>


怀疑是
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
这句出了问题,但是去掉后,启动服务 就报错,说:

严重: StandardWrapper.Throwable
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xfire' is defined

该怎么修改才好呢?大家知道么?
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jryjx 的回复:]
你在XXXX.aegis.xml里的返回类型怎么设的?
我这里是这样的:
<method name="getLeadmailByDatas">
<parameter index="0" componentType="java.lang.String" />
<parameter index="1" componentType="java.lang.String" />
……
[/Quote]

后来我也配置了这个方法,不过感觉没什么用;我是这样写的
<mappings>
<!-- 映射getUsers方法返回值类型 -->
<mapping>
<method name="list">
<return-type componentType="#user" />
</method>
<!--
name对应<return-type componentType="#users"/>中的componentType
class为实体bean的类型即list中存放的类型 componentType为实体bean的类型
-->
<component name="user" class="com.model.User" componentType="com.model.User" />
</mapping>
</mappings>

其实发现一个小东西,就是在根据wsdl文档生成客户端的时候会生成几个文件,我通常就是在一个为xxxClient的那个文件里面测试,
结果发现:
service.getLeadmailByDatas(params);
需要写成:
service.getLeadmailByDatas(params).getXXX();
其中XXX为List<XXX>;
就可以转为List类型了,不需要再配置其他的文件了!
jryjx 2012-01-11
  • 打赏
  • 举报
回复
你在XXXX.aegis.xml里的返回类型怎么设的?
我这里是这样的:
<method name="getLeadmailByDatas">
<parameter index="0" componentType="java.lang.String" />
<parameter index="1" componentType="java.lang.String" />
<parameter index="2" componentType="java.lang.String" />
<return-type componentType="com.berd.webservice.service.Leadmail" />
</method>
客户端是:
List<Leadmail> leadmailList = service.getLeadmailByDatas(hql,0,5);
  • 打赏
  • 举报
回复
有木有人知道呢/

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧