Sie könnten einen Proxy-RESTful-Service erstellen und diesen als Einstiegspunkt für alle anderen RESTful-Services verwenden. Dieser Proxy kann Anfragen empfangen, jegliche Vorverarbeitung durchführen, den erforderlichen REST-Dienst aufrufen, die Antwort verarbeiten und dann dem Anrufer etwas zurückgeben.
Ich habe so ein Setup in einem Projekt, an dem ich gearbeitet habe. Der Proxy führt Funktionen wie Authentifizierung, Autorisierung und Audit-Protokollierung aus. Ich kann auf weitere Details eingehen, wenn Sie möchten.
Bearbeiten:
Hier ist eine Idee, wie Sie möglicherweise einen Proxy implementieren, der GET-Anforderungen unterstützt;
@Path("/proxy")
public class Proxy
{
private Logger log = Logger.getLogger(Proxy.class);
@Context private UriInfo uriInfo;
@GET
@Path("/{webService}/{method}")
public Response doProxy(@Context HttpServletRequest req,
@PathParam("webService") String webService,
@PathParam("method") String method)
{
log.debug("log request details");
//implement this method to work out the URL of your end service
String url = constructURL(req, uriInfo, webService, method);
//Do any actions here before calling the end service
Client client = Client.create();
WebResource resource = client.resource(url);
try
{
ClientResponse response = resource.get(ClientResponse.class);
int status = response.getStatus();
String responseData = response.getEntity(String.class);
log.debug("log response details");
//Do any actions here after getting the response from the end service,
//but before you send the response back to the caller.
return Response.status(status).entity(responseData).build();
}
catch (Throwable t)
{
//Global exception handler here
//remember to return a Response of some kind.
}
}
Die akzeptierte Antwort bezieht sich nicht auf Ihre Wunsch nach Pre- und Post-Request-Aktionen. Bist du jemals zu einer Lösung gekommen? –
Benutzerdefiniert [Servlet Filter] (http://download.oracle.com/javaee/5/api/javax/servlet/Filter.html) ist der Weg zu gehen. – yegor256