web.xml:
- <!-- begin xfire -->
- <servlet>
- <!-- 配合Spring容器中XFire一起工作的Servlet-->
- <servlet-name>xfireServlet</servlet-name>
- <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>xfireServlet</servlet-name>
- <!-- 在这个URI下开放Web Service服务 -->
- <url-pattern>/service/*</url-pattern>
- </servlet-mapping>
- <!-- end xire -->
xfire-servlet.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www./dtd/spring-beans.dtd">
-
- <beans>
-
- <!-- 引入XFire预配置信息 -->
- <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
-
- <!-- Web服务实现类,就是要发布成web服务的pojo,标注了@WebService注解 -->
- <bean id="userService" class="com.test.xfire.UserServiceImpl" />
-
-
- <!-- 获得applicationContext中所有bean的JSR181 annotation -->
- <!-- 该Bean获取Spring容器中所有标注@WebService的Bean -->
- <bean id="webAnnotations" class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" />
-
- <!-- 对标注@WebService的Bean进行处理,完成导出工作 -->
- <bean id="jsr181HandlerMapping" class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">
- <property name="xfire" ref="xfire" />
- <property name="webAnnotations" ref="webAnnotations" />
- </bean>
-
- </beans>
- package com.test.xfire;
-
- public class User
- {
- private String username;
- private int age;
- private String hobby;
-
- public String getUsername()
- {
- return username;
- }
-
- public void setUsername(String username)
- {
- this.username = username;
- }
-
- public int getAge()
- {
- return age;
- }
-
- public void setAge(int age)
- {
- this.age = age;
- }
-
- public String getHobby()
- {
- return hobby;
- }
-
- public void setHobby(String hobby)
- {
- this.hobby = hobby;
- }
-
- public String toString()
- {
- return "用户:" + username + ",年龄" + age + "时,爱好:" + hobby;
- }
- }
- package com.test.xfire;
-
- import javax.jws.WebService;
-
- @WebService
- public interface IUserService
- {
- public User findUserHobby(User user) throws Exception;
- }
- package com.test.xfire;
-
- import java.util.HashMap;
- import java.util.Map;
-
- import javax.jws.WebService;
-
-
-
-
-
-
-
- @WebService(serviceName = "userServiceImpl", endpointInterface = "com.test.xfire.IUserService")
- public class UserServiceImpl implements IUserService
- {
- private static final Map<String, String> mapUser = new HashMap<String, String>();
-
- static
- {
- mapUser.put("jg.sun", "篮球");
- mapUser.put("lcrystal", "足球");
- mapUser.put("s0meb0dy", "游泳");
- mapUser.put("猫来猫去", "睡觉");
- mapUser.put("小刚", "唱歌");
- }
-
- public User findUserHobby(User user) throws Exception
- {
- if (user == null)
- {
- return null;
- }
-
- String hobby = mapUser.get(user.getUsername());
-
- if (hobby == null)
- {
- user.setHobby("无");
- }
- else
- {
- user.setHobby(hobby);
- }
- return user;
- }
- }
客户端调用2种方式: 1、通过WSDL文件生成客户端调用程序,先在目录存放WSDL文件
- package com.test.xfire.client;
-
- import org.codehaus.xfire.client.Client;
- import org.springframework.core.io.ClassPathResource;
- import org.springframework.core.io.Resource;
-
- import com.test.xfire.IUserService;
- import com.test.xfire.User;
-
-
-
-
-
-
- public class WebServiceClientTestByWsdl
- {
- IUserService iUserService = null;
-
- public static void main(String[] args) throws Exception
- {
- WebServiceClientTest test = new WebServiceClientTest();
- test.testClient();
- }
-
- public void testClient() throws Exception
- {
- String wsdl = "userServiceImpl.wsdl";
- Resource resource = new ClassPathResource(wsdl);
- Client client = new Client(resource.getInputStream(), null);
-
- User user = new User();
- user.setUsername("猫来猫去");
- Object[] objArray = new Object[1];
- objArray[0] = user;
-
- Object[] results = client.invoke("findUserHobby", objArray);
- System.out.println("result: " + results[0]);
- }
- }
2、根据服务地址创建客户端调用程序
webserviceClient.xml
- <?xml version="1.0" encoding="GBK"?>
-
- <beans xmlns="http://www./schema/beans"
- xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:context="http://www./schema/context"
- xmlns:tx="http://www./schema/tx" xmlns:aop="http://www./schema/aop"
- xsi:schemaLocation="http:
- http:
- http:
- http:
- http:
- http:
- http:
- http:
-
- <bean id ="testWebService" class ="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
- <property name ="serviceClass">
- <value>com.test.xfire.IUserService</value>
- </property>
- <property name ="wsdlDocumentUrl">
- <value>http:
- </property>
- </bean>
-
-
- </beans>
- package com.test.xfire.client;
-
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- import com.test.xfire.IUserService;
- import com.test.xfire.User;
-
-
-
-
-
-
- public class WebServiceClientTest
- {
- IUserService iUserService = null;
-
- public static void main(String[] args)
- {
- WebServiceClientTest test = new WebServiceClientTest();
- test.testClient();
- }
-
- public void testClient()
- {
- ApplicationContext ctx = new ClassPathXmlApplicationContext("webserviceClient.xml");
- iUserService = (IUserService) ctx.getBean("testWebService");
- try
- {
- User user = new User();
- user.setUsername("猫来猫去");
- System.out.println(iUserService.findUserHobby(user));
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
|