I have a java web application developed with jdk 1.8u341 / wildfly 10. There is an error when the application tries to connect webservices using Jersey 2. The application starts from MyService Class that interacts Client class. The exception occurred because of the instruction Client client = ClientBuilder.newClient().
pom file:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.19</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.19</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.19</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.4.1</version>
</dependency>
MyService.java
@Path("/")
public class MyService {
public MyService() {
client = Client.getInstance(CONFIG.getProperty("url"));
}
@POST
@Path("/sendInfo")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public void sendInfo(NotificationRequest notiRequest){
String firstName = notiRequest.getFirstName();
String lastName = notiRequest.getLastName();
client.notify(firstName,firstName)
}
}
Client.java
public class Client {
private String url;
public static Client getInstance(String url) {
if(instance == null){
instance = new Client(url);
}
return instance;
}
public NotifyResponse notify(String firstName, String lastName) {
NotifyResponse notiRes = new NotifyResponse();
Client client = ClientBuilder.newClient(); // client gives null, so from here it will throw the exception
WebTarget webTarget = client.target(this.url + "?firstName="+firstName+"&lastName="+lastName);
Response response = webTarget.request().get();
if(response.getStatus()!=200 && response.getStatus()!=400){
notiRes.setResult(0);
LOG.info("HTTP connection failed " + response.getStatus());
response.close();
return notiRes;
}
Map rptaMap = (new Genson()).deserialize(response.readEntity(String.class), Map.class);
if(rptaMap == null){
notiRes.setResult(0);
LOG.info("NotifyResponse es nulo");
response.close();
return notiRes;
}
notiRes.setResult((Boolean)rptaMap.get("result") ? 1:0);
response.close();
return notiRes;
}
}
This is the Java application log:
[WARN ] 21-11-2022 12:07:18 com.example.MyService.sendInfo(MyService.java:388) - java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
java.lang.RuntimeException: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
at org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.java:35)
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.getProviderFactory(ResteasyClientBuilder.java:340)
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:348)
at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:53)
at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114)
at com.example.client.notify(Client.java:302)
at com.example.MyService.sendInfo(MyService.java:370)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
Caused by: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1437)
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1368)
at org.jboss.resteasy.plugins.providers.RegisterBuiltin.registerProviders(RegisterBuiltin.java:71)
at org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.java:31)
... 68 more
Caused by: java.lang.RuntimeException: RESTEASY003325: Failed to construct public com.owlike.genson.ext.jaxrs.GensonJsonConverter(javax.ws.rs.ext.Providers)
at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:162)
at org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2246)
at org.jboss.resteasy.spi.ResteasyProviderFactory.addMessageBodyReader(ResteasyProviderFactory.java:806)
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1432)
... 71 more
Caused by: org.jboss.resteasy.spi.LoggableFailure: RESTEASY003880: Unable to find contextual data of type: javax.ws.rs.ext.Providers
at org.jboss.resteasy.core.ContextParameterInjector$GenericDelegatingProxy.invoke(ContextParameterInjector.java:62)
at com.sun.proxy.$Proxy200.getContextResolver(Unknown Source)
at com.owlike.genson.ext.jaxrs.GensonJsonConverter.<init>(GensonJsonConverter.java:38)
...
What can I do for this case?