2017-10-27 6 views
0

私は単純なクラスを持ち、フィールドidにはカスタムデシリアライザが付いています。WebsphereでJsonカスタムデシリアライザが呼び出されていない

public class TestRequest implements Serializable { 

    @NotNull 
    @Pattern(regexp = "^[a-zA-Z0-9=+]*$") 
    @JsonDeserialize(using = StringDeserializer.class) 
    @JsonProperty 
    private String id; 

//getter 
//setter 
} 

とカスタムデシリアライザクラス:

public class StringDeserializer extends JsonDeserializer<String> { 


    @Override 
    public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { 

Iterator<String> iterator = jsonParser.readValuesAs(String.class); 
String id = iterator.next(); 
return id + "0000";  
    } 
} 

私はジャージーRESTテストをしてテストする場合、deserilizerが呼び出され、期待通りに動作します。しかしwebsphereでは呼び出されません。なぜその呼び出されていないか考えてみましょう。 私はあなたがそうでない場合はJAX-RSランタイムはprovdierとしてクラスを認識しません、あなたのStringDeserializerクラスに@Provider注釈を追加する必要がありjaxrs 1.1

答えて

0

を使用しています。

クラスには@Providerというアノテーションが付いているJsonDeserializer<String>にもかかわらず、パフォーマンスに悪影響を与えるため、JAX-RSランタイムは注釈のライブラリをスキャンしません。

関連する問題