代码之家  ›  专栏  ›  技术社区  ›  anirvan

SAAJ与JAXB的兼容性

  •  1
  • anirvan  · 技术社区  · 14 年前

    web服务操作很简单-它需要一个字符串元素作为文件位置,一个base64binary元素用于文件内容。

    这让我不禁要问:使用SAAJ发送附件并通过JAXB绑定接收附件时,是否存在兼容性问题?我有什么遗漏吗?

    谢谢你的帮助!

    1 回复  |  直到 14 年前
        1
  •  1
  •   bdoughan    14 年前

    您需要确保在解组器上注册了AttachmentUnmarshaller,以便在JAXB中接收附件。

    import javax.activation.DataHandler;
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.Unmarshaller;
    import javax.xml.bind.attachment.AttachmentUnmarshaller;
    
    public class Demo {
    
        public static void main(String[] args) throws Exception {
            JAXBContext jaxbContext = JAXBContext.newInstance(Demo.class);
            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
            unmarshaller.setAttachmentUnmarshaller(new MyAttachmentUnmarshaller());
        }
    
        private static class MyAttachmentUnmarshaller extends AttachmentUnmarshaller {
    
            @Override
            public DataHandler getAttachmentAsDataHandler(String cid) {
                // TODO - Lookup MIME content by content-id, cid, and return as a DataHandler.
                ...
            }
    
            @Override
            public byte[] getAttachmentAsByteArray(String cid) {
                // TODO - Retrieve the attachment identified by content-id, cid, as a byte[]
                ...
            }
    
        }
    
    }