2016-12-19 1 views
0

Ich mag würde einen folgenden Code haben:Jersey - Mehrere „Nicht-Anfrage im Zusammenhang“ Parameter in POST-Methode Unterschrift

@POST 
@Path("path") 
@Consumes(MediaType.TEXT_PLAIN) 
@Produces(MediaType.TEXT_PLAIN) 
public String doSomething(String body, CustomObject o) { 
    return o.getText(); 
} 

Einfach gesagt, eine POST-Methode, die auf das erste Argument String Anfrage Körper (abgebildet nimmt) und antwortet mit einer String-Antwort, basierend auf einem CustomObject in Parametern. Der benutzerdefinierte Objektwert wird über ValueFactoryProvider zur Verfügung gestellt - im Grunde ist der Wert im Filter eingetragen.

Aber ich bin nicht in der Lage, die Ressource zu nennen - die ich erhalten:

java.lang.IllegalStateException: The resource configuration 
is not modifiable in this context. 

Können Sie mir in die richtige Richtung? Vielen Dank.

Hinweis: Diese Art von Code wird derzeit in unserer Spring-Implementierung verwendet (Spring Smart mappt alles), wir arbeiten derzeit an der Java EE-Version und möchten eine ähnliche API haben.

+1

Sie versuchen also, den Wert zu extrahieren, der im Filter in Ihrem ValueFactoryProvider enthalten ist? –

+0

... ja, und du bist überall! :) Lass mich dir schnell sagen, woran ich gerade arbeite. Ich arbeite an PowerAuth 2.0 - einem Open-Source-Banking-Grade-Sicherheitssystem für das Mobile Banking. Um die Integration zu vereinfachen, biete ich Integrationsbibliotheken an. Wir haben bereits einen für Spring, jetzt baue ich einen für Java EE. Das Ziel ist eine Bibliothek, mit der Entwickler vorhandene REST-Ressourcen einfach annotieren und einen benutzerdefinierten Parameter mit vordefinierten Authentifizierungsdaten hinzufügen können. –

+0

Wenn Sie es portierbar machen möchten, dann möchten Sie keinen ValueFactoryProvider verwenden. Das ist Jersey spezifisch. Jetzt, wo ich darüber nachdenke, glaube ich nicht, dass es einen Standard-JAX-RS-Weg gibt, um diesen Anwendungsfall zu handhaben. Mit Jersey weiß ich genau, wie Sie damit umgehen können, aber ich bin mir nicht sicher, ob Sie eine Jersey-spezifische Lösung wünschen. Was ist, wenn jemand Wildfly verwenden möchte, der RESTEasy als JAX-RS-Implementierung verwendet? –

Antwort

0

Von hier aus: https://stackoverflow.com/a/22263604/912829

Eine mögliche Ursache ist, dass Sie zwei oder mehr anwendbar Mappings für die URL-Aufruf.

Zum Beispiel:

@Path ("/ {myParam}")

Und woanders:

@Path ("/ {differentParam}")

Jetzt Jersey haben keine Möglichkeit zu sagen, welche Methode eigentlich zu aufgerufen werden soll und gibt diesen Fehler.

+0

Nein, das ist nicht der Fall. Alles funktioniert, wenn ich den Parameter 'CustomObject' lösche und eine statische Zeichenfolge zurücksende. Das Problem ist mit dem zweiten Parameter. –

Verwandte Themen