0 0

xfire webservice返回XMLObject15

先讲述下我的开发过程:
1.服务端开发:
   1)我在服务端有一个实体类User,提供了三个属性id,name,pass;
   2)建立一个dao接口,提供了三个方法:一个是通过id返回字符串name;第二个是通过id返回User对象;第三个是直接返回一个List(User对象的集合);这里为List<User>,使用的是网上说的泛型.
   3)实现2)中的接口;
   4)加入服务端的jar包,配置service.xml.
   5)把应用部署到tomcat下,并启动应用.
   6)用http://localhost:8080/test/services/UserService?wsdl访问.
     在浏览器上生成一个wsdl文件.

   至此,服务端配置完成.下面描述下客户端的配置操作
2.客户端开发:
   1)把刚才生成的wsdl文件拷贝到src目录下.不需要改动什么.
   2)把客户端jar包拷贝到lib目录下;
   3)建立一个xml,这个xml就是可以执行的ant文件.
<?xml version="1.0" encoding="UTF-8"?>
    <project default="genfiles" basedir=".">
	<property name="lib" value="../WebRoot/WEB-INF/lib" />
	<path id="myclasspath">
		<fileset dir="${lib}">
			<include name="*.jar" />
		</fileset>
		<pathelement location="${genfiles}" />
	</path>
	<property name="code_path" value="src" />
	<property name="wsdl_path" value="UserService.wsdl" />
	<property name="code_package" value="com.zhang.client" />
	<target name="genfiles" description="Generate the files">
		<taskdef name="wsgen"
			classname="org.codehaus.xfire.gen.WsGenTask"
			classpathref="myclasspath" />
		<wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}"
			package="${code_package}" binding="xmlbeans" />
	</target>
     </project>
    

   4)执行刚才的哪个xml,自动生成三个java类文件.UserServiceClient.java,UserServiceImpl.java,UserServicePortType.java(这个是个接口),并且UserServiceImpl实现了这个UserServicePortType接口.
   在这个方法接口中也有三个方法,public String getUsername(int id),public XMLObject getUser(int id),public XMLObject getAllUser();
问题:为什么在服务端的是User对象,List的都成了XMLObject类型.
   5)建立一个test的测试类,在main方法中直接调用
                    
UserServiceClient usc = new UserServiceClient();
		UserServicePortType up = usc.getUserServiceHttpPort("http://localhost:8080/webservice/services/UserService");
 
     使用 up对象就可以对接口中的方法实现调用了.

   6)当我调用返回值是String的方法getUserName(),可以正确的得到name.调getUser()和getAllUser()的时候当然返回的就是XMLObject了.

问题:webservice是否在对象和集合操作的时候都是以xml在传递,如果是这样,那它本身是否提供了一种解决方法来实现到客户端把xml组成一个对象或是集合呢?
注意:客户端调用的时候服务端一定要把服务启动起来.[/b]网上看了好多的帖子,大部分都是把服务端和客户端在同一个应用下,客观的说,他们的测试在某一层面上看来没有什么作用的.我上面的是客户端和服务端在两个不同的应用上.

希望有人帮忙提出解决方法和意见出来.先谢谢啦!
SOA 
2008年6月19日 11:12

2个答案 按时间排序 按投票排序

0 0

axis2,xfire都是java中不错的webservice组件。

最简单的客户端开发,就是利用组件自带的工具,根据wsdl文件来生成客户端代码,会让你选择xml对象组件,比如XMLBeans之类。然后在自己的代码中初始化这一客户端实例,直接调用api,返回对象。

2008年6月20日 10:41
0 0

回答1:请参阅SOAP简单对象协议。http://www.w3school.com.cn/soap/index.asp

回答2:请先了解了soap,然后做几个clint端的helloworld,非基于java的,例如asp.net、javascript或flash的,做几个就明白了。都有客户端api可以使用。

2008年6月20日 09:06

相关推荐

Global site tag (gtag.js) - Google Analytics