ペーシュ・カショーロ5にMOXYためにジャクソンを交換する方法

tiagomistral:

私は小さなプロジェクトと誰かが私を助けることができるという希望を作成するので、ペーシュ・カショーロ5にMOXYためにジャクソンを置き換えるが、良い解決策を実現することはありませんする方法について多くのことを読んでください。

pom.xml

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>${version.javaee}</version>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.27</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.microprofile</groupId>
        <artifactId>microprofile</artifactId>
        <type>pom</type>
        <version>1.4</version>
    </dependency>
<dependencies>

App.java

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

import org.glassfish.jersey.jackson.JacksonFeature;

@ApplicationPath("/api")
public class App extends Application {

@Override
public Set<Class<?>> getClasses() {
    Set<Class<?>> resources = new java.util.HashSet<>();
    resources.add(JacksonFeature.class);

    resources.add(SimpleService.class);
    return resources;
}

}

SimpleService.java

@Path("sample")
public class SimpleService {

@Path("greet2")
@GET
@Produces(MediaType.APPLICATION_JSON)
public PojoEntity doGreet2() {
    PojoEntity pojoEntity = new PojoEntity();
    pojoEntity.setTeste1("TesteValue1");
    pojoEntity.setTeste2("TesteValue2");
    return pojoEntity;
}
}

PojoEntity.java

public class PojoEntity {


private String teste1;

@JsonProperty("differentName")
private String teste2;

//getters and setters
}

後ペーシュ・カショーロ5に、このマイクロアプリケーションをデプロイし、要求エンドポイントのhttp:// localhostを:8080 /微小試料/ API /サンプル/ greet2結果(予想通り)です。

{"teste1":"TesteValue1","differentName":"TesteValue2"}

ペーシュ・カショーロはジャクソンの代わりMOXYを使用しています。ニース:)!

==============================================

私の問題は、私は自分のエンドポイントに到達するためにmicroprofileを使用する場合です。

SimpleServiceMicroprofileApi.java

import javax.enterprise.context.Dependent;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

@Dependent
@RegisterRestClient
@Produces(MediaType.APPLICATION_JSON)
public interface SimpleServiceMicroprofileApi {

    @Path("api/sample/greet2")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public PojoEntity recallGreet2();
}

MicroService.java

    package fish.payara.micro.sample;

import java.net.MalformedURLException;
import java.net.URL;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.eclipse.microprofile.rest.client.RestClientBuilder;

@Path("micro")
public class MicroService {

    @Path("recallGreet2")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public PojoEntity recallGreet2() throws MalformedURLException {
        PojoEntity pojoEntity = new PojoEntity();
        pojoEntity.setTeste1("LOL");
        pojoEntity.setTeste2("LOL2");

        URL apiUrl = new URL("http://localhost:8080/micro-sample");
        SimpleServiceMicroprofileApi playlistSvc = RestClientBuilder.newBuilder().baseUrl(apiUrl)
                .build(SimpleServiceMicroprofileApi.class);

        return playlistSvc.recallGreet2();
    }
}

そして、上の行を追加しますApp.java getClassesメソッドに:

resources.add(MicroService.class);

我々はできる、この変更で再デプロイアクセスした後にhttp:// localhost:8080 /マイクロサンプル/ API /マイクロ/ recallGreet2と結果は次のとおりです。

{"teste1":"LOL","differentName":null}

どうやらmicroprofile MOXYを使用して保持し、PojoEntityプロパティ「differentNameを」無視。

誰もが完全に、この例では、ジャクソンについてMOXYを交換する方法を知っていますか?

このプロジェクトは、利用可能である、ここでこのような状況をテストすることを可能にします。:)

ペーシュ・カショーロバージョン:5.183

前もって感謝します。

あなたが行く :

あなたは自分のSimpleServiceMicroprofileApiにJacksonFeatureを登録する必要があります。

@RegisterProvider(JacksonFeature.class)

それはそれを動作させる必要があります。)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=192764&siteId=1