客户端的ParameterHandler,即<jaxrs:client ... providers =“”

时间:2016-07-01 05:22:18

标签: java json cxf

=“”

我需要转换从REST服务接收的客户端LocalDate以JSON形式。我读了一下ParameterHandler,但看起来它只适用于REST资源方法,即服务器端。是否有任何东西可以在客户端转换LocalDate。

我尝试实现ParameterHandler并在jaxrs:client providers中注册它。我可以看到构造函数被调用,但不是方法fromString。我错过了什么吗?以下是我的实施:

public class JavaLocalDateParamHandler implements ParameterHandler<LocalDate>{

    public JavaLocalDateParamHandler() {
        System.out.println("defualt constr....");
    }
    @Override
    public LocalDate fromString(String s) {
        try{
        return LocalDate.parse(s);
        }
        catch(IllegalArgumentException e){
            throw new RuntimeException("Failed to parse param to java.time.LocalDate, param:" +s,e);
        }
    }
}

客户端存根文件:

 <jaxrs:client id="serviceClient"
                 serviceClass="pckge.RESTService"
                 username="abc"
                 password="paswswrd"
                 address="service URL">

    <jaxrs:features>
            <bean class="org.apache.cxf.transport.common.gzip.GZIPFeature"/>
            <cxf:logging/>
        </jaxrs:features>

        <jaxrs:providers>
        <bean class="pckg2.JavaLocalDateParamHandler" />
        <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
        </jaxrs:providers>

    </jaxrs:client>

请注意,我可以获取JSON字符串如果我直接从浏览器调用资源。唯一的问题是我的JavaLocalDateParamHandler fromString方法在转换期间不会被调用。

它是否仅在服务器端工作,其中提供了REST资源(即带有diff注释的方法)?

0 个答案:

没有答案