Wie kann ich dienen, einen bestimmten classpath-Ressource an eine bestimmte Adresse mit eingebetteten jetty?
Ich bin auf der Suche, um aufzudecken ein clientacesspolicy.xml Datei aus einem eingebetteten jetty-server.
Mein Aktueller Versuch sieht wie folgt aus:
ContextHandler capHandler = new ContextHandler();
capHandler.setContextPath("/clientaccesspolicy.xml");
capHandler.setBaseResource(Resource.newClassPathResource("clientaccesspolicy.xml"));
HandlerList handlers = new HandlerList();
handlers.addHandler(capHandler);
...
httpServer.setHandler(handlers);
Aber ich bekomme eine 404-Zugriff auf http://localhost:9000/clientaccesspolicy.xml
Wie kann ich über eine classpath-Ressource, die einem bestimmten URL programmgesteuert in Jetty?
Dank,
Andy
InformationsquelleAutor Andy | 2012-02-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code funktioniert nicht, weil ein
ContextHandler
nicht eigentlich server-Inhalte.Eine kleine änderung wird es Art Arbeit, aber zu tun, was Sie wirklich wollen, müssen Sie schreiben Sie Ihren eigenen handler.
Den "Art works" - version:
Aber, dass version behandelt
/clientaccesspolicy.xml
als ein Verzeichnis, so dass es leitet zu/clientaccesspolicy.xml/
aus und zeigt dann den Inhalt der XML-Datei.Was es sieht aus wie Sie wollen, ist eine version des
ResourceHandler
dass eine Suche url => Ressource.Jetty nicht Schiff mit einem handler, der das tut, aber Sie sollten in der Lage sein erstellen Sie eine Unterklasse von
ResourceHandler
und dann überschreibengetResource
. In diesem Fall werden Sie nicht brauchen [oder wollen] der ContextHandler, überprüfen Sie einfach für Aufrufe von "/clientaccesspolicy.xml" und die Karte an die richtige ClassPath-Ressource.Tatsächlich, Sie können einfach registrieren ein Klasse Weg als class path resource (überraschend).
Dann können Sie den Zugriff auf beliebige Dateien sind in Ihrer Klasse Weg. Also, wenn Sie einen file.xml es wird serviert von localhost:9000/file.xml.