[JAVA] L'histoire d'une exception d'état illégale dans Jetty.

introduction

Lorsque j'essaie de recevoir des données POST avec Jetty, cela semble étrange. Allons vérifier.

environnement

Jetty embedded

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.4.6.v20170531</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.eclipse.jetty.aggregate/jetty-all-server -->
        <dependency>
            <groupId>org.eclipse.jetty.aggregate</groupId>
            <artifactId>jetty-all-server</artifactId>
            <version>8.2.0.v20160908</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.orbit</groupId>
            <artifactId>javax.servlet</artifactId>
            <version>3.0.0.v201112011016</version>
        </dependency>

Variables qui peuvent déjà être utilisées

Request baseRequest, HttpServletRequest request, HttpServletResponse response

Journal

p1p2p3p4[Thu Jun 14 00:29:21 JST 2018][LowerLobby]:null
p6p1p2p3java.lang.IllegalStateException: STREAMED
	at org.eclipse.jetty.server.Request.getReader(Request.java:1149)
	at com.haniokasai.mc.SteadyMistress.web.handlers.srvtools.pluginmanager_handler.pluginmanager_handler(pluginmanager_handler.java:59)
	at com.haniokasai.mc.SteadyMistress.web.WebHandler.handle(WebHandler.java:63)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:564)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
	at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)
	at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591)
	at java.lang.Thread.run(Thread.java:748)

Solution

Quel est ce gars?

La description a été trouvée assez rapidement. ==>>http://apache-wicket.1842946.n4.nabble.com/java-lang-IllegalStateException-STREAMED-Consuming-JSON-fails-td3850442.html

This exception says "Don't use the reader but use the input stream because something (maybe header) has been already read from the stream".

Cette exception dit "utiliser le flux d'entrée sans le lecteur, car quelque chose (probablement l'en-tête) utilise déjà le flux."

Hoho, c'est vrai.

En d'autres termes, vous n'avez pas besoin d'utiliser le lecteur de tampon déjà préparé.

BufferedReader in = baseRequest.getReader();

De

BufferedReader in = new BufferedReader( new InputStreamReader(request.getInputStream()));

Simplement fais-le! Le questionneur dit!

c'est tout!

Recommended Posts

L'histoire d'une exception d'état illégale dans Jetty.
L'histoire de l'écriture de Java dans Emacs
L'histoire de la fabrication d'un Othello ordinaire à Java
L'histoire du lancement de données BLOB depuis EXCEL dans DBUnit
[Docker] Une histoire sur une erreur dans la composition de docker
Expliquer DI dans une histoire d'obésité
[Édition Java] Histoire de la sérialisation
L'histoire de @ViewScoped dévore la mémoire
L'histoire de toString () commençant par le passage d'un tableau à System.out.println
Ordre de traitement dans le programme
Comment obtenir la longueur d'un fichier audio avec Java
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
L'histoire de l'acquisition de Java Silver en deux mois de totalement inexpérimenté.
L'histoire de la rencontre avec l'annotation personnalisée Spring
Obtenez le résultat de POST en Java
L'identité des paramètres de rails [: id]
L'histoire de la mise à jour du Docker Container de Sonar Qube
Histoire de refactoring de rails apprise sur le terrain
Comparer les éléments d'un tableau (Java)
L'histoire de RxJava souffrant de NoSuchElementException
Trouver une approximation de cosx avec Swift
Ecrire le mouvement de Rakefile dans le runbook
L'histoire de la création d'une application Android capable d'ajuster la fréquence d'échantillonnage du capteur d'accélération
[Order method] Définit l'ordre des données dans Rails
[Java] Gestion des Java Beans dans la chaîne de méthodes
[Android] [Java] Gérer l'état de CheckBox de ListView
Coincé devant le forgeron par enum
À propos de l'idée des classes anonymes en Java
Une histoire sur le JDK à l'ère de Java 11
Une histoire sur la compatibilité d'un Dockerfile existant avec le GPU
Mesurer la taille d'un dossier avec Java
L'histoire de l'introduction de la communication Ajax à Ruby
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Ressentez le passage du temps même à Java
L'histoire du réglage de l'application Android avec libGDX
L'histoire de l'ajout du dernier Node.js à DockerFile
L'histoire de l'initialisation de Money :: Currency pendant les tests
Importer des fichiers de la même hiérarchie en Java
Que faire si vous ne pouvez pas obtenir le texte d'un élément dans Selenium
Comment utiliser git avec la puissance de jgit dans un environnement sans commandes git
Ecrire un test en mettant en œuvre l'histoire de M. Nabeats dans le monde avec du rubis