运行环境:Tomcat5.0.28 jdk1.5.0.3
开发工具:Eclipse3.3 + MyEclipse 6.0
1. 利用xFire发布WebService
对于一般的接口方法,即方法的返回类型或参数不是List或Map中存放对象的方法,则只需要两步简单的配置即可。
一、配置web.xml
添加一个servlet
- <servlet>
- <servlet-name>webservice</servlet-name>
- <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>webservice</servlet-name>
- <url-pattern>/servlet/XFireServlet/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>webservice</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
一、建立services.xml
在源代码包src(也可能是其它的名称)下建立META-INF/xfire文件夹,并在下面建立services.xml文件。
- <!-- START SNIPPET: services -->
- <beans xmlns="http://xfire.codehaus.org/config/1.0">
- <service >
- <name>helloWorld</name>
- <namespace>http://6.1.8.16:8080/xfireWebService/services/helloWorld</namespace>
- <serviceClass>com.excellence.webservice.test.helloWorld</serviceClass>
- <implementationClass>com.excellence.webservice.test.HelloWorldImpl</implementationClass>
- </service>
- </beans>
- <!-- END SNIPPET: services -->
一 name 元素:表示该webService的名称
二 namespace 元素:表示该webService的命名空间
三 serviceClass 元素:表示该webService的接口
四 implementationClass 元素:表示该webService的实现类
对!就是这么简单,就可以啦。
如果返回类型是List或Map,并且里面存放的是自定义类的话,则需要增加一个对于服务接口的配置文件。该文件的命名规则是 接口文件名.aegis.xml。例如接口是HelloWorld.java的话,则此配置文件命名为HelloWorld.aegis.xml。
- <?xml version="1.0" encoding="UTF-8"?>
- <mappings>
- <mapping >
- <method name="getUsers">
- <return-type componentType="com.excellence.webservice.test.User"/>
- </method>
- </mapping>
- </mappings>
getUsers方法返回类型是List,里面装的User对象。对于这种类型的方法,在配置文件中描述了它的返回值类型。
如果返回的类型是Map的话,做法和List一样。但定义的类型,是Map中的Value部分,并且这样的话,Map中Value所存放的对象就必须全部是同一种类啦。