本文所用到的WebServices服务端,取自我的上一篇文章中的例子——使用XFire开发WebServices服务端
这里并未涉及到JSR 181 Annotations的相关应用,具体的三种方式如下
①通过WSDL地址来创建动态客户端
②通过服务端提供的接口来创建客户端
③使用Ant通过WSDL文件来生成客户端
第一种方式:通过WSDL地址来创建动态客户端
第二种方式:通过服务端提供的端口来创建客户端
//访问的地址
String serviceURL = "http://127.0.0.1:8080/XFire_demo/services/XFireServer";
//通过查看org.codehaus.xfire.client.XFireProxyFactory源码发现
//下面两行代码与这里直接new XFireProxyFactory()的作用是等效的
//XFire xfire = XFireFactory.newInstance().getXFire();
//XFireProxyFactory factory = new XFireProxyFactory(xfire);
//为XFire获得一个代理工厂对象
//Create a proxy for the deployed service
XFireProxyFactory factory = new XFireProxyFactory();
//通过proxyFactory,使用服务模型serviceModel和服务端点URL(用来获得WSDL)
//得到一个服务的本地代理,这个代理就是实际的客户端
HelloService client = (HelloService)factory.create(serviceModel, serviceURL);
/**
* Invoke the service
* @see 调用服务的本地代理(即实际的客户端)中的方法,便得到我们需要的WebServcie
*/
/*--处理简单对象--*/
String serviceResponse = client.sayHello("Jadyer11");
System.out.println(serviceResponse);
/*--处理对象--*/
User u = new User();
u.setName("Jadyer99");
Person pp = client.getPerson(u);
System.out.println(pp.getName());
/*--处理List--*/
List<Person> personList = client.getPersonList(24, "Jadyer88");
for(Person p : personList){
System.out.println(p.getName());
}
}
}
这是它要用到的接口和两个POJO类
第三种方式:使用Ant通过WSDL文件来生成客户端
System.out.println(result);
}
}
用到的Ant文件,如下
<taskdef classpathref="classpathId" name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"/>
<target name="wsgen" description="generate client">
<wsgen outputDirectory="./src/" wsdl="MyFirstXFireServer.wsdl" binding="xmlbeans" package="com.jadyer.client" overwrite="true"/>
</target>
</project>
也可以使用下面的这个Ant文件
<target name="createClientCode">
<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="classpath"/>
<wsgen outputDirectory="${sources}" wsdl="http://127.0.0.1:8080/XFire_demo/services/XFireServer?wsdl" package="com.jadyer.client" overwrite="true"/>
</target>
</project>
最后我再把MyFirstXFireServer.wsdl的内容,附加上