首页 > 代码库 > 搭建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
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 }
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 }
然后
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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。