使用cxf在springMVC環(huán)境搭建webservice服務(wù)端及客戶端的調(diào)用

1.添加cxf依賴


<dependency>

<groupId>org.codehaus.woodstox</groupId>

<artifactId>woodstox-core-asl</artifactId>

<version>4.4.1</version>

</dependency>


<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-frontend-jaxws</artifactId>

<version>${cxf.version}</version>

</dependency>


<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http</artifactId>

<version>${cxf.version}</version>

</dependency>


<dependency>

<groupId>org.apache.cxf</groupId>

<artifactId>cxf-rt-transports-http-jetty</artifactId>

<version>${cxf.version}</version>

</dependency>


<properties>

<cxf.version>3.0.4</cxf.version>

</properties>


2 web.xml配置


所有webservice接口配置放置于bean.xml

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:beans.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>

<load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>CXFServlet</servlet-name>

<url-pattern>/cxf/*</url-pattern>

</servlet-mapping>


3蚕冬、 webservice bean配置


<?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:jaxws="http://cxf.apache.org/jaxws"

?????? xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd

?????? http://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd">


<!--cxf必要配置-->

<import resource="classpath:META-INF/cxf/cxf.xml" />

<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<jaxws:endpoint

????????????????? id="reportEntity"

????????????????? implementor="skytech.casedemo.ws.ReportEntityServiceImpl"

????????????????? address="/findReportEntity">

</jaxws:endpoint>




4苍糠、 接口定義與實(shí)現(xiàn)


ReportEntity.java

public class ReportEntity {

???? privateString pkid;

???? privateString enterpirseName;

???? privateString orgaizationId;

???? publicString getPkid() {

???????? returnpkid;

???? }

???? publicvoid setPkid(Stringpkid) {

???????? this.pkid = pkid;

???? }

???? publicString getEnterpirseName() {

???????? returnenterpirseName;

???? }

???? publicvoid setEnterpirseName(String enterpirseName) {

???????? this.enterpirseName = enterpirseName;

???? }

???? publicString getOrgaizationId() {

???????? returnorgaizationId;

???? }

???? publicvoid setOrgaizationId(String orgaizationId) {

???????? this.orgaizationId = orgaizationId;

???? }

?}

ReportEntityService.java

/** 接口定義? @WebService用于定義webservice對(duì)外開放的接口*/

@WebService

public interface ReportEntityService {

?? ReportEntity findOne(String pkid);

}

ReportEntityServiceImpl.java

/**webservice接口實(shí)現(xiàn)? */

public class ReportEntityServiceImpl implements ReportEntityService

???????? {

??????? publicReportEntityServiceImpl() {

??????????? System.out.println("初始化ReportEntityServiceImpl");

??????? }

??????? @Override

??????? publicReportEntity findOne(String pkid) {

?????????? ReportEntity reportEntity =newReportEntity();?reportEntity.setPkid(pkid);

??????????? reportEntity.setEnterpirseName(pkid+"_測試的直報(bào)主體");

??????????? reportEntity.setOrgaizationId("12322222222");

??????????? returnreportEntity;

???????? }

???? }


5待逞、啟動(dòng)服務(wù)


啟動(dòng)ide杜跷,配置tomcat等相關(guān)參數(shù)(例:端口8080)后啟動(dòng)浪南。

使用瀏覽器訪問:

接口列表:http://localhost:8080/cxf


wsdl接口描述:http://localhost:8088/cxf/findReportEntity?wsdl




創(chuàng)建webservice客戶端


客戶端可以和服務(wù)器放在同一個(gè)項(xiàng)目中用來測試解取,也可以新建一個(gè)java項(xiàng)目來進(jìn)行測試存谎。

新建一個(gè)Java項(xiàng)目測試時(shí)银萍,要假如對(duì)應(yīng)的jar包变勇,跟服務(wù)器一樣,使用spring還要假如spring jar包。

我在這里使用同一個(gè)項(xiàng)目


1.首先要?jiǎng)?chuàng)建一個(gè)和服務(wù)器端一樣的服務(wù)接口搀绣,(如果客戶端和服務(wù)器端不在同一個(gè)項(xiàng)目中則需要添加此步驟)

@WebService

public?interface?IHelloWorld?{

public?String?sayHello(@WebParam(name?=?"arg0")?String?text);

}

2.創(chuàng)建spring-client.xml

<?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:jaxws="http://cxf.apache.org/jaxws"?xmlns:cxf="http://cxf.apache.org/core"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://cxf.apache.org/jaxws

????http://cxf.apache.org/schema/jaxws.xsd">

<bean?id="client"?class="com.service.IHelloWorld"?factory-bean="clientFactory"?factory-method="create"?/>

<bean?id="clientFactory"?class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">

??? <property name="serviceClass"? value="skytech.casedemo.ws.service.ReportEntityService"/>

??? <property name="address" value="http://localhost:8080/cxf/findReportEntity" />

</bean>

</beans>


3.測試類

public?class?Test?{

public?static?void?main(String[]?args)?{

ApplicationContext ctx = newClassPathXmlApplicationContext("spring/spring-client.xml");

ReportEntityService client = (ReportEntityService )ctx.getBean("client");

ReportEntity result = client.findOne("123");

System.out.println(result.getPkid()+":"+result.getEnterpirseName()+":"+result.getOrgaizationId());

}

}


運(yùn)行成功后顯示

123:123_測試的直報(bào)主體:12322222222






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飞袋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子链患,更是在濱河造成了極大的恐慌巧鸭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麻捻,死亡現(xiàn)場離奇詭異纲仍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贸毕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門郑叠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人明棍,你說我怎么就攤上這事乡革。” “怎么了摊腋?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵沸版,是天一觀的道長。 經(jīng)常有香客問我歌豺,道長推穷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任类咧,我火速辦了婚禮馒铃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痕惋。我一直安慰自己区宇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布值戳。 她就那樣靜靜地躺著议谷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堕虹。 梳的紋絲不亂的頭發(fā)上卧晓,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音赴捞,去河邊找鬼逼裆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赦政,可吹牛的內(nèi)容都是我干的胜宇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桐愉!你這毒婦竟也來了财破?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤从诲,失蹤者是張志新(化名)和其女友劉穎左痢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盏求,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抖锥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碎罚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磅废。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖荆烈,靈堂內(nèi)的尸體忽然破棺而出拯勉,到底是詐尸還是另有隱情,我是刑警寧澤憔购,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布宫峦,位于F島的核電站,受9級(jí)特大地震影響玫鸟,放射性物質(zhì)發(fā)生泄漏导绷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一屎飘、第九天 我趴在偏房一處隱蔽的房頂上張望妥曲。 院中可真熱鬧,春花似錦钦购、人聲如沸檐盟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葵萎。三九已至,卻和暖如春唱凯,著一層夾襖步出監(jiān)牢的瞬間羡忘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工磕昼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壳坪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓掰烟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纫骑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容