2012-04-02 6 views
3

In unserer Jersey-Anwendung möchten wir verschiedene Teile unserer API rollenbasiert darstellen/einschränken. Um genau zu sein, möchten wir nur Links zu Ressourcen anbieten, die die Rolle besuchen kann - d. H. Bereits bei der Vorbereitung von Antwort A würden wir nicht einmal eine Verbindung zu einer Ressource X anbieten, wenn der Benutzer X sowieso nicht verwenden könnte.Resolve, welche Ressource + Methode ein URI in Jersey übereinstimmen würde

Um diese Links unterscheiden zu können, möchten wir in der Lage sein, Jersey zu fragen, wie es einen bestimmten URI auflösen würde - d. H. Zu welcher Ressource und zu welcher Methode auf dieser Ressource. Wenn wir das tun könnten, würden wir auch erkennen können, ob es auf eine Weise annotiert ist (@RolesAllowed), die keinen Zugriff erlauben würde ... und daher wären wir in der Lage, das Hinzufügen der Verknüpfung zu der Antwort zu überspringen. Offensichtlich hat Jersey dieses Wissen/Fähigkeiten, da es eingehende Anfragen auflösen kann.

Die Frage ist: Gibt es eine Möglichkeit, Jersey zu fragen, was ein URI in Bezug auf Klasse und Methode lösen würde?

Edit: Ja ... wir haben festgestellt, dass es einen ResourceContext gibt (der injiziert werden kann), der uns die passende Ressourcenklasse liefern kann ... aber wir können immer noch nicht herausfinden, welche Methode ein URI auflösen würde.

Antwort

0

Interessant. Ich glaube nicht, dass dies ein Standarddienst ist, der veröffentlicht wird, aber vorausgesetzt, dass Sie in web.xml ein Trikot einrichten, wird Ihre Konfiguration in WebServletConfig und ServletContainer gespeichert. Ich würde mir die Quelle für diese beiden Klassen ansehen und sehen, was verfügbar ist. Zumindest sollten Sie in der Lage sein, eine Unterklasse in dem Stapel zu bilden, der die Initialisierung durchführt und die Informationen speichert, die Sie selbst benötigen. Es wäre viel praktischer, die Zuordnung zu der Zeit zu erhalten, wenn die Klassen geladen werden und die Annotationsverarbeitung stattfindet, anstatt sie für jede Anforderung nachzuschlagen.