首页 > 代码库 > 搭建web项目结合spring+cxf的webservice服务

搭建web项目结合spring+cxf的webservice服务

服务端:

服务端和客户端都需要引入包

 1 antlr-2.7.7.jar 2 aopalliance-1.0.jar 3 asm-3.3.jar 4 commons-collections-3.2.1.jar 5 commons-lang-2.6.jar 6 commons-logging-1.1.1.jar 7 cxf-2.4.2.jar 8 cxf-manifest.jar 9 cxf-xjc-boolean-2.4.0.jar10 cxf-xjc-bug671-2.4.0.jar11 cxf-xjc-dv-2.4.0.jar12 cxf-xjc-ts-2.4.0.jar13 FastInfoset-1.2.9.jar14 geronimo-activation_1.1_spec-1.1.jar15 geronimo-annotation_1.0_spec-1.1.1.jar16 geronimo-javamail_1.4_spec-1.7.1.jar17 geronimo-jaxws_2.2_spec-1.0.jar18 geronimo-jms_1.1_spec-1.1.1.jar19 geronimo-servlet_3.0_spec-1.0.jar20 geronimo-stax-api_1.0_spec-1.0.1.jar21 geronimo-ws-metadata_2.0_spec-1.1.3.jar22 isorelax-20030108.jar23 jaxb-api-2.2.1.jar24 jaxb-impl-2.2.1.1.jar25 jaxb-xjc-2.2.1.1.jar26 jettison-1.3.jar27 jetty-continuation-7.4.5.v20110725.jar28 jetty-http-7.4.5.v20110725.jar29 jetty-io-7.4.5.v20110725.jar30 jetty-security-7.4.5.v20110725.jar31 jetty-server-7.4.5.v20110725.jar32 jetty-util-7.4.5.v20110725.jar33 joda-time-1.6.2.jar34 jra-1.0-alpha-4.jar35 js-1.7R2.jar36 jsr311-api-1.1.1.jar37 msv-core-2010.2.jar38 neethi-3.0.1.jar39 opensaml-2.4.1.jar40 openws-1.4.1.jar41 relaxngDatatype-20020414.jar42 saaj-api-1.3.jar43 saaj-impl-1.3.2.jar44 serializer-2.7.1.jar45 slf4j-api-1.6.1.jar46 slf4j-jdk14-1.6.1.jar47 spring-aop-3.0.5.RELEASE.jar48 spring-asm-3.0.5.RELEASE.jar49 spring-beans-3.0.5.RELEASE.jar50 spring-context-3.0.5.RELEASE.jar51 spring-core-3.0.5.RELEASE.jar52 spring-expression-3.0.5.RELEASE.jar53 spring-jms-3.0.5.RELEASE.jar54 spring-tx-3.0.5.RELEASE.jar55 spring-web-3.0.5.RELEASE.jar56 stax2-api-3.1.1.jar57 velocity-1.7.jar58 woodstox-core-asl-4.1.1.jar59 wsdl4j-1.6.2.jar60 wss4j-1.6.2.jar61 xalan-2.7.1.jar62 xml-resolver-1.2.jar63 xmlbeans-2.4.0.jar64 xmlschema-core-2.0.jar65 xmlsec-1.4.5.jar66 xmltooling-1.3.1.jar67 xsdlib-2010.1.jar
View Code

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5"  3     xmlns="http://java.sun.com/xml/ns/javaee"  4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <!-- 两种方式配置1.监听器配置 2.servlet配置, 以下的是采用监听器配置的 --> 8  9     <!-- 通过上下文参数指定spring配置文件的位置 -->10     <context-param>11         <param-name>contextConfigLocation</param-name>12         <param-value>classpath:cxf-servlet.xml</param-value>13     </context-param>14     <listener>15         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>16     </listener>17     18     <!-- 配置CXF框架的核心Servlet  -->19     <servlet>20         <servlet-name>cxf</servlet-name>21         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>22         <!-- 通过初始化参数指定配置文件的位置 -->23         <!-- 24         <init-param>25             <param-name>config-location</param-name>26             <param-value>classpath:cxf-servlet.xml</param-value>27         </init-param>28          -->29     </servlet>30 31     <servlet-mapping>32         <servlet-name>cxf</servlet-name>33         <url-pattern>/cxf/*</url-pattern>34     </servlet-mapping>35     36   <welcome-file-list>37     <welcome-file>index.jsp</welcome-file>38   </welcome-file-list>39 </web-app>

