JsonParseException: caractère Inattendu ("< " (code 60)): une valeur valide (number, String, array, object, 'true', 'faux' ou 'null')
J'ai un programme qui insère un nouveau patient à HBase dans un conteneur docker à l'intérieur d'un serveur. Tout fonctionne bien jusqu'à ce que j'ai essayer de changer l'IP de connexion à un phoenix serveur de requête pour l'exécution des tests JUnit. Je suis paramètre de l'URL dans le fichier de propriétés comme ceci:
java.lang.RuntimeException: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: java.io.StringReader@1105b1f; line: 1, column: 2]
...
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: java.io.StringReader@1105b1f; line: 1, column: 2]
Je ne sais pas pourquoi je suis la réception d'un json
analyser exception. En raison de l'api externe, le débogage n'a pas aidé. Je ne sais même pas si l'exception est lié au format de l'URL dans mon fichier de propriétés pour le patient (qui est au format xml), ou peut-être même le phoenix client.
J'ai commencé le phoenix serveur de requête et il semble qu'il peut se connecter à elle, parce qu'il lançait une "connexion refusée" exception avant et maintenant il ne le fait pas.
J'ai ajouté dans mon phoenix pom.xml comme ceci:
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-server</artifactId>
<version>4.7.0-HBase-1.1</version>
</dependency>
mais je ne sais pas si je dois ajouter quelque chose d'autre pour le phoenix-thin-client. Si je le dois, je ne pouvais pas trouver que la dépendance, donc j'ai supposé que c'est inclus.
Toute aide est très appréciée!
EDIT:
C'est l'exception, le serveur lance:
> > 2016-05-05 08:52:11,979 WARN org.eclipse.jetty.server.HttpChannel: / java.lang.RuntimeException:
> org.apache.calcite.avatica.com.google.protobuf.InvalidProtocolBufferException:
> While parsing a protocol message, the input ended unexpectedly in the
> middle of a field. This could mean either that the input has been
> truncated or that an embedded message misreported its own length.
> at org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:98)
> at org.apache.calcite.avatica.remote.ProtobufHandler.apply(ProtobufHandler.java:38)
> at org.apache.calcite.avatica.server.AvaticaProtobufHandler.handle(AvaticaProtobufHandler.java:68)
> at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
> at org.eclipse.jetty.server.Server.handle(Server.java:497)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:245)
> at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
> at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.calcite.avatica.com.google.protobuf.InvalidProtocolBufferException:
> While parsing a protocol message, the input ended unexpectedly in the
> middle of a field. This could mean either that the input has been
> truncated or that an embedded message misreported its own length.
> at org.apache.calcite.avatica.com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:70)
> at org.apache.calcite.avatica.com.google.protobuf.CodedInputStream.skipRawBytesSlowPath(CodedInputStream.java:1293)
> at org.apache.calcite.avatica.com.google.protobuf.CodedInputStream.skipRawBytes(CodedInputStream.java:1276)
> at org.apache.calcite.avatica.com.google.protobuf.CodedInputStream.skipField(CodedInputStream.java:197)
> at org.apache.calcite.avatica.com.google.protobuf.CodedInputStream.skipMessage(CodedInputStream.java:273)
> at org.apache.calcite.avatica.com.google.protobuf.CodedInputStream.skipField(CodedInputStream.java:200)
> at org.apache.calcite.avatica.proto.Common$WireMessage.<init>(Common.java:11627)
> at org.apache.calcite.avatica.proto.Common$WireMessage.<init>(Common.java:11595)
> at org.apache.calcite.avatica.proto.Common$WireMessage$1.parsePartialFrom(Common.java:12061)
> at org.apache.calcite.avatica.proto.Common$WireMessage$1.parsePartialFrom(Common.java:12055)
> at org.apache.calcite.avatica.com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:137)
> at org.apache.calcite.avatica.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:168)
> at org.apache.calcite.avatica.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:180)
> at org.apache.calcite.avatica.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:185)
> at org.apache.calcite.avatica.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)
> at org.apache.calcite.avatica.proto.Common$WireMessage.parseFrom(Common.java:11760)
> at org.apache.calcite.avatica.remote.ProtobufTranslationImpl.parseRequest(ProtobufTranslationImpl.java:236)
> at org.apache.calcite.avatica.remote.ProtobufHandler.decode(ProtobufHandler.java:42)
> at org.apache.calcite.avatica.remote.ProtobufHandler.decode(ProtobufHandler.java:28)
> at org.apache.calcite.avatica.remote.AbstractHandler.apply(AbstractHandler.java:95)
> ... 11 more
Si le débogage ne fonctionne pas, vous pouvez essayer de capturer la réponse du serveur à l'aide d'un sniffer réseau.
Dans mon cas, c'était dû à l'arrêt du serveur et lancer 404 not Found. Veuillez vérifier votre code de réponse.
OriginalL'auteur randombee | 2016-05-05
Vous devez vous connecter pour publier un commentaire.
Avez-vous mise à niveau de votre Phoenix serveur correctement? On dirait qu'il essaie d'utiliser à la fois le JSON et Tampon Protocole protocoles pour vous connecter. Il devrait être l'un ou l'autre.
essayez d'ajouter
serialization=PROTOBUF
dans votre chaîne de connexion jdbc. Mais je pense qu'aurait été la valeur par défaut pour le serveur et le client si les deux sont à la version 4.7Cela a fonctionné. Apparemment JSON est la valeur par défaut (ou "quelqu'un d'autre" est en train de changer quelque part et je ne suis pas au courant!). Merci!!!!!!
Vous êtes les bienvenus 🙂
OriginalL'auteur kliew