1 基本的xfire webservice部署
一般我们都是以helloworld开始的,当然xfire也是这么开始。都会给个返回String 的方法,这是最简单的体验。
当然这时候我们会想如果将数据类型扩展到我们自己建立的,java中的集合,那就可以了,基本可以应付一切情况了。
在写webservice的服务端的时候,可以不用考虑到啥类型的问题,和我们平常的写程序的时候一样,如果不是jsr181的情况,
我们一般是遵循接口的编写方式。jsr181呢则是用了一些声明式的方式,感觉还是接口方式,自己用起来比较舒服。
在编写客户端的时候,我们有时候考虑到类型的问题。一般用ant进行生成。如下:
<?xml version="1.0"?>
<project name="txfie" default="genfiles" basedir=".">
<property name="lib" value="../jars" />
<path id="myclasspath">
<fileset dir="./${lib}">
<include name="*.jar" />
</fileset>
<pathelement location="${genfiles}" />
</path>
<!--通过XFire ant任务生成客户端代码的存放位置-->
<property name="code_path" value="${basedir}" />
<!--需要生成客户端代码的wsdl文件,可以直接获得对方给的wsdl 进行客户端代码的生产 -->
<!-- 1 对方告诉部署的服务地址 -->
<!-- <property name="wsdl_path" value="http://localhost:8899/helloWS_Spring_Xfire/helloService.ws?wsdl" /> -->
<!-- 2 获得wsdl 指定地址 -->
<property name="wsdl_path" value="MemberService.wsdl" />
<!--生成客户端代码的包名-->
<property name="code_package" value="cn.com.client" />
<!-- Remove classes directory for clean build -->
<target name="clean" description="Prepare for clean build">
<delete dir="${code_path}" />
<mkdir dir="${code_path}" />
</target>
<!--<target name="genfiles" depends="clean" description="Generate the files"> -->
<target name="genfiles" description="Generate the files">
<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />
<!--outputDirectory属性定义创建的代码所在的文件夹
wsdl是web服务的wsdl文件
package代表创建的代码的package
不些binding方式默认为jaxb2 还有xmlbeans方式
-->
<wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" overwrite="true" />
</target>
</project>
<!-- 用来生成客户端文件 -->
a 第一个划线的地方,已经写明白了,俩种方式指定客户端代码的源。要么直接指向具体的url,
一般写服务的人会丢给你wsdl,这时我们直接用这个文件进行生成就可以了
b 第二个进行划线的地方,没有执行xmlbinding="" ,默认的都是Aegis方式的,这时候如果服务中有自定义的pojo等
的情况,在客户端都可以生成对应的pojo。当然也可以进行指定,例如xmlbeans等。
具体区别:(暂缺)