国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

實現(xiàn)一個spring webservice服務(wù)端二:創(chuàng)建一個可以訪問的webservice

Arno / 3168人閱讀

摘要:把上一篇文章生成的文件另存為,放到下面,沒有改,文件也沒有修改,只有配置文件改成了下面這個樣子按照文檔說明,此時訪問就可以訪問了。

在文章中,我學(xué)習(xí)了spring-ws基本的知識,在文章最后我也實現(xiàn)一個簡單的項目,訪問可以看到wsdl文件,但是我也遇到了一個問題,無法通過soap UI的測試,經(jīng)過這一段業(yè)余時間的學(xué)習(xí),這個問題解決。

這是上一個學(xué)習(xí)創(chuàng)建的項目的demo演示鏈接,打開可以看到生成的wsdl。

遺留問題

上一次學(xué)習(xí)遇到的問題是,通過生成的wsdl在soap UI測試的時候,生成的請求參數(shù)和我要解析的參數(shù)不一樣,我認(rèn)為無法解析,

這是soap ui生成的請求數(shù)據(jù)


   
   
      
         
         
            
            2017-05-05
            2017-05-05
         
         
            
            147
            156
            457
         
      
   

后臺解析的代碼:

 

    startDateExpression = xPathFactory.compile("http://tns:StartDate", Filters.element(), null, namespace);
            endDateExpression = xPathFactory.compile("http://tns:EndDate", Filters.element(), null, namespace);
            firstNameExpression = xPathFactory.compile("http://tns:FirstName", Filters.element(), null, namespace);
            lastNameExpression = xPathFactory.compile("http://tns:LastName", Filters.element(), null, namespace);

我認(rèn)為無法解析是因為兩邊的表達(dá)式不一樣,無法解析對應(yīng)的字段,可是經(jīng)過最近一段學(xué)習(xí),發(fā)現(xiàn)很多wsdl都不是對應(yīng),但是仍然可以正常提供服務(wù),于是我不管兩邊不一樣的問題,使用soap ui 測試一下,結(jié)果確實接收到了請求,測試結(jié)果:

請求進(jìn)來了
Booking holiday for [Fri May 05 00:00:00 CST 2017-Fri May 05 00:00:00 CST 2017] for [156 457] 

從結(jié)果上看,數(shù)據(jù)都取出來。

另外這里有個事情需要解釋一下:

xsd修改了,不再和上一篇文章中的內(nèi)容完全一樣,這是修改后的文件:



    
        
            
                
                
            
        
    

    
        
            
            
        
    

    
        
            
            
            
        
    

不知道有沒有奇怪人我為什么,我把前綴改成了【tns】,原因是這樣的,當(dāng)我把前綴改成【hr】時:



    
        
            
                
                
            
        
    

    
        
            
            
        
    

    
        
            
            
            
        
    

然后重啟項目生成wsdl,結(jié)果如下:














還有很多

可以看到,生成的wsdl頭部中仍然是:

xmlns:tns="http://mycompany.com/hr/webservice" targetNamespace="http://mycompany.com/hr/webservice"

我查看了一下源碼,在設(shè)置namespace的代碼中:

@Override
    public void afterPropertiesSet() throws WSDLException {
        Assert.notNull(getTargetNamespace(), ""targetNamespace" is required");
        WSDLFactory wsdlFactory = WSDLFactory.newInstance();
        Definition definition = wsdlFactory.newDefinition();
        definition.setTargetNamespace(getTargetNamespace());
        definition.addNamespace(TARGET_NAMESPACE_PREFIX, getTargetNamespace());
        if (importsProvider != null) {
            importsProvider.addImports(definition);
        }
        if (typesProvider != null) {
            typesProvider.addTypes(definition);
        }
        if (messagesProvider != null) {
            messagesProvider.addMessages(definition);
        }
        if (portTypesProvider != null) {
            portTypesProvider.addPortTypes(definition);
        }
        if (bindingsProvider != null) {
            bindingsProvider.addBindings(definition);
        }
        if (servicesProvider != null) {
            servicesProvider.addServices(definition);
        }
        setDefinition(definition);
    }

其中使用一個名為TARGET_NAMESPACE_PREFIX的常量作為前綴,在類中定義如下:

public static final String TARGET_NAMESPACE_PREFIX = "tns";

也就是說,如果你采用的是生成wsdl,而不是自己寫的wsdl的話,自己定義的命名空間都是tns前綴,
所以,我也就改成tns了,反正寫什么都沒什么用,最終都是tns。

實現(xiàn)靜態(tài)的wsdl訪問

spring-ws推薦第一次生成之后,采用靜態(tài)配置的方式訪問wsdl文件,于是新建了一個webservicelearn2項目。

把上一篇文章生成的wsdl文件另存為orders.wsdl,放到web-inf下面,web.xml沒有改,pom.xml文件也沒有修改,只有spring-ws配置文件改成了下面這個樣子:



    
    

按照文檔說明,此時訪問http://localhost:8089/webserv...就可以訪問了。

在這期間,項目clean了一下,重新下載jar包,然后項目就一直出錯,啟動項目時總是報500錯誤:

java.lang.ClassNotFoundException: javax.wsdl.extensions.ExtensibilityElement
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:550)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:475)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428)
    at org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition.(DefaultWsdl11Definition.java:56)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)

我知道這是缺jar,缺的是wsdlj jar包,但是spring-ws官方參考文檔上說并不需要這個jar,這是官方參考文檔
其中關(guān)于依賴的配置如下:


    
        org.springframework.ws
        spring-ws-core
        
    
    
        jdom
        jdom
        2.0.1
    
    
        jaxen
        jaxen
        1.1
    

我一直以為,我的項目哪里出錯了,因為開始的項目是對的,只不過重新下載jar就出錯了,肯定是我哪里改錯了,就這個問題,還咨詢了jetbrains idea的技術(shù)才支持,最后才發(fā)現(xiàn),spring-ws-core的版本問題造成的;

這是2.1.4版本:

這是最新版本:

也就是說新版本,需要在pom.xml配置wsdlj才能使用,至于為什么剛開始是對的,我也沒想明白。

到此為止,動態(tài)生成也好,靜態(tài)wsdl也好,都能正常訪問,有些東西,看著簡單,自己搞起來,總是出錯,所以還是要多動手。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70149.html

相關(guān)文章

  • spring boot開發(fā)soap webservice

    摘要:本文介紹如何在中開發(fā)接口,以及接口如何同時支持和兩種協(xié)議。該功能很簡單,就是通過一個人的姓名查詢這個人的詳細(xì)信息。就是關(guān)鍵,如本次請求報文如下就是,對應(yīng)。測試使用進(jìn)行測試,通過地址導(dǎo)入文件進(jìn)行測試。測試這樣就實現(xiàn)了和同時提供的目的。 介紹spring boot web模塊提供了RestController實現(xiàn)restful,第一次看到這個名字的時候以為還有SoapController,...

    Ashin 評論0 收藏0
  • WebService就是這么簡單

    摘要:它使用方式,接收和響應(yīng)外部系統(tǒng)的某種請求。回顧我們在學(xué)習(xí)基礎(chǔ)網(wǎng)絡(luò)編程章節(jié)已經(jīng)知道了這么一個連接了。使用指定名稱的命名空間。名詞簡單對象訪問協(xié)議作為一個基于語言的協(xié)議用于有網(wǎng)上傳輸數(shù)據(jù)。以的根元素出現(xiàn)。代理這么一個概念就更加清晰了。 WebService介紹 首先我們來談一下為什么需要學(xué)習(xí)webService這樣的一個技術(shù)吧.... 問題一 如果我們的網(wǎng)站需要提供一個天氣預(yù)報這樣一個需求...

    SwordFly 評論0 收藏0
  • RPC框架是啥之Apache CXF一款WebService RPC框架入門教程

    摘要:支持相關(guān)規(guī)范和標(biāo)準(zhǔn),包括同上。支持多種傳輸協(xié)議和協(xié)議綁定數(shù)據(jù)綁定。構(gòu)建端還有其服務(wù)實現(xiàn),接口使用注解,標(biāo)明是一個遠(yuǎn)程服務(wù)接口。然后編寫一個的啟動程序,并運行,我想你會成功的因為我看到了下圖是一種跨平臺的技術(shù)協(xié)議。 本博客 貓叔的博客,轉(zhuǎn)載請申明出處 學(xué)習(xí)系列 RPC框架是啥? RPC框架是啥之Java自帶RPC實現(xiàn),RMI框架入門 Apache CXF一款WebService RP...

    SolomonXie 評論0 收藏0
  • Java系統(tǒng)WebServiceSpring與CXF集成

    摘要:我們再使用這樣的來查看這個服務(wù)具體的定義這個用以通過查看服務(wù)也就是我們開頭所說的用通用格式來描述的功能入?yún)⒑头祷刂担刮覀兊恼{(diào)用者明白服務(wù)的使用方法具體詳情可以查看我們的這個服務(wù)的頁面。 WebService是什么呢?顧名思義,是Web系統(tǒng)提供的服務(wù),其目的呢,往大了說:是系統(tǒng)實現(xiàn)多異構(gòu)模塊協(xié)同合作,服務(wù)實現(xiàn)SOA(Services oriented Architecture面向服務(wù)的...

    waterc 評論0 收藏0
  • 實現(xiàn)一個spring webservice服務(wù)端三:實現(xiàn)一個有復(fù)雜返回值spring-ws服務(wù)

    摘要:,將類或枚舉類型映射到模式類型,控制字段或?qū)傩缘男蛄谢1硎緦⒆詣咏壎愔械拿總€非靜態(tài)的非瞬態(tài)的由標(biāo)注字段到。,對于數(shù)組或集合即包含多個元素的成員變量,生成一個包裝該數(shù)組或集合的元素稱為包裝器。 在經(jīng)過前面兩篇文章的學(xué)習(xí),我已經(jīng)能夠熟練創(chuàng)建一個正常運行的spring-ws的webservice服務(wù),大多數(shù)接口,都是要有返回數(shù)據(jù),所以這篇文章就是學(xué)習(xí)spring-ws怎么實現(xiàn)返回數(shù)據(jù) 實...

    xinhaip 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<