Frage ! asyncSupported Ausnahme, wenn von Jetty 7 zu Jetty 9 gewechselt wird


Wir haben kürzlich unsere Jetty-Version aktualisiert. Als wir das taten, hörten beide unserer alten gui war-Dateien, die seit einiger Zeit nicht mehr verändert wurden, auf, richtig zu funktionieren. Ich glaube, ich jagte die Ursache auf den Proxy (verwendet, um Proxy auf eine erholsame Schnittstelle an einem anderen Port), jeder Aufruf an den Proxy löst die Ausnahme aus:

 IllegalStateException: !asyncSupported

Ich bin nicht sicher, warum dies mit 1.9 aber nicht mit dem alten Steg geschehen würde. Ich kann die Kriegsdatei derzeit nicht erstellen, es war ein Durcheinander, das nur ein Entwickler jemals erstellen konnte, aber ich habe es mit jetty -x und ading auf den Servlet-Abschnitt der web.xml-Datei entpackt:

<async-supported>true</async-supported>

und dann wird es mit dem Befehl j c erneut gezippt. das schien nicht zu helfen, obwohl ich jetzt ausnahmen in meinem anlegestellen log fhile bekomme, während sie vorher nur im browser angezeigt wurden.

Kann mir jemand sagen, was ich tun soll, um die asynchrone Unterstützung zu aktivieren und / oder warum der Switch in Jetty dies verursachen würde?


5
2017-12-17 20:26


Ursprung


Antworten:


Ah, die Evolution der Spezifikation ...

  • Jetty 7 war Servlet 2.5 (dort kein Async)
  • Jetty 8 war Servlet 3.0 (async eingeführt) - Spezifikation war vage auf was Standard war, so Jetty standardmäßig async-supported == true
  • Jetty 9 ist Servlet 3.1 (noch mehr async) - die Spezifikation wurde geklärt, und die Anlegestelle wählte ihren Standard schlecht aus. Der Standardwert gemäß der Spezifikation ist async-supported == false

Deshalb mussten Sie in der Vergangenheit nicht async-unterstützt angeben, aber jetzt tun Sie es.

Fehler hierüber bugs.eclipse.org/410893

Verpflichten: 9bf7870c7c8a209f2660f63c14dd4acb62b07533


6
2017-12-17 20:58



Meine Ausnahme ist die gleiche für Sie. dann habe ich "<async-supported>true</async-supported>"an jedes Servlet und Filter anfügen. Es funktioniert gut. Zum Beispiel

<filter>
    <filter-name>continuation</filter-name>
    <filter-class>org.eclipse.jetty.continuation.ContinuationFilter</filter-class>
    <async-supported>true</async-supported>
</filter>

<servlet>
    <servlet-name>cometd</servlet-name>
    <servlet-class>org.cometd.annotation.AnnotationCometdServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>

die andere Hand. wenn du jetty9.x benutzt hast. Sie sollten Ihr Comet-Jar besser auf Version 3.0.x oder höher aktualisieren. Ich hoffe es hilft dir.


3
2017-10-28 09:47



Ich kann dies (noch) nicht als Kommentar hinzufügen, aber ich möchte hinzufügen: Wenn Sie diese Probleme haben und das async-unterstützte Tag entsprechend hinzugefügt haben (oder Jetty 8 verwenden), stellen Sie Ihre Filter sicher ebenfalls unterstützt async oder wird nicht mit dem betreffenden Servlet verwendet.


0
2018-05-21 18:44