我使用org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder
建立以下列方式REST客戶端:RestEasyClientBuild註冊ResteasyJackson2Provider - 警告重複
ResteasyClient client = (new ResteasyClientBuilder())
.maxPooledPerRoute(5)
.connectionPoolSize(10)
.socketTimeout(10L, TimeUnit.SECONDS)
.register(jacksonProvider)
.register(new RestClientLogger())
.register(new RestClientMDCFilter())
.build();
被註冊的jacksonProvider
有一個ResteasyJackson2Provider jacksonProvider = new ResteasyJackson2Provider();
附帶了一個自定義ObjectMapper
這是非常重要的進行反序列化。到目前爲止好,問題是,我得到以下警告在JBoss中:
10:31:38,414 WARN [org.jboss.resteasy.resteasy_jaxrs.i18n] (default-threads - 1) RESTEASY002155: Provider class org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider is already registered. 2nd registration is being ignored.
這是有道理的,如果我查看文檔時已一直是之前已經註冊了相同的類的實例。我使用了一個反編譯器來檢查ResteasyClientBuilder
在做什麼並且能夠看到,它掃描類路徑中是否包含描述應該註冊「內置」提供程序的資源的jar。
其中一個jboss提供的實現現在顯然已經定義了ResteasyJackson2Provider
這是註冊在那裏使我不可能以後註冊我自己的實例。
我在這裏有什麼選擇?我需要將我的版本ResteasyJackson2Provider
- 或至少ObjectMapper
加入客戶端。我能否以某種方式替換現有的?