最新XFire与Spring集成WebService客户端的两种开发方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
X F i r e与S p r i n g集成W e b S e r v i c e客户端的两种开发方式
XFire与Spring集成时WebService客户端的两种开发方式方式①、借助Spring并通过WSDL文件创建WebService客户端1package com.jadyer.client;
2import java.io.IOException;
3import org.codehaus.xfire.client.Client;
4import org.springframework.core.io.ClassPathResource;
5import org.springframework.core.io.Resource;
6
7/**
8 * 此时应该将服务方提供的WSDL文件,拷贝到src目录下,即可
9 */
10public class ClientUseSpringFromWSDL {
11public static void main(String[] args) throws IOException, Exception {
12new ClientUseSpringFromWSDL().generatedClient();
13 }
14
15public void generatedClient() throws IOException, Exception {
16// 拷贝到src目录下的对应的WSDL文件
17 String wsdl = "HelloService.wsdl";
18// 装载WSDL文件
19 Resource resource = new ClassPathResource(wsdl);
20// 根据WSDL创建客户端实例
21 Client client = new Client(resource.getInputStream(), null);
22// 调用特定的Web Service方法
23 Object[] result = client.invoke("sayHello", new Object[]{"玄玉"});
24// 输出服务端方法的返回结果
25 System.out.println(result[0]);
26 }
27}
方式②、借助Spring并通过WSDL访问地址创建WebService客户端28package com.jadyer.client;
29import java.util.List;
30import org.springframework.context.ApplicationContext;
31import org.springframework.context.support.ClassPathXmlApplicationContext;
32import com.jadyer.model.Person;
33import er;
34import com.jadyer.server.HelloService;
35
36/**
37 * 此时服务方应该提供给我们两个东西:所提供的服务的接口和WSDL访问地址
38 * 然后我们自己再在src目录下创建一个client.xml文件,用于被客户端调用
39 */
40public class ClientUserSpringFromXML {
41public static void main(String[] args) {
42new ClientUserSpringFromXML().generatedClient();
43 }
44
45public void generatedClient() {
46 ApplicationContext ctx = new ClassPathXmlApplicationContext("client.xml");
47 HelloService helloService = (HelloService) ctx.getBean("XFireServerDemo");
48
49//测试sayHello()方法
50 System.out.println(helloService.sayHello("玄玉"));
51
52//测试getPerson()方法
53 User uu = new User();
54 uu.setName("杨过");
55 Person pp = helloService.getPerson(uu);
56 System.out.println(pp.getName());
57
58//测试getPersonList()方法
59 List<Person> personList = helloService.getPersonList(24, "万人往");
60for(Person p : personList){
61 System.out.println(p.getName());
62 }
63 }
64}
接下来是用到的client.xml文件
65<?xml version="1.0"encoding="UTF-8"?>
66<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/dtd/spring-beans.dtd">
67<beans>
68<bean id="XFireServerDemo"class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean"> 69<property name="serviceClass">
70<value>com.jadyer.server.HelloService</value>
71</property>
72<property name="wsdlDocumentUrl">
73<value>http://127.0.0.1:8080/XFire_Spring_03/services/HelloService?wsdl</value>
74</property>
75</bean>
76</beans>
77<!--
78这是一个用于被客户端调用的Spring配置文件,这里定义了一个XFireServerDemo的bean
79该bean访问wsdlDocumentUrl为http://127.0.0.1:8080/XFire_Spring_02/XFireServer.ws?wsdl的WSDL 80-->
最后是服务方提供的接口以及接口所用到的VO类
81package com.jadyer.server;
82import java.util.List;
83import com.jadyer.model.Person;
84import er;
85
86/**
87 * 暴露成web服务的接口类
88 */
89public interface HelloService {
90public String sayHello(String name); //简单对象的传递
91public Person getPerson(User u); //对象的传递
92public List<Person> getPersonList(Integer age, String name); //List的传递93}
94
95
96package com.jadyer.model;
97/**
98 * 接口用到的VO类
99 */
100public class User {
101private String name;
102/*--getter和setter略--*/
103}
104
105
106package com.jadyer.model;
107/**
108 * 接口用到的VO类
109 */
110public class Person {
111private Integer age;
112private String name;
113/*--getter和setter略--*/
114}。