JAVA如何調(diào)用wsdl過(guò)程詳解
前提:① 已經(jīng)提供了一個(gè)wsdl接口② 該接口能正常調(diào)用
總體分為兩種方式:
- 1.使用cxf的wsdl2java工具生成本地類(lèi)(使用方式就是本地類(lèi)的使用)。
- 2.調(diào)用遠(yuǎn)程的web service方法:創(chuàng)建client來(lái)遠(yuǎn)程調(diào)用接口。
因?yàn)榈诙N方式,需要熟悉wsdl,沒(méi)深入了解不太好操作,主要說(shuō)下第一種方式。
使用cxf的wsdl2java工具生成本地類(lèi)主要步驟如下:
1、安裝JDK環(huán)境(jdk版本是1.6的話(huà),后續(xù)會(huì)報(bào)錯(cuò)jdk6最高只支持ws2.1規(guī)范版本)
2、下載apache-cxf發(fā)布包,下載CXF:http://cxf.apache.org/download.html 目前最新版本為3.1.7,解壓發(fā)布包,設(shè)置CXF_HOME,并添加%CXF_HOME %/bin到path環(huán)境變量。
3、CMD命令行輸入wsdl2java -help,有正常提示說(shuō)明環(huán)境已經(jīng)正確配置。
4、CMD運(yùn)行命令 :
wsdl2java -encoding utf-8 -d D:\javalib\web http://m.zsjsjy.com/services/resource?wsdl
(wsdl 的路徑)
-encoding表示生成的Java文件編碼格式為utf8,-d表示代碼生成路徑為D:\javalib\we。運(yùn)行后會(huì)在運(yùn)行命令的當(dāng)前路徑生成以供使用的類(lèi)
5、把生成的類(lèi)導(dǎo)入項(xiàng)目。一般服務(wù)都叫XXXService,這個(gè)是我們要用到的接口文件
上述過(guò)程中的遇到的問(wèn)題:
1、因?yàn)閖dk是1.6版本的,導(dǎo)致下載的apache-cxf發(fā)布包解壓后使用報(bào)錯(cuò),這是cxf和jdk的jar包有沖突引起的!
就下載了老版本的apache-cxf-2.6.12.zip ,查了一些資料,保險(xiǎn)起見(jiàn)接著把jdk換成了1.7,
如果還報(bào)錯(cuò) 就在jdk1.7文件夾下的jre下的lib文件下創(chuàng)建一個(gè)endorsed文件夾(D:\java\jdk1.7.0_16\jre\lib\endorsed),
把a(bǔ)pache-cxf中jaxb對(duì)應(yīng)的三個(gè)2.2jar包復(fù)制到endorsed中,最后成功生產(chǎn)本地java類(lèi)。
2、成功生成java文件導(dǎo)入項(xiàng)目后,調(diào)整完java中報(bào)錯(cuò)的包文件,結(jié)果serviece類(lèi)中還是有構(gòu)造函數(shù)報(bào)錯(cuò),注釋說(shuō)需要jaxws2.2來(lái)重新生成才可。
查了下資料說(shuō)其不能正常編譯通過(guò)是由于jax-ws2.2規(guī)約與java6沖突。 但程序又不能僅以java5來(lái)編譯,故需要降低jax-ws規(guī)約版本。
解決辦法:執(zhí)行命令: wsdl2java -frontend jaxws21 -d D:\javalib\cn http://m.zszsjsjy.com/services/resource?wsdl
重新生成來(lái)解決。
3、接口調(diào)用測(cè)試時(shí)報(bào)錯(cuò),Exception in thread "main" org.apache.cxf.service.factory.ServiceConstructionException
原因是生成接口java類(lèi),namespace路徑是它原來(lái)默認(rèn)的,而我放進(jìn)項(xiàng)目時(shí)類(lèi)的路徑已經(jīng)是現(xiàn)在的了。
解決辦法:需要 自定義-p路徑 重新生成:
wsdl2java -frontend jaxws21 -encoding utf-8 -p cn.teacheredu.app.projectconfigcenter.proj.module.screen.tlogin.zswebservice -d D:\javalib\cn http://m.zszsjsjy.com/services/resource?wsdl
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則介紹
迪米特法則解決類(lèi)與類(lèi)之間耦合度問(wèn)題,如果類(lèi)A調(diào)用了B類(lèi)的某一個(gè)方法,則這兩個(gè)類(lèi)就形成了一種緊耦合的方式,當(dāng)B類(lèi)這個(gè)方法發(fā)生變化時(shí),一定會(huì)影響A類(lèi)的執(zhí)行結(jié)果。迪米特法則要求每一個(gè)類(lèi)盡可能少的與其他類(lèi)發(fā)生關(guān)系2023-02-02Java學(xué)生信息管理系統(tǒng)設(shè)計(jì)(數(shù)據(jù)庫(kù)版)
這篇文章主要為大家詳細(xì)介紹了數(shù)據(jù)庫(kù)版的Java學(xué)生信息管理系統(tǒng)設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11SpringBoot獲取配置文件內(nèi)容的幾種方式總結(jié)
大家都知道SpringBoot獲取配置文件的方法有很多,下面這篇文章主要給大家介紹了關(guān)于SpringBoot獲取配置文件內(nèi)容的幾種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02springboot整合security和vue的實(shí)踐
本文主要介紹了springboot整合security和vue的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09SpringBoot?@Configuration與@Bean注解使用介紹
這篇文章主要介紹了SpringBoot中的@Configuration與@Bean注解,在進(jìn)行項(xiàng)目編寫(xiě)前,我們還需要知道一個(gè)東西,就是SpringBoot對(duì)我們的SpringMVC還做了哪些配置,包括如何擴(kuò)展,如何定制,只有把這些都搞清楚了,我們?cè)谥笫褂貌艜?huì)更加得心應(yīng)手2022-10-10使用springboot對(duì)linux進(jìn)行操控的方法示例
這篇文章主要介紹了使用springboot對(duì)linux進(jìn)行操控的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Java實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了java針對(duì)Excel的讀寫(xiě)及數(shù)據(jù)庫(kù)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08如何使用HttpClient發(fā)送java對(duì)象到服務(wù)器
這篇文章主要介紹了如何使用HttpClient發(fā)送java對(duì)象到服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11