日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CXF系列(四):CXF整合spring

發布時間:2024/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CXF系列(四):CXF整合spring 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


本文將介紹CXF與spring的整合開發,整體實例還是基于前三章。不過現在wsdl服務發布到tomcat,就不用發不到jetty了,相應的一些配置和代碼有所改動。

1:pom.xml

[plain]view plaincopy
  • <project?xmlns="http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  • ??xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">??
  • ??<modelVersion>4.0.0</modelVersion>??
  • ??
  • ??<groupId>com.qqw.example</groupId>??
  • ??<artifactId>CXF_Spring</artifactId>??
  • ??<version>0.0.1-SNAPSHOT</version>??
  • ??<packaging>jar</packaging>??
  • ??
  • ??<name>CXF_Spring</name>??
  • ??<url>http://maven.apache.org</url>??
  • ??
  • ??<properties>??
  • ????<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>??
  • ??</properties>??
  • ??
  • ??<dependencies>??
  • ????<dependency>??
  • ??????<groupId>junit</groupId>??
  • ??????<artifactId>junit</artifactId>??
  • ??????<version>3.8.1</version>??
  • ??????<scope>test</scope>??
  • ????</dependency>??
  • ??????
  • ????<!--?添加Spring支持?-->??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-core</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-beans</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ?????????<groupId>org.springframework</groupId>??
  • ?????????<artifactId>spring-tx</artifactId>??
  • ?????????<version>4.1.7.RELEASE</version>??
  • ????????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-context</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-context-support</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-web</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-webmvc</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-aop</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ???????
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-aspects</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.springframework</groupId>??
  • ????????<artifactId>spring-jdbc</artifactId>??
  • ????????<version>4.1.7.RELEASE</version>??
  • ????</dependency>??
  • ??????
  • ????<!--?添加cxf支持??-->??
  • ????<dependency>??
  • ????????<groupId>org.apache.cxf</groupId>??
  • ????????<artifactId>cxf-core</artifactId>??
  • ????????<version>3.1.5</version>??
  • ????</dependency>??
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.apache.cxf</groupId>??
  • ????????<artifactId>cxf-rt-frontend-jaxws</artifactId>??
  • ????????<version>3.1.5</version>??
  • ????</dependency>??
  • ???????
  • ????<dependency>??
  • ????????<groupId>org.apache.cxf</groupId>??
  • ????????<artifactId>cxf-rt-transports-http</artifactId>??
  • ????????<version>3.1.5</version>??
  • ????</dependency>??
  • ??????
  • ????<!--實現日志??-->??
  • ????<dependency>??
  • ????????<groupId>org.slf4j</groupId>??
  • ????????<artifactId>slf4j-log4j12</artifactId>??
  • ????????<version>1.7.22</version>??
  • ????</dependency>??
  • ??????
  • ??</dependencies>??
  • </project>??

  • 2:spring的配置文件:applicationContext.xml

    [html]view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??????
  • <beans?xmlns="http://www.springframework.org/schema/beans"??????
  • ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?????
  • ????xmlns:p="http://www.springframework.org/schema/p"????
  • ????xmlns:aop="http://www.springframework.org/schema/aop"?????
  • ????xmlns:context="http://www.springframework.org/schema/context"????
  • ????xmlns:jee="http://www.springframework.org/schema/jee"????
  • ????xmlns:tx="http://www.springframework.org/schema/tx"????
  • ????xmlns:jaxws="http://cxf.apache.org/jaxws"??
  • ????xsi:schemaLocation="??????
  • ????????http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-4.0.xsd????
  • ????????http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-4.0.xsd????
  • ????????http://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context-4.0.xsd????
  • ????????http://www.springframework.org/schema/jee?http://www.springframework.org/schema/jee/spring-jee-4.0.xsd????
  • ????????http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx-4.0.xsd??
  • ????????http://cxf.apache.org/jaxws?http://cxf.apache.org/schemas/jaxws.xsd">??????
  • ??????????
  • ????????<!--這兩個是必須要加的-->??
  • ????<import?resource="classpath:META-INF/cxf/cxf.xml"/>??
  • ????????<import?resource="classpath:META-INF/cxf/cxf-servlet.xml"/>??
  • ??????
  • ????????<!--?自動掃描?-->??
  • ????<context:component-scan?base-package="com.qqw"?/>??
  • ??????
  • ????<!--?定義服務提供者??-->??
  • ????<jaxws:endpoint??
  • ????????implementor="#helloWorld"??//這個就是接口實現類的交給spring容器管理的bean的名稱??
  • ????????address="/HelloWorld">???//這個是訪問的具體地址,這個任意起名??
  • ????????<!--?添加in攔截器?-->??
  • ????????<jaxws:inInterceptors>??
  • ?????????????<bean?class="org.apache.cxf.interceptor.LoggingInInterceptor"/>??
  • ?????????????<bean?class="com.qqw.interceptor.MyInterceptor"/>??
  • ????????</jaxws:inInterceptors>??
  • ????????<!--?添加out攔截器?-->??
  • ????????<jaxws:outInterceptors>??
  • ?????????????<bean?class="org.apache.cxf.interceptor.LoggingInInterceptor"/>??
  • ????????</jaxws:outInterceptors>??
  • ?????</jaxws:endpoint>??
  • </beans>??

  • 3:把前面的cxf服務端的代碼都搬過來,去掉那個main方法。接口的實現類只需加上個注釋

    [java]view plaincopy
  • package?com.qqw.webserviceImpl;??
  • ??
  • import?java.util.ArrayList;??
  • import?java.util.HashMap;??
  • import?java.util.List;??
  • import?java.util.Map;??
  • ??
  • import?javax.jws.WebService;??
  • ??
  • import?org.springframework.stereotype.Component;??
  • ??
  • import?com.qqw.entity.Role;??
  • import?com.qqw.entity.User;??
  • import?com.qqw.webservice.HelloWorld;??
  • ??
  • @Component("helloWorld")//和上面配置文件對應的名稱??
  • @WebService??
  • public?class?HelloWorldImpl?implements?HelloWorld{??
  • ??
  • ????@Override??
  • ????public?String?say(String?str)?{??
  • ??????????
  • ????????return?"hello:"+str;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?List<Role>?getUserRole(User?user)?{??
  • ??????????
  • ????????List<Role>?rList=null;??
  • ????????if(user!=null){??
  • ????????????rList=new?ArrayList<Role>();??
  • ????????????if(user.getName().equals("qqw")){??
  • ????????????????rList.add(new?Role(1,?"總經理"));??
  • ????????????????rList.add(new?Role(2,?"技術總監"));??
  • ????????????}else{??
  • ????????????????rList.add(new?Role(3,?"程序呀U呢"));??
  • ????????????}??
  • ??????????????
  • ????????}??
  • ????????return?rList;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?Map<String,?List<Role>>?getMap()?{??
  • ??????????
  • ????????Map<String,?List<Role>>?map=new?HashMap<String,?List<Role>>();??
  • ????????List<Role>?list=new?ArrayList<Role>();??
  • ????????list.add(new?Role(1,?"總經理"));??
  • ????????list.add(new?Role(2,?"技術總監"));??
  • ????????List<Role>?list1=new?ArrayList<Role>();??
  • ????????list1.add(new?Role(3,?"程序呀U呢"));??
  • ????????map.put("qqw",?list);??
  • ????????map.put("qqw1",?list1);??
  • ????????return?map;??
  • ????}??
  • ??
  • }??

  • 4:web.xml

    [html]view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?xmlns="http://java.sun.com/xml/ns/javaee"?xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"?xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"?id="WebApp_ID"?version="3.0">??
  • ??<display-name>CXF_Spring</display-name>??
  • ??<welcome-file-list>??
  • ????<welcome-file>index.html</welcome-file>??
  • ????<welcome-file>index.htm</welcome-file>??
  • ????<welcome-file>index.jsp</welcome-file>??
  • ????<welcome-file>default.html</welcome-file>??
  • ????<welcome-file>default.htm</welcome-file>??
  • ????<welcome-file>default.jsp</welcome-file>??
  • ??</welcome-file-list>??
  • ??<!--?處理編碼格式?-->??
  • ????<filter>????
  • ????????<filter-name>characterEncodingFilter</filter-name>????
  • ????????<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>????
  • ????????<init-param>????
  • ????????????<param-name>encoding</param-name>????
  • ????????????<param-value>UTF-8</param-value>????
  • ????????</init-param>????
  • ????????<init-param>????
  • ????????????<param-name>forceEncoding</param-name>????
  • ????????????<param-value>true</param-value>????
  • ????????</init-param>????
  • ????</filter>????
  • ????<filter-mapping>????
  • ????????<filter-name>characterEncodingFilter</filter-name>????
  • ????????<url-pattern>/*</url-pattern>????
  • ????</filter-mapping>??
  • ??????
  • ????<!--?Log4J?Start?-->??
  • ????<context-param>??
  • ????????<param-name>log4jConfigLocation</param-name>??
  • ????????<param-value>classpath:log4j.properties</param-value>??
  • ????</context-param>??
  • ????<context-param>??
  • ????????<param-name>log4jRefreshInterval</param-name>??
  • ????????<param-value>6000</param-value>??
  • ????</context-param>??
  • ????<!--?Spring?Log4J?config?-->??
  • ????<listener>??
  • ????????<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>??
  • ????</listener>??
  • ??????
  • ????<!--?Spring配置文件?-->??
  • ????<context-param>??
  • ????????<param-name>contextConfigLocation</param-name>??
  • ????????<param-value>classpath:applicationContext.xml</param-value>??
  • ????</context-param>??
  • ????<listener>??
  • ????????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>??
  • ????</listener>??
  • ??????
  • ????????<!--這個是必須加的-->??
  • ????<servlet>????
  • ?????<servlet-name>CXFServlet</servlet-name>????
  • ?????<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>????
  • ????</servlet>????
  • ???????
  • ????<servlet-mapping>????
  • ???????<servlet-name>CXFServlet</servlet-name>????
  • ???????<url-pattern>/webservice/*</url-pattern>????
  • ????</servlet-mapping>??
  • ??????
  • ????
  • </web-app>??

  • 5:只要把項目部署到tomcat,然后啟動就行了??蛻舳说恼{用這時候會有變化,把客戶端的原先生成的代碼刪掉,重新執行自動生成命令,這里我不粘圖了,具體命令參考前面的,本文只需要把后面改成wsdl2java http://localhost:8080/CXF_spring/webservice/HelloWorld?wsdl就行,刷新客戶端。客戶端調用

    [java]view plaincopy
  • package?com.qqw.webservice;??
  • ??
  • import?java.util.List;??
  • ??
  • import?org.apache.cxf.frontend.ClientProxy;??
  • import?org.apache.cxf.interceptor.LoggingInInterceptor;??
  • import?org.apache.cxf.interceptor.LoggingOutInterceptor;??
  • ??
  • import?com.qqw.interceptor.AddHeaderInterceptor;??
  • import?com.qqw.webserviceimpl.HelloWorldImplService;??
  • ??
  • public?class?Client?{??
  • ??
  • ????/**?
  • ?????*?@param?args?
  • ?????*/??
  • ????public?static?void?main(String[]?args)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ??
  • ????????HelloWorldImplService?hService=new?HelloWorldImplService();??
  • ????????HelloWorld?helloWorld?=?hService.getHelloWorldImplPort();??
  • ??????????
  • ????????org.apache.cxf.endpoint.Client?client?=?ClientProxy.getClient(helloWorld);??
  • ????????client.getOutInterceptors().add(new?LoggingOutInterceptor());//out日志??
  • ????????client.getInInterceptors().add(new?LoggingInInterceptor());//in日志??
  • ????????client.getOutInterceptors().add(new?AddHeaderInterceptor("qqw","123456"));?//?添加自定義攔截器??
  • ??????
  • ????????User?user=new?User();??
  • ????????user.setName("qqw1");??
  • ????????List<Role>?roleList?=?helloWorld.getUserRole(user);??
  • ????????for(int?i=0;i<roleList.size();i++){??
  • ????????????System.out.println("編號:"+roleList.get(i).getId()+"/角色名稱:"+roleList.get(i).getName());??
  • ????????}??
  • ????????MyRoleArray?map?=?helloWorld.getMap();??
  • ????????List<MyRole>?list?=?map.item;??
  • ????????for(int?i=0;i<list.size();i++){??
  • ????????????System.out.print(list.get(i).getKey()+":");??
  • ????????????for(Role?r:list.get(i).getValue()){??
  • ????????????????System.out.print(r.getId()+","+r.getName());??
  • ????????????}??
  • ????????????System.out.println("================");??
  • ????????}??
  • ??????????
  • ??????????
  • ????}??
  • ??
  • }??

  • 最后運行的效果:



    至此,CXF整合spring完畢!!!???完整代碼

    總結

    以上是生活随笔為你收集整理的CXF系列(四):CXF整合spring的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。