最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

本篇內(nèi)容主要講解“如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService”吧!

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、馬邊彝族網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為馬邊彝族等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

這里自己琢磨出兩種方式,一種是引入依賴,另一種是下載apache-cxf的二進(jìn)制文件解壓縮,在eclipse里配置好,這樣就不要引入依賴了,在apache-cxf/lib目錄下有所有關(guān)于CXF的jar包和Spring相關(guān)的jar包,可以自己下載以后去看,如果還需引入其他jar包,另外在pom中添加依賴,下載后記得配置環(huán)境變量,先說第一種。

一、服務(wù)端
建立Maven項(xiàng)目,引入依賴

1、依賴
1.1 第一種方式
直接在pom文件里添加依賴。


    org.apache.cxf
    cxf-core
    3.1.4


    org.apache.cxf
    cxf-rt-transports-http
    3.1.4


    org.apache.cxf
    cxf-rt-frontend-jaxws
    3.1.4

CXF只需添加這三個(gè)jar包的依賴,Maven會(huì)自動(dòng)引入幫我們引入其他jar包。在pom文件里添加完成后保存,就會(huì)觸發(fā)Maven自動(dòng)去下載你添加的依賴jar包(如果你本地倉(cāng)庫(kù)有就直接是取的本地倉(cāng)庫(kù)的) ,然后項(xiàng)目目錄下就會(huì)有Maven Dependencies,如下圖,是添加完成后的。

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

在pom文件中我只添加了三個(gè)依賴jar包,其他這么多jar包就是Maven自動(dòng)為我添加的。和spring整合發(fā)布webservice還要加入spring的依賴jar包,這個(gè)就自己去添加了,第一種就說完了。

1.2 第二種方式
把下載的二進(jìn)制文件解壓縮到一個(gè)目錄,然后配置環(huán)境變量:

1、變量名:CXF_HOME    值:apache-cxf的解壓縮路徑,示例:E:\Install software\apache-cxf-3.2.5

2、在path后面加上 %CXF_HOME%/bin;

在cmd命令中輸入wsdl2java,如果有提示usage,就表明配置成功。

apache-cxf二進(jìn)制文件下載地址:http://cxf.apache.org/download.html

下載箭頭所指的那個(gè):

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

再就是建立項(xiàng)目,不過不需要引入依賴了,只要在eclipse里配置了,如圖:

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

在項(xiàng)目上右鍵,Build Path / Configure Build Path / Add library / CXF Runtime,然后選擇apache-cxf,點(diǎn)擊Finish就好了,你的項(xiàng)目目錄下就會(huì)多出一個(gè)Apache CXF Library,其他的就跟下面一樣了。

不過這種方法在運(yùn)行的時(shí)候可能會(huì)隔段時(shí)間就會(huì)報(bào)錯(cuò),但是服務(wù)還是能正常運(yùn)行,下面是報(bào)錯(cuò)信息:

DefaultValidationEventHandler: [ERROR]: prefix wsdp is not bound to a namespace 
Location:  node: [wsd:Types: null]javax.xml.bind.UnmarshalException: prefix wsdp is not bound to a namespace- with linked exception:
[java.lang.IllegalArgumentException: prefix wsdp is not bound to a namespace]
at 
到網(wǎng)上搜索報(bào)錯(cuò)原因,是因?yàn)閘ib目錄下有多余jar包導(dǎo)致的,解決方案是把多余的jar包刪除。

cxf-services-ws-discovery-api-3.1.4.jar
services-ws-discovery-service-3.1.4.jar
services-wsn-api-3.1.4.jar
services-wsn-core-3.1.4.jar
manifest.jar
其中,MANIFEST.MF文件在這個(gè)目錄下..\apache-cxf-3.2.5\samples\jax_rs\minimal_osgi\src\main\resources\META-INF。

2、測(cè)試代碼
創(chuàng)建一個(gè)接口,記得加上@WebService注解,表示你要“暴露”的接口(服務(wù)類)。

@WebService
public interface HelloService {
    
    public String sayHello(String name) ;
    
}
實(shí)現(xiàn)類:

//實(shí)現(xiàn)類上可以不添加@Webservice注解  
public class HelloServiceImp implements HelloService {
 
    @Override
    public String sayHello(String name) {
        return "大家好,我是"+name;
    }
}
3、配置文件
配置方式的話也有兩種,先來(lái)看下第一種方式。

3.1 第一種配置方式
spring.xml

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"  
xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                    http://www.springframework.org/schema/context   
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
 
     
  

spring-cxf.xml

 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"  
  xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                    http://www.springframework.org/schema/context   
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd
                    http://cxf.apache.org/jaxws  
                    http://cxf.apache.org/schemas/jaxws.xsd">  
     
     
     
 
     
  

 
 

3.2 第二種配置方式
spring.xml

 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"  
xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                    http://www.springframework.org/schema/context   
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
 
   
     

spring-cxf.xml

 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"  
  xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                    http://www.springframework.org/schema/context   
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd
                    http://cxf.apache.org/jaxws  
                    http://cxf.apache.org/schemas/jaxws.xsd"> 
 
   
     
  

補(bǔ)充:

1、至于以前還需引入的 cxf.xml 和 cxf-servlet.xml,網(wǎng)上說是cxf3.0以后就不需要了,至于為什么,原因在這里。

 

2、關(guān)于spring-cxf.xml中另一種配置方式(這種方式我沒嘗試,有興趣的下伙伴可以自己去試下)。


 
   
     
         
   
 
     
         
   
 

上面配置完了,該到web.xml文件里配置了。


    contextConfigLocation
    classpath:spring.xml


    org.springframework.web.context.ContextLoaderListener


    cxf
    org.apache.cxf.transport.servlet.CXFServlet
    1


    cxf
    /service/*

4、運(yùn)行
配置完了以后,部署到Tomcat上運(yùn)行,右鍵run as/run on server/Finish,Eclipse彈出下圖所示界面表示服務(wù)已經(jīng)成功發(fā)布,如果彈出404或者報(bào)錯(cuò),就是發(fā)布失敗。當(dāng)然也可以到瀏覽器里面看運(yùn)行效果,地址是:http://localhost:8080/項(xiàng)目名/service 。點(diǎn)擊箭頭所指的地方就能看到wsdl文件。(不要在意我這里的項(xiàng)目名)

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

二、生成客戶端
第一種方式wsdl2java
CXF提供的根據(jù)wsdl生成客戶端代碼的命令。

在cmd命令中輸入:wsdl2java -d 指定代碼生成目錄 -client webservice的訪問地址url或者本地的wsdl文件目錄地址

示例:wsdl2java -d E:\\AllWorkSpace\\MyWork\\TheClient\\src -client http://localhost:8080/Dom4j_AxisDemo/service/hello?wsdl

注意中間的空格!??!

具體用法自行百度,這里只對(duì)上面的用法做解釋:

-d 指定要產(chǎn)生代碼所在目錄

-client 生成客戶端測(cè)試web service的代碼

代碼生成后如圖:

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

第二種方式 wsimport
JDK提供的生成客戶端的命令。

在cmd命令中輸入:wsimport -s 指定代碼生成目錄 -p 包名 -keep webservice訪問地址url

示例:wsimport -s E:\\AllWorkSpace\\MyWork\\TheClient\\src -p com.eastcom.ws.client -keep http://localhost:8080/Dom4j_AxisDemo/service/hello?wsdl

同樣注意中間的空格!?。?/p>

目錄地址中不能含有空格,發(fā)布地址不要忘了?wsdl

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService

三、測(cè)試
代碼,如果生成客戶端的時(shí)候wsdl你是用的文件地址目錄,那就不能這樣直接new出來(lái)了,在構(gòu)造方法里要傳服務(wù)的地址,具體可以到自己生成的server類里去查看。

public class TestService {
    public static void main(String[] args) {
        HelloService service=new HelloServiceImpService().getHelloServiceImpPort();
        System.out.println(service.sayHello("CXF"));
    }
}

結(jié)果

如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService


 

到此,相信大家對(duì)“如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文名稱:如何實(shí)現(xiàn)Spring和CXF整合發(fā)布WebService
標(biāo)題來(lái)源:http://fisionsoft.com.cn/article/phdsgh.html