ДЖЕРСИ КЛИЕНТ И CXF СМЕШАННЫЕ (выпуск из нескольких частей) - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть старое приложение, которое смешивает как cxf, так и jersey-client. Когда я использую клиент jersey, но cxf вступает во владение.

 Response response = client
            .target("http://example.com") 
            .register(MultiPartFeature.class) //error when run this line
            .request(MediaType.APPLICATION_JSON )accept type
            .put(Entity.entity(request, mediaType), Response.class); 

При использовании клиента jersey для получения составной части с сервера джерси это действие обрабатывается cxf и выдает ошибку:

java.lang.RuntimeException: java.lang.InstantiationException: org.glassfish.jersey.media.multipart.internal.FormDataParamValueFactoryProvider
21:09:51,574 INFO  [stdout] (default task-31)   at org.apache.cxf.jaxrs.impl.ConfigurationImpl.createProvider(ConfigurationImpl.java:208) ~[cxf-rt-frontend-jaxrs-3.1.5.jar:3.1.5]
21:09:51,574 INFO  [stdout] (default task-31)   at org.apache.cxf.jaxrs.impl.ConfigurationImpl.register(ConfigurationImpl.java:176) ~[cxf-rt-frontend-jaxrs-3.1.5.jar:3.1.5]
21:09:51,574 INFO  [stdout] (default task-31)   at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:91) ~[cxf-rt-frontend-jaxrs-3.1.5.jar:3.1.5]
21:09:51,574 INFO  [stdout] (default task-31)   at org.apache.cxf.jaxrs.impl.ConfigurableImpl.doRegister(ConfigurableImpl.java:117) ~[cxf-rt-frontend-jaxrs-3.1.5.jar:3.1.5]
21:09:51,574 INFO  [stdout] (default task-31)   at org.apache.cxf.jaxrs.impl.ConfigurableImpl.register(ConfigurableImpl.java:108) ~[cxf-rt-frontend-jaxrs-3.1.5.jar:3.1.5]

Возникла проблема введите описание ссылки здесь

1 Ответ

0 голосов
/ 29 ноября 2018

Используйте JerseyClientBuilder вместо ClientBuilder.Последний по умолчанию будет использовать клиент CXF.И не используйте JerseyClientBuilder.newClient().Он унаследован от ClientBuilder (который расширяется JerseyClientBuilder), поэтому он имеет поведение по умолчанию, упомянутое ранее по умолчанию при использовании CXF.Используйте JerseyClientBuilder.createClient() или создайте экземпляр компоновщика, вызовите несколько методов для него, затем вызовите build().Вы можете посмотреть исходный код .

...