maven+CXF+Spring+tomcat 開發webservice
以前做專案時做專案時有做過這塊內容,今天因為與第三方ERP系統對接需要要在系統中加上webservice的服務端,與呼叫客戶端,中間出了好幾處錯,現整理下備忘;
先看下我專案的目錄結構:
我們的專案使用的是spring+mybatis 採用maven管理;在這基礎上加webservice的大致步驟:
1.pom檔案新增cxf所需包依賴
<!--CXF配置 data:2015年02月05日 18:04********************************************************-->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-common</artifactId>
<version>2.5.4</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>2.6.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>2.6.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!--CXF配置 data:2015年02月05日 18:04********************************************************-->
2.web.xml中加入cxf支援
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/com/ningpai/web/config/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--CXF配置 2015-02-06 10:12******************************************-->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<!--CXF配置 2015-02-06 10:12 ******************************************-->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!--CXF配置 2015-02-06 10:12*******************************************-->
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<!--CXF配置 2015-02-06 10:12 *******************************************-->
3.在業務模組中編寫spring支援xml將webservice服務類用spring進行管理
<?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:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<!-- Memcached配置 <import resource="classpath:simplesm-context.xml" /> <aop:aspectj-autoproxy
/> <bean name="defaultMemcachedClient" class="com.google.code.ssm.CacheFactory">
<property name="cacheClientFactory"> <bean name="cacheClientFactory" class="com.google.code.ssm.providers.xmemcached.MemcacheClientFactoryImpl"
/> </property> <property name="addressProvider"> <bean class="com.google.code.ssm.config.DefaultAddressProvider">
<property name="address" value="192.168.2.99:11211" /> </bean> </property>
<property name="configuration"> <bean class="com.google.code.ssm.providers.CacheConfiguration">
<property name="consistentHashing" value="true" /> </bean> </property> </bean> -->
<!--CXF配置 2015年02月06日 11:09>>>>>>>>>>>>>>>>>-->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<!--CXF配置 2015年02月06日 11:09<<<<<<<<<<<<<<<<<<-->
<!--CXF Service配置 2015年02月06日 11:27-->
<jaxws:endpoint id="productService" address="/productService" implementorClass="com.kunge.ws.server.IProductService">
<jaxws:implementor>
<bean id="productServiceImpl" class="com.<span style="font-family: Arial, Helvetica, sans-serif;">kunge</span><span style="font-family: Arial, Helvetica, sans-serif;">.ws.server.impl.ProductServiceImpl"></span>
<property name="goodsMapper" ref="GoodsMapper"/>
</bean>
</jaxws:implementor>
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
</jaxws:endpoint>
</beans>
xmlns:jaxws="http://cxf.apache.org/jaxws" <pre name="code" class="html">http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
4.還是web.xml中新增對於自定義xml的引用
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/com/kunge/web/config/ApplicationContext.xml,
<span style="white-space:pre"> </span> classpath*:com/kunge/web/config/ws-servlet.xml
<span style="white-space:pre"> </span></param-value>
</context-param>
這裡路徑要寫對,否則會找不到webservice所寫的webservice類,即cxf為定義之類的錯誤;
這裡只有降到相關的配置,具體程式碼網上有很多實現;本來是想用純註解的方式寫的,因為我dao層service層,controller都是註解,但是試了半天總是顯示no services。。還好在cxf的配置中可以引用註解初始化的類;即
<bean id="productServiceImpl" class="com.kunge.ws.server.impl.ProductServiceImpl">
<property name="goodsMapper" ref="GoodsMapper"/>
</bean>
相關文章
- 十九、.net core使用SoapCore開發webservice介面,以及使用HttpClientFactory動態訪問webservice介面WebHTTPclient
- 短視訊開發app,webservice自定義加入攔截器APPWeb
- webservice介面呼叫Web
- SpringBoot+webserviceSpring BootWeb
- 細說WebServiceWeb
- webservice簡介Web
- WebService XML SoapFormatterWebXMLORM
- 什麼是webserviceWeb
- springboot2.0整合webserviceSpring BootWeb
- C#釋出WebServiceC#Web
- webapi建立和呼叫WebServiceWebAPI
- web api 、webservice 跨域等WebAPI跨域
- WebService就是這麼簡單Web
- WebService的概念和基本使用Web
- WebService共享資料的使用Web
- python 搭建 webservice 服務端PythonWeb服務端
- webservice和jms的區別Web
- webservice修改名稱空間Web
- 一種WebService的呼叫方式Web
- 騰訊WebService Api 跨域呼叫WebAPI跨域
- WebService之Spring+CXF整合示例WebSpring
- 一些常用的WebService.Web
- VS2010 建立 新增 Webservice 程式Web
- webservice快速入門-SOAP和WSDL(三)Web
- java webService 零基礎學習JavaWeb
- SpringBoot與WebService的簡單實現Spring BootWeb
- RestCloud ETL WebService資料同步到本地RESTCloudWeb
- WebService安全機制的思考與實踐Web
- java webservice 帶請求頭方式處理JavaWeb
- springmvc+mybatis+restful+webservice Jeesz分散式架構SpringMVCMyBatisRESTWeb分散式架構
- 關於Webservice介面對接相關總結Web
- java框架整合Springmvc+mybatis+shiro+lucene+rest+webservice+mavenJava框架SpringMVCMyBatisRESTWebMaven
- 用WebService呼叫第三方天氣介面Web
- BIRT 怎麼呼叫 Webservice 作為資料來源Web
- 好程式設計師分享WebService的簡單使用程式設計師Web
- 基於 Spring Boot 2.0 構建一個 RESTful WebServiceSpring BootRESTWeb
- 使用RestCloud ETL輕鬆解決WebService資料同步RESTCloudWeb
- 實踐基於REST風格的Webservice(PHP,C#)RESTWebPHPC#
- 叢集、分散式、SOA、微服務、webService等思想的整理分散式微服務Web