cxf-servlet.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" 4     xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:jaxrs="http://cxf.apache.org/jaxrs" 5     xsi:schemaLocation="http://www.springframework.org/schema/beans  6                         http://www.springframework.org/schema/beans/spring-beans.xsd 7                         http://cxf.apache.org/bindings/soap  8                         http://cxf.apache.org/schemas/configuration/soap.xsd 9                         http://cxf.apache.org/jaxws 10                         http://cxf.apache.org/schemas/jaxws.xsd11                         http://cxf.apache.org/jaxrs 12                         http://cxf.apache.org/schemas/jaxrs.xsd13                         ">14     <!-- 引入CXF Bean定义如下,早期的版本中使用,如果是servlet引入的话则下面三句不用了,因为框架引入了 -->15     <import resource="classpath:META-INF/cxf/cxf.xml" />16     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />17     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />18 19     <!-- 通过spring配置文件发布CXF的服务 -->20 21     <!-- 第一种发布方式:没有接口的发布(简单发布) -->22     <!-- 23         id:唯一标识24         address:访问url25         implementor:提供服务的类型 26      -->27     <jaxws:endpoint id="helloService" address="/hello"28         implementor="cn.itcast.cxf.HelloService">29         <!-- 加入消息拦截器 -->30         <jaxws:inInterceptors>31             <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>32         </jaxws:inInterceptors>33         <jaxws:outInterceptors>34             <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>35         </jaxws:outInterceptors>36     </jaxws:endpoint>37 38     <!-- 第二种发布方式:带有接口的发布 -->39     <!-- 40         id:唯一标识41         address:访问url42         serviceClass:接口类型43      -->44     <jaxws:server id="hiService" address="/hi"45         serviceClass="cn.itcast.cxf.IHiService">46         <jaxws:serviceBean>47             <!-- 提供服务的实现类 -->48             <bean class="cn.itcast.cxf.HiServiceImpl"></bean>49         </jaxws:serviceBean>50 51         <!-- 加入消息拦截器  -->52         <jaxws:inInterceptors>53             <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>54         </jaxws:inInterceptors>55         <jaxws:outInterceptors>56             <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>57         </jaxws:outInterceptors>58     </jaxws:server>59 60     <!-- 配置restful方式的web服务 -->61     <bean id="ps" class="cn.itcast.restful.PersonServiceImpl"></bean>62     <jaxrs:server id="personService" address="/p">63         <jaxrs:serviceBeans>64             <ref bean="ps"/>65         </jaxrs:serviceBeans>66         <jaxrs:inInterceptors>67             <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>68         </jaxrs:inInterceptors>69         <jaxrs:outInterceptors>70             <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>71         </jaxrs:outInterceptors>72     </jaxrs:server>73 </beans>

 

忽略60-72 那是 jason方面的配置

IHiService.java

1 package cn.itcast.cxf;2 3 import javax.jws.WebService;4 5 @WebService6 public interface IHiService {7     public String sayHi(String name);8 }
View Code

HiServiceImpl.java

 1 package cn.itcast.cxf; 2  3 public class HiServiceImpl implements IHiService { 4  5     @Override 6     public String sayHi(String name) { 7         System.out.println("sayHi...."); 8         return "hi " + name; 9     }10 11 }
View Code

然后

localhost:8080/项目地址/hi?xsdl

客户端

利用 wsimport -s 地址 或者ws2java -s地址的命令

得到文件后

把接口文件复制来

 

配置文件 ClientBean.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" 4     xmlns:soap="http://cxf.apache.org/bindings/soap" 5     xsi:schemaLocation="http://www.springframework.org/schema/beans  6                         http://www.springframework.org/schema/beans/spring-beans.xsd 7                         http://cxf.apache.org/bindings/soap  8                         http://cxf.apache.org/schemas/configuration/soap.xsd 9                         http://cxf.apache.org/jaxws 10                         http://cxf.apache.org/schemas/jaxws.xsd">11         <!-- 配置客户端bean -->12         <!-- 13             id:唯一标识14             address:请求的服务地址15             serviceClass:客户端接口16          -->17         <jaxws:client id="hiService" address="http://localhost/CXF_03/cxf/hi" serviceClass="cn.itcast.cxf.IHiService"></jaxws:client>18         19 </beans>

 

测试 IHiService就是拷贝过来的接口文件,放到项目中

 1 package cn.itcast.test; 2  3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5  6 import cn.itcast.cxf.IHiService; 7  8 public class Test1 { 9     public static void main(String[] args) {10         //初始化spring11         ApplicationContext ctx = new ClassPathXmlApplicationContext("ClientBeans.xml");12         IHiService s = (IHiService) ctx.getBean("hiService");13         s.sayHi("abc");14         System.out.println(s.getClass().getName());15     }16 }