如何使用MTOM-XOP概念在服务器端处理OMElement?

时间:2011-03-22 13:17:45

标签: web-services axis2 axiom

我可以通过值概念使用MTOM-XOP上传图像。之后我尝试使用MTOM-XOP参考概念(XOP:Include)上传相同的图像。我能够编写客户端程序并生成OMElement也把它传递给了服务。但是我在这里。我不知道如何处理Referenced图像并写入指定的文件夹。我在google上搜索但是找到了许多样本和解决方案的By值概念和SWA概念。请给出我在服务器端处理OMElement的指导或示例程序?

的OMElement:

<fd:upload xmlns:fd="http://mtom.sample.com"><fd:fileName>dog</fd:fileName><fd:fileType>jpg</fd:fileType><fd:fileContent><axis2ns1:Include xmlns:axis2ns1="http://www.w3.org/2004/08/xop/include" href="dc88fd5aa40a7cbdd01c18b97c1202008f2f09ebaf2cf2f3@apache.org" /></fd:fileContent></fd:upload>

如何处理href属性,我在解决方案

上找到了
ArrayList<OMElement> xops =AttachmentUtils.findXopElements(element);
        if (xops != null && xops.size() > 0) {
            logFile("Found XOP:Include Elements\n");
        }
        QName href = new QName("","href");
        Iterator<OMElement> itr = xops.iterator();
        while (itr.hasNext()) {
            OMElement xop = itr.next();
            String cid = xop.getAttributeValue(href);
            logFile("CID :"+cid+"\n");
        }

但是这部分没有在服务器端执行。请给我们指导。

感谢。

1 个答案:

答案 0 :(得分:0)

Axiom表示使用OMText节点的XOP / MTOM附件,其中isBinary()返回true。为每个xop:原始消息中的Include元素创建这样的节点。在这里描述的情况下,将检索fd:fileContent元素的第一个子元素,将其强制转换为OMText,然后在该对象上调用getDataHandler()。返回的DataHandler可以访问附件的内容。