【问题标题】:Jaxb: Passing parameter to @XmlJavaTypeAdapterJaxb:将参数传递给@XmlJavaTypeAdapter
【发布时间】:2015-12-11 21:35:09
【问题描述】:

我正在使用 Spring Boot / JAX-WS (CXF) 创建soap webservice 我想加密一个字段。我为此使用 XmlJavaTypeAdapter。 例如:

   @XmlJavaTypeAdapter(CypherStringAdapter.class)
   private String cryptedField;

CypherStringAdapter 类:

package fr.hop.meta4;

import java.io.UnsupportedEncodingException;    
import javax.xml.bind.annotation.adapters.XmlAdapter;    
import org.springframework.beans.factory.annotation.Value;    
import fr.hop.aes.AESEncryptor;

public class CypherStringAdapter extends XmlAdapter<String, String> {

    @Value("${cypher.key}") 
    private String key;

    private AESEncryptor cypher;

    public CypherStringAdapter() throws UnsupportedEncodingException {    
        cypher = new AESEncryptor(key);        
    }

    @Override
    public String marshal(String v) throws Exception {

        if (v != null)
            return cypher.encrypt(v);

        return null; 
    }

    @Override
    public String unmarshal(String v) throws Exception {
        if (v != null)
              return cypher.decrypt(v);

        return null;        
    }
}

我想将键值外部化。我尝试使用 @value 注释,但它不起作用(始终为空值)。我怎样才能实现向 XmlJavaTypeAdapter 发送密钥?

问候

【问题讨论】:

  • 有趣的场景,不仅因为加密,还因为参数的解组可以依赖于一个或多个其他参数。
  • 你能把参数传递给JaxB XMLAdapter吗?我也在做类似的事情,我需要将类参数传递给XMLAdapter 并访问它的 Getter 方法:stackoverflow.com/questions/67312205/…

标签: java spring web-services jaxb jax-ws


【解决方案1】:

我认为 XmlJavaTypeAdapter 不是加密的好地方。我更改了我的代码以在我的对象创建中加入加密,它更有意义、更易于实现并且可以正常工作。

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2013-11-19
    • 2011-01-06
    • 2013-07-19
    相关资源
    最近更新 更多