2016-08-03 5 views
0
を使用していないが

私はこの辺りで見ていると、これはこれらのいずれかの複製であるとは思わない:Wildflyジャクソン注釈を無視し、@Providerクラス

using Jackson annotations in Wildfly

jackson annotations being ignored

Wildfly and Jackson @JsonIgnore annotation

Wildfly 10を使用し、次のクラスの戦争を展開する:

@Provider 
public class JaxApplication implements ContextResolver<ObjectMapper> { 
    private final ObjectMapper mapper; 

    public JaxApplication() { 
    mapper = new ObjectMapper(); 
    mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); 
    //throw new RuntimeException("HERE"); 
    } 

    @Override 
    public ObjectMapper getContext(Class<?> type) { 
    throw new RuntimeException("HERE"); 
    //return mapper; 
    } 

} 

コメントがない場合はコンストラクタで例外がスローされますが、RESTサービスにリクエストするとgetContextメソッドのものは表示されません。

私はエンティティの@JsonIgnore注釈を持って、それが働いていない、また(輸入は私がcom.fasterxmlを使用しています確認するために、クラスはこのようになっていることを私は

を使用してい@JsonIdentityInfo注釈含まれています。* )

import com.fasterxml.jackson.annotation.JsonIdentityInfo; 
import com.fasterxml.jackson.annotation.ObjectIdGenerators; 

import javax.persistence.*; 
import javax.validation.constraints.NotNull; 
import java.util.List; 

/** 
* Created by mb995a on 7/29/2016. 
*/ 
@Entity 
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@request_id", scope=Request.class) 

public class Request extends BaseEntity { 

私はREST設定で特別なことをする必要がありますか?

@ApplicationPath("api") 
public class RestApplication extends Application { 
    public RestApplication() { 
     super(); 
    } 
} 

編集:ObjectMapperを使用する単体テストもあり、正しくシリアル化されます。

答えて

1

他の人のために、私はこれを理解しました。問題は、私が "提供された"範囲としてマークされていない、私のポンでジャクソンジャーを持っていたということでした。これは、戦争ファイルのWEB-INF/libディレクトリにjarファイルがあることを意味していました。

Wildflyのjarファイルとまったく同じバージョン(私が使用しているWFバージョンと同じバージョンのプロパティを使用しています)でも、正しく動作しません。 hashCode()は、同じもの(チェックサムとすべて)であっても、異なるjarの同じアノテーションでは異なるようです。

したがって、解決策は、すべてのジャクソンのものについて、依存関係をmavenでprovidedとマークすることでした。

関連する問題