REST JAX-RS, javax.ws.rs.ProcessingException:
Ich bin immer unten Ausnahme, wenn mein REST-client-code einen Aufruf der REST-service mit folgenden code:
Code:
public void putWatcher(Watcher watcher)
{
System.out.println("In REST Client putWatcher.***********");
target = target.path(RESOURCE_WATCHERS).path(watcher.getWatcheruri());
System.out.println(target.getUri());
Invocation.Builder builder = target.request();
builder.put(Entity.json(watcher));
// Response response = target.request().put(Entity.json(watcher));
System.out.println("Returned from REST Call");
}
Ausnahme:
: javax.ws.rs.ProcessingException: javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family;
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:667)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:664)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:664)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:424)
at org.glassfish.jersey.client.JerseyInvocation$Builder.put(JerseyInvocation.java:318)
Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.Response$Status$Family.familyOf(I)Ljavax/ws/rs/core/Response$Status$Family;
at org.glassfish.jersey.message.internal.Statuses$StatusImpl.<init>(Statuses.java:63)
at org.glassfish.jersey.message.internal.Statuses$StatusImpl.<init>(Statuses.java:54)
at org.glassfish.jersey.message.internal.Statuses.from(Statuses.java:93)
at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:323)
at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:227)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246)
... 29 more
Meine REST-Dienst wird bereitgestellt auf Tomcat 8 server und die client-code ist Bereitstellung auf JBoss 7.2.
Die client-Anwendung SIP-Servlets-Anwendung, die auch bundles REST-client.
Wenn ich zum testen den client als eigenständige Java-Applikation, es funktioniert aber bei Bereitstellung auf JBoss gibt es den Fehler.
Meine POM-Datei:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- logging dependency -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.0.4</version>
<scope>provided</scope>
</dependency>
<!-- web j2ee dependencies -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!-- sip dependencies -->
<dependency>
<groupId>org.mobicents.servlet.sip</groupId>
<artifactId>sip-servlets-spec</artifactId>
<version>1.7.0.FINAL</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.13</version>
</dependency>
Ich versuche auch zu tun, wie vorgeschlagen, auf diesen link https://github.com/gondor/openstack4j/issues/30
Es sagt zu deaktivieren, JAX-RS von JBOSS config standalone.xml. Ich bin mit standalone-sip.xml während der server gestartet, so dass ich geändert, dass nur. Entfernt diese beiden Zeilen:
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<extension module="org.jboss.as.jaxrs"/>
Diese auch nicht funktioniert. Ich weiß nicht, wie zu deaktivieren, die nur gesucht für JAX-RS und gelöscht werden die Zeilen gefunden, wo ich diese.
In einem SO post es war ein Vorschlag, javax.ws.rs.core.Response respone
statt Response response
versucht aber auch kein Glück.
Noch eine info: die REST-Aufruf selbst erfolgreich ist, dass ich sehen kann, auf dem tomcat-server.
Bitte vorschlagen, was sonst getan werden kann.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vor kurzem stieß auf dieses problem. Es wurde verursacht durch eine Bibliothek mit einer alten Implementierung von
javax.ws.rs.core
. Ich fixierte es wie folgt:Können Sie einen Blick auf Bibliotheken Katalog Ihrer JBoss-Instanz, und entfernen Sie alle Implementierungen von JAX-WS? Mir scheint es Sie zu Konflikten mit dem Trikot-Sie bündeln in Ihrer war-Datei.
Edit:
Eigentlich denke ich, müssen Sie zu beheben, JAX-WS version Konflikt zwischen Ihrem server und web-Anwendung. Methode familyOf Sie fehlen in Antwort.Status.Familie eingeführt wurde Java 7 aber fehlt Java EE 6. So finden Sie Java EE 6 kompatibel Jersey-version oder aktualisieren Sie den server.
Und wenn später Maven Probleme verursachen wird, dann für den richtigen "kick", es gibt auch
und
Traf ich einen ähnlichen Fehler. "java.lang.NoSuchMethodError: javax/ws/rs/ClientErrorException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status$Family;"
Ursache: web-service-performance-tester aufrufen des web-service ein Skript verwenden, ohne Sie in der richtigen request-body.
fehlt ein "/" im Pfad der url des web-service-Aufruf ist ein anderer Fall.
wenn Sie diese Fehler bei der überprüfung, das bedeutet, dass einige wichtige Fehler schon passiert ist, das noSuchMethodError ist nur ein kleines Nebenprodukt beim Umgang mit den großen Fehler.