Rpc - wsdl

接入了幾個(gè)省的4A顾孽,發(fā)現(xiàn)了一點(diǎn)共性碧绞,記錄一下府框。
技術(shù):axis


axis 1.*

核心jar包(最少需要):

1.axis.jar
2.jaxrpc.jar
3.commons-logging-${version}.jar
4.commons-discovery-${version}.jar
5.wsdl4j-1.5.1.jar

調(diào)用

package ic;  
  
import javax.xml.rpc.ParameterMode;  
  
import org.apache.axis.client.Call;  
import org.apache.axis.client.Service;  
import org.apache.axis.encoding.XMLType;  
  
public class ICServiceTest1 {  
  
    public static void main(String[] args) {  
  
        try {  
  
            String endpoint = "http://localhost:3000/hy/gw/queryConsignOrder?wsdl";  
  
            Service service = new Service();  
            Call call = (Call) service.createCall();  
            call.setTargetEndpointAddress(endpoint);  
            // WSDL里面描述的接口名稱(要調(diào)用的方法)  
            call.setOperationName("getLisQueryConsignOrder");  
            // 接口方法的參數(shù)名, 參數(shù)類型,參數(shù)模式  IN(輸入), OUT(輸出) or INOUT(輸入輸出)  
            call.addParameter("icSystem", XMLType.XSD_STRING, ParameterMode.IN);  
            call.addParameter("companyFlag", XMLType.XSD_STRING, ParameterMode.IN);  
            call.addParameter("consignOrderNo", XMLType.XSD_STRING, ParameterMode.IN);  
            call.addParameter("orderNo", XMLType.XSD_STRING, ParameterMode.IN);  
            // 設(shè)置被調(diào)用方法的返回值類型  
            call.setReturnType(XMLType.XSD_STRING);  
            //設(shè)置方法中參數(shù)的值  
            Object[] paramValues = new Object[] {"4PL","NJHY,NJHF","TC201309172206",""};  
            // 給方法傳遞參數(shù),并且調(diào)用方法  
            String result = (String) call.invoke(paramValues);    
      
            System.out.println("result is " + result);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
    }  
  
}  

axis 2.*

核心jar包:

axiom-api-1.2.15.jar
axiom-impl-1.2.15.jar
axis2-adb-1.6.4.jar
axis2-kernel-1.6.4.jar
axis2-transport-http-1.6.4.jar
axis2-transport-local-1.6.4.jar
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-logging-1.1.1.jar
httpcore-4.0.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar

簡(jiǎn)單的WebService

import java.util.Random;  
//注意:無(wú)package包聲明  
public class SimpleService {  
      
    public  String getGreeting(String name){  
        return "Hello " + name;  
    }  
      
    public int getPrice(){  
        return new Random().nextInt(100);  
    }  
}  

調(diào)用

public class RPCClient {  
      
    public static String address="http://localhost:8080/axis2/services/SimpleService";  
      
    public static void main(String[] args) throws IOException{  
          
        Object[] result=invoke("getPrice", new Object[]{}, new Class[]{int.class});  
        System.out.println(result[0]);  // 80
        result=invoke("getGreeting", new Object[]{"jack"}, new Class[]{String.class});  
        System.out.println(result[0]);  // Hello jack
    }  
      
        @SuppressWarnings("rawtypes")  
    public static Object[] invoke(String method,Object[] params,Class[] classes) throws AxisFault{  
        //使用RPC方式調(diào)用WebService  
        RPCServiceClient client=new RPCServiceClient();  
        Options option=client.getOptions();  
          
        //指定調(diào)用的URL  
        EndpointReference reference=new EndpointReference(address);  
        option.setTo(reference);  
          
        /* 
         * 設(shè)置要調(diào)用的方法 
         * http://ws.apache.org/axis2 為默認(rèn)的(無(wú)package的情況)命名空間讥邻, 
         * 如果有包名迫靖,則為 http://axis2.webservice.elgin.com ,包名倒過(guò)來(lái)即可 
         * method為方法名稱 
         *  
         */  
        QName  qname=new QName("http://ws.apache.org/axis2", method);  
          
        //調(diào)用遠(yuǎn)程方法,并指定方法參數(shù)以及返回值類型  
        Object[] result=client.invokeBlocking(qname,params,classes);  
          
        return result;  
          
    }  

項(xiàng)目設(shè)計(jì)

4A廠商提供的形式:

  1. 直接提供webService ,可參考axis2.*兴使,或下面某省提供的
  2. 提供wsdl系宜,可參考axis1.*

如某省提供的

4A平臺(tái)提供如下應(yīng)用認(rèn)證接口(WebService),用于廠商調(diào)用:
地址: http://10.65.4.109:13001/Venus4A/services/Venus4AService(訪問(wèn)不了wsdl)
方法名:userSecondarySignatureLogin

入?yún)ⅲ?/p>

名稱 說(shuō)明 類型 長(zhǎng)度(字節(jié))
resID 資源編號(hào)发魄,由4A平臺(tái)定義并告知廠商 Int --
userName 從帳號(hào)盹牧,即歸屬業(yè)務(wù)系統(tǒng)所用的個(gè)人賬號(hào) String 16
signature 憑證信息(采用加密方式) String 1024

出參:

名稱 說(shuō)明 類型 長(zhǎng)度(字節(jié))
result 認(rèn)證結(jié)果和從帳號(hào) 認(rèn)證結(jié)果:0-失敗 1-成功 String 1024

result格式參考:

<?xml version="1.0" encoding="UTF-8"?>
<UserSecondary>
        <UserName>從帳號(hào)名稱</UserName>
        <Result>認(rèn)證結(jié)果</ Result >
</UserSecondary>

調(diào)用方法:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
  private static String accessServiceFunction(String endpoint,String function,Object[] obj){
        Service service = new Service();
        Call call;
        String rusult = null;
        try {
            call = (Call) service.createCall();
            URL url = new URL(endpoint);
            call.setTargetEndpointAddress(url);
            call.setOperationName(function);
            return (String)call.invoke(obj);
        }catch (Exception e1) {
            logger.error("連接認(rèn)證服務(wù)器失敗:" + e1.getMessage());
            return rusult = null;
        }   
  }


對(duì)接4A

主要需要實(shí)現(xiàn)登錄與登出
1.登錄
????基本都會(huì)提供username=xxx&token=%&*(!@#()@!#&^($!UIH 這樣的校驗(yàn)參數(shù)欠母。在對(duì)現(xiàn)存系統(tǒng)影響最小的情況下欢策,最理想的方式是新增Filter在第一個(gè)攔截器位置實(shí)現(xiàn)校驗(yàn)。
大致需要實(shí)現(xiàn)下面幾個(gè)方法:
1> 通用驗(yàn)權(quán)赏淌,rpc層校驗(yàn)權(quán)限踩寇,如調(diào)用4A廠商提供的認(rèn)證方法
2> 個(gè)性化權(quán)限控制,如登錄ip限制
3> 登錄至系統(tǒng)六水,實(shí)現(xiàn)login俺孙,如session添加user信息后,chain.doFilter

2.登出
????調(diào)用4A廠商提供的登出方法掷贾,調(diào)用系統(tǒng)自己的登出方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睛榄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子想帅,更是在濱河造成了極大的恐慌场靴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異旨剥,居然都是意外死亡咧欣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門轨帜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)魄咕,“玉大人,你說(shuō)我怎么就攤上這事蚌父∠迹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵苟弛,是天一觀的道長(zhǎng)喝滞。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嗡午,這世上最難降的妖魔是什么囤躁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮荔睹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘言蛇。我一直安慰自己僻他,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布腊尚。 她就那樣靜靜地躺著吨拗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪婿斥。 梳的紋絲不亂的頭發(fā)上劝篷,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音民宿,去河邊找鬼娇妓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛活鹰,可吹牛的內(nèi)容都是我干的哈恰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼志群,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼着绷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锌云,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荠医,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體彬向,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豫喧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幢泼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紧显。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缕棵,靈堂內(nèi)的尸體忽然破棺而出孵班,到底是詐尸還是另有隱情,我是刑警寧澤招驴,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布篙程,位于F島的核電站,受9級(jí)特大地震影響别厘,放射性物質(zhì)發(fā)生泄漏虱饿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一触趴、第九天 我趴在偏房一處隱蔽的房頂上張望氮发。 院中可真熱鬧,春花似錦冗懦、人聲如沸爽冕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)颈畸。三九已至,卻和暖如春没讲,著一層夾襖步出監(jiān)牢的瞬間眯娱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工爬凑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徙缴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓贰谣,卻偏偏與公主長(zhǎng)得像娜搂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吱抚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 一百宇、Java基礎(chǔ) 1.寫(xiě)出下面代碼的執(zhí)行結(jié)果 2.寫(xiě)出下面代碼的執(zhí)行結(jié)果 3.寫(xiě)出下面代碼的執(zhí)行結(jié)果 (此題需寫(xiě)出...
    joshul閱讀 512評(píng)論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法秘豹,內(nèi)部類的語(yǔ)法携御,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,622評(píng)論 18 399
  • ar包 用途axis.jar SOAP引擎包c(diǎn)ommons-discovery-0.2.jar 用來(lái)發(fā)現(xiàn)啄刹、查找和實(shí)...
    煮茶聽(tīng)雨閱讀 1,867評(píng)論 0 2
  • 因?yàn)橛行睦飰毫︿套傁雽?xiě)點(diǎn)什么。 思科ACI的客戶越來(lái)越多了誓军,熟悉ACI的工程師也越來(lái)越多袱讹。目前,截至到2016年五...
    taoza閱讀 3,060評(píng)論 15 9
  • 大學(xué)期間由于加入了一個(gè)公益性的支教組織昵时,我便毫不猶豫的擯棄了我的專業(yè)捷雕。畢業(yè)之后毅然決然的走進(jìn)了教育這個(gè)應(yīng)有...
    一三雜談閱讀 403評(píng)論 0 0