簡體   English   中英

使用Camel + Spring WS發送SOAP附件嗎?

[英]Sending SOAP attachment with Camel+Spring WS?

我一直在嘗試使用Camel + SpringWS發送SOAP附件。

以下是RouteBuilder類中的代碼,端點正常運行,我已經得到了空的SOAP響應:

from("spring-ws:rootqname:{http://www.lala.org/Bean}GetBookRequest?endpointMapping=#endpointMapping").process(new Processor() {

            public void process(Exchange arg0) throws Exception {
                 //SpringWebserviceMessage msg = (SpringWebserviceMessage) arg0.getIn();  // -->  SpringWebserviceMessage  instance
                arg0.getOut().addAttachment("test",new DataHandler(new FileDataSource("c:/CompanyLogo.jpg")));
            }
        });

我也嘗試過通過SpringWebserviceMessage添加附件,但是沒有任何效果。 有誰知道如何用Camel + SpringWS添加SOAP附件?

我不熟悉Camel,但我確實記得有一種情況,我也必須在spring-ws消息中放置一個SOAP附件。 對我來說,訣竅是使用SaajSoapMessage。

以下是有關如何在Java中使用spring-ws附加文件的代碼段:

JAXBElement<ShowCandidateType> responseElement = (JAXBElement<ShowCandidateType>) kandidaatServiceTemplate.marshalSendAndReceive(
objectFactory.createProcessCandidate(processCandidate), 
new WebServiceMessageCallback() {

    public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {

        SaajSoapMessage saajMessage = (SaajSoapMessage) message;

        //Use the file name as the contentId 
        saajMessage.addAttachment(file.getName(), file); 
    } 
}

);

關鍵是實現doWithMessage並將WebServiceMessage強制轉換為SaajSoapMessage。

Spring-WSCamel組件不包含正式發布的任何附件/標頭支持。

但是, camel-spring-ws的最新快照包含解決此問題的補丁。

看這里: https//issues.apache.org/jira/browse/CAMEL-5724

這是建議功能的最新文檔

標頭和附件傳播

端點將使用所謂的“ 鈎子 ” MessageFilter(BasicMessageFilter提供了默認實現)將交換頭和附件傳播到WebSdrviceMessage響應中。

現在你可以使用了

exchange.getOut().getHeaders().put("myCustom","myHeaderValue")
exchange.getIn().addAttachment("myAttachment", new DataHandler(...))

注意:如果管道中的交換頭包含文本,它將在soap頭中生成Qname(key)= value屬性。

推薦的方法是直接創建QName類,並將其放入標頭的任何鍵中。

不知道您的Web服務如何期望附件。 我需要使用駱駝+肥皂發送附件。 如果計划使用“ @mtom”,則需要添加一個二進制消息部分,然后需要添加附件,並帶有對二進制部分的引用。 否則,如果您的Web服務正在使用base64編碼的附件。 您只需要設置文件內容,base64編碼為message中的附件字段名稱。

如果您可以共享wsdl,我將能夠為您提供更好的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM