最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例

 更新時(shí)間:2014年03月10日 16:57:07   作者:  
這篇文章主要介紹了使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例,需要的朋友可以參考下

因項(xiàng)目需要,將之前使用過的webservice重新?lián)炝似饋恚⑶疫@次選擇了使用不需要jar包的Java原生Jaxws。首先是wsimport的用法,先分享我的用法:cmd下先轉(zhuǎn)到工程所在路徑,然后運(yùn)行以下命令

復(fù)制代碼 代碼如下:

wsimport -keep -extension -s ./src -p com.jaxws.test http://192.168.1.1:8080/service?wsdl

在com.jaxws.test的包下就能找到自動(dòng)生成的各種客戶端相關(guān)輔助類。這些類怎么用就不細(xì)說了,網(wǎng)上很多資料。然后就是自己編寫調(diào)用類(我這里只是一個(gè)方法,會(huì)被調(diào)用到就行)

復(fù)制代碼 代碼如下:

public String jaxws(Object[] opArgs)
{
    ServicesService service=new ServicesService();

    //向SOAP添加表頭
    service.setHandlerResolver(new HandlerResolver(){
        public List<Handler> getHandlerChain(PortInfo portInfo) {
            List<Handler> handlerList = new ArrayList<Handler>();
            //添加認(rèn)證信息
            handlerList.add(new ClientHandler());
            return handlerList;
        }
    });

    String result =service.getServicesPort().getResults(opArgs.toString());
    //得到結(jié)果
    System.out.println(result);
    return result;
}

注意到這里的【//添加認(rèn)證信息 handlerList.add(new ClientHandler());】,所以我們還需要新建一個(gè)ClientHandler類來實(shí)現(xiàn)認(rèn)證消息的組裝,如下:

復(fù)制代碼 代碼如下:

package com.jaxws.test;

import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;

public class ClientHandler implements SOAPHandler<SOAPMessageContext> {

    public boolean handleMessage(SOAPMessageContext ctx) {

    //出站,即客戶端發(fā)出請求前,添加表頭信息
    Boolean request_p=(Boolean)ctx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    if(request_p){
        try {
            SOAPMessage msg=ctx.getMessage();
            SOAPEnvelope env=msg.getSOAPPart().getEnvelope();
            SOAPHeader hdr=env.getHeader();
            if(hdr==null) hdr=env.addHeader();

            //添加認(rèn)證信息頭

            //QName(String namespaceURI, String localPart, String prefix)
            //QName(String namespaceURI, String localPart)
            //QName(String localPart)
            //@param namespaceURI:QName的名稱空間
            //@param localPart:QName的本地部分
            //@param prefix:QName的前綴
            QName name=new QName("http://csdc.info/", "Authentication", "wsse");
            SOAPHeaderElement header = hdr.addHeaderElement(name);

            //addChildElement(String localName, String prefix,String uri)
            //addChildElement(String localName, String prefix)
            //addChildElement(String localName)
            //@param uri:新元素所屬空間名稱URI
            //@param localName:新元素的本地名稱
            //@param prefix:新元素名稱的空間前綴
            //見JDK 1.6的API
            SOAPElement userElement = header.addChildElement("Username", "wsse");
            userElement.addTextNode("admin");
            SOAPElement passElement = header.addChildElement("Password", "wsse");
            passElement.addTextNode("admin");

            msg.saveChanges();

            //把SOAP消息輸出到System.out,即控制臺(tái)
            msg.writeTo(System.out);

            return true;   
        } catch (Exception e) {   
           e.printStackTrace();   
        }
    }   
    return false;   
    }

    @Override
    public boolean handleFault(SOAPMessageContext context) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void close(MessageContext context) {
        // TODO Auto-generated method stub       
    }

    @Override
    public Set<QName> getHeaders() {
        // TODO Auto-generated method stub
        return null;
    }
}

 這個(gè)類就把所有的soap消息都加上了一個(gè)頭消息,我這里的頭消息如下:
復(fù)制代碼 代碼如下:

<wsse:Authentication xmlns:wsse="http://csdc.info/">
    <wsse:Username>admin</wsse:Username>
    <wsse:Password>admin</wsse:Password>
</wsse:Authentication>

這樣就實(shí)現(xiàn)了帶soap頭認(rèn)證的基于jaxws的webservice客戶端。

相關(guān)文章

  • Java?volatile關(guān)鍵字特性講解下篇

    Java?volatile關(guān)鍵字特性講解下篇

    JMM要求保證可見性、原子性、有序性,volatile可以保證其中的兩個(gè),本篇文章具體驗(yàn)證volatile的可見性,不原子性和禁重排,同時(shí)解決volatile的不保證原子性,讓代碼具有原子性
    2022-12-12
  • String s = new String(''a '') 到底產(chǎn)生幾個(gè)對象

    String s = new String(''a '') 到底產(chǎn)生幾個(gè)對象

    這篇文章主要介紹了String s = new String(" a ") 到底產(chǎn)生幾個(gè)對象,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Spring Cloud中使用Eureka的詳細(xì)過程

    Spring Cloud中使用Eureka的詳細(xì)過程

    Eureka 是 Netflix 開源的一個(gè)服務(wù)發(fā)現(xiàn)組件,它在微服務(wù)架構(gòu)中扮演著重要的角色,這篇文章主要介紹了Spring Cloud中如何使用Eureka,需要的朋友可以參考下
    2024-07-07
  • Java中日期時(shí)間的用法總結(jié)

    Java中日期時(shí)間的用法總結(jié)

    在日常開發(fā)中,我們經(jīng)常需要處理日期和時(shí)間,所以這篇文章小編為大家總結(jié)了下?Java?中日期與時(shí)間的基本概念與一些常用的用法,希望對大家有所幫助
    2023-09-09
  • SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)

    SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)

    在應(yīng)用中把Redis當(dāng)成消息隊(duì)列來使用已經(jīng)屢見不鮮了,我想主要原因是當(dāng)代應(yīng)用十有八九都會(huì)用到 Redis,因此不用再引入其他消息隊(duì)列系統(tǒng),而且Redis提供了好幾種實(shí)現(xiàn)消息隊(duì)列的方法,用起來也簡單,本文給大家介紹了SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)
    2024-04-04
  • idea報(bào)錯(cuò):java程序包c(diǎn)om.github.xiaoymin.knife4j.spring.annotations不存在問題解決

    idea報(bào)錯(cuò):java程序包c(diǎn)om.github.xiaoymin.knife4j.spring.annotations

    這篇文章主要介紹了idea報(bào)錯(cuò):java程序包c(diǎn)om.github.xiaoymin.knife4j.spring.annotations不存在問題解決,需要的朋友可以參考下
    2023-06-06
  • 淺談Java中File文件的創(chuàng)建以及讀寫

    淺談Java中File文件的創(chuàng)建以及讀寫

    文中有非常詳細(xì)的步驟介紹了Java中file文件的創(chuàng)建以及讀寫,對剛開始學(xué)習(xí)java的小伙伴們很有幫助,而且下文有非常詳細(xì)的代碼示例及注釋哦,需要的朋友可以參考下
    2021-05-05
  • 學(xué)Java做項(xiàng)目需要學(xué)習(xí)的一些技能

    學(xué)Java做項(xiàng)目需要學(xué)習(xí)的一些技能

    這篇文章主要介紹了學(xué)Java做項(xiàng)目需要學(xué)習(xí)的一些技能,例如JavaSE、Servlet、JSP等,總結(jié)了他們中需要學(xué)習(xí)的東西,都是一些經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下
    2014-07-07
  • 解析Spring Data JPA的Audit功能之審計(jì)數(shù)據(jù)庫變更

    解析Spring Data JPA的Audit功能之審計(jì)數(shù)據(jù)庫變更

    Spring Data JPA 提供了Audit審計(jì)功能,用來記錄創(chuàng)建時(shí)間、創(chuàng)建人、修改時(shí)間、修改人等,下面來詳細(xì)講解下審計(jì)數(shù)據(jù)庫變更
    2021-06-06
  • spring解決循環(huán)依賴

    spring解決循環(huán)依賴

    這篇文章主要介紹了spring如何解決循環(huán)依賴,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-09-09

最新評論

凤台县| 丹阳市| 秭归县| 扎赉特旗| 牟定县| 淮北市| 太保市| 古蔺县| 武城县| 舟山市| 博客| 宣化县| 和田市| 阳新县| 西昌市| 佳木斯市| 都安| 措勤县| 厦门市| 会东县| 昭觉县| 资兴市| 昌邑市| 韶关市| 余姚市| 弋阳县| 民县| 女性| 城固县| 隆德县| 绥中县| 泾源县| 龙川县| 资兴市| 萝北县| 康乐县| 尼玛县| 江陵县| 新闻| 修水县| 二连浩特市|