Ich habe eine Ring-App, die durch die Produktion als uberwar
Ding implementiert; meinservice.war. In der Produktion wird die WAR-Datei in Jetty geworfen, wo es in einem Kontext ausgeführt wird, der seinen NamenKann ich lein ring server-headless in einem bestimmten Servlet-Kontext ausführen lassen?
$ curl -i -X GET http://myservice.qa1.example.com:8080/myservice/healthz
HTTP/1.1 200 OK
...
Wenn ich Ring laufen lokal durch lein, ich muss es laufen in diesem Zusammenhang folgt; mein Service.
$lein ring server-headless
2015-10-14 14:04:03,457 level=INFO [main] Server:271 - jetty-7.6.13.v20130916
2015-10-14 14:04:03,482 level=INFO [main] AbstractConnector:338 - Started [email protected]:10313
Started server on port 10313
Aber die gleiche Locke geht alle 404 auf mich lokal.
$ curl -i -X GET http://localhost:10313/myservice/healthz
HTTP/1.1 404 Not Found
...
Die Lein-Ring-Sache entfaltete es auf den Wurzelkontext.
$ curl -i -X GET http://localhost:10313/healthz
HTTP/1.1 200 OK
...
Was ist damit los? Wie lege ich lein ring an, um es in einen Kontextnamen meiner Wahl zu bringen? Ich brauche curl -i -X GET http://localhost:10313/myservice/healthz
von Lein Ring zu arbeiten
Oh mein. Ausgezeichnete Antwort. Morgen werde ich sehen, ob es für mich klappt. –
Hmmm.Ich kann sehen, was es zu tun versucht, aber wenn ich in Jetty laufe, ist es immer nicht gefunden für/myservice/healthz. Diese Lösung ist wirklich clever, aber die zwei verschiedenen Handler zu erklären: Ring vs: Uberjar wird ein schwieriger Verkauf in Code-Reviews sein. Dies scheint eine Lücke zu mir in, was? Lein-Ring? –
Die Antwort "Nicht gefunden", die Sie sehen, kann darauf zurückzuführen sein, dass das Uberjar-Profil beim Erstellen des Uberwars nicht angezeigt wird. Dies könnte an einer alten Version des "Lein-Ring" -Plugins oder an einem Tippfehler liegen. Wenn '/ myservice/myservice/healthz' funktioniert, ist das wahrscheinlich das Problem. – ez121sl