我目前正在使用 Opensaml 和 Openws API 构建我自己的自定义安全 token 服务。
我将 CXF 与 Spring 一起使用,这项技术有助于拦截器,使我能够操作元素(SAML 断言等)并将其插入到 soap header 中。
但是,我想通过我的网络服务方法将一个 OpenWS RequestSecurityToken 对象插入到 soap 主体中。
OpenWS RequestSecurityToken 对象本身没有定义非参数构造函数,它也没有父类(super class)。根类是 org.w3c.xml.Element,它也没有空构造函数。
JAXB 抛出一个异常,提示这个,说它不能处理接口(interface)——即使这些类不是接口(interface)!
我没有源代码,因此无法轻松添加构造函数。互联网上已经发布了很多关于此的内容,其中包含指向自定义注释、适配器类和自定义编码器的指针,但我无法确定采用哪种方法。
顺便说一句:OpenWS 和 Opensaml 确实为每个对象提供了 Marshallers 和 Unmarshallers。我想知道是否有人设法强制 JAXB 使用自定义编码器?
最佳答案
您可以使用 XmlAdapter,查看:
关于java - JAXB 无法使用非参数构造函数编码和解码 Opensaml 和 Openws 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349796/