樂清網(wǎng)站建設(shè)費(fèi)用網(wǎng)上培訓(xùn)機(jī)構(gòu)
背景:之前jdk8環(huán)境下,使用的cxf框架,而且是動態(tài)加載解析作為客戶端。大家一直相處的很愉快。但是最近升級jdk17,發(fā)現(xiàn)cxf不好用了。網(wǎng)上百度,大部分都是說升級cxf版本,并且添加jaxb的相關(guān)依賴就可以了。但是。。。我不還是解決不了啊。
本著快的解決不了,就仔細(xì)研究下看看想法,了解了下cxf動態(tài)解析的工作方式,發(fā)現(xiàn)了不對勁。
CXF動態(tài)調(diào)用WebService,一般包含以下步驟:
- 下載WSDL文件
- 將WSDL文件解析成Java代碼模型
- 生成Java源碼
- 編譯源碼->Class文件
- 創(chuàng)建ClassLoader
- 加載Class
- 創(chuàng)建數(shù)據(jù)綁定&類型初始化
- 使用這些Class完成WebService交互
- 廢棄這些Class,等待JVM空閑時(shí)GC回收
原來如此,需要生成源碼,需要加載class,問了提供WS的服務(wù)端,反饋說是jdk8提供的wsdl。莫非問題就在這個地方。
? ? ?如果是這樣解決的思路就有兩個了。一個是從源頭解決問題,讓服務(wù)端升級jdk,估計(jì)不現(xiàn)實(shí)。哈哈,搞不定。另一個思路就是不要使用動態(tài)解析了,靜態(tài)的安排上。cxf,axis2,xfire等幾個流行框架都可以通過wsdl來生成相應(yīng)的java樁代碼,然后大家又可以愉快的玩耍了。
? ? ? 按照思路2來折騰,搞定收工,相關(guān)代碼后續(xù)補(bǔ)充。