在学习之前,一直以为WebService就是一个工具,在两个服务器之间建立一个通信,帮我们把需要传输的数据组织成规范的XML数据并发送到目的地,实际情况也确实是这样的,不过更高级一点的是,XFire不但可以帮我们生成XML发送,而且可以在接收了xml之后还可以直接返回对象给我们用。
环境配置
1. jdk1.6
2. MyEclipse7.5
3. jar包全部使用MyEclipse自带
步骤
我们先让WebService跑起来,看看它到底长什么样~~
1. 建立Web项目XFire
2. 配置web.xml
1)方法1:首先要配置一个contextConfigLocation,告诉Spring应该加载哪些配置文件
然后配置ContextLoaderListener和IntrospectorCleanupListener两个监听器
最后配置一个XFireSpringServlet就可以了
2)方法2:还有一种配置方式,就是使用Spring的DispatcherServlet来配置XFire监听。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>XFireService</display-name>
<!-- begin Spring配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- end Spring配置 -->
<!-- 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服务 页面访问方式为:http://localhost:8888/XFire/service
-->
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<!-- end XFire 配置 -->
<!--
这里提供一种使用Spring来配置XFire的方式
页面访问方式为http://localhost:8888/XFire/HelloWorldService.ws?wsdl
与xfire-servlet.xml中的urlMap配置相对应,两种方式可以自由选择
-->
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>*.ws</url-pattern>
</servlet-mapping>
</web-app>
3. 配置/WEB-INFO/xfire-servlet.xml
1)方法1:这个文件用来配置具体的XFire服务,所有的服务都要在这个文件里声明。指定服务的名字和具体实现的接口和类。
2)方法2:这里也可以使用Spring的SimpleUrlHandlerMapping来配置一个urlMap,与web.xml中的DispatcherServlet配合使用。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 引入XFire预配置信息 -->
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
<!-- 定义访问的url -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/HelloWorldService.ws">
<ref bean="HelloWorldService" />
</entry>
<entry key="/DoAJobService.ws">
<ref bean="DoAJobService" />
</entry>
</map>
</property>