web-dev-qa-db-fra.com

JsonParseException: caractère inattendu ('<' (code 60)): attend une valeur valide (nombre, chaîne, tableau, objet, 'vrai', 'faux' ou 'nul')

J'ai un programme qui insère un nouveau patient dans HBase dans un conteneur Docker à l'intérieur d'un serveur. Tout fonctionne bien jusqu'à ce que j'essaie de changer l'adresse IP de connexion à un serveur de requête Phoenix pour exécuter des tests JUnit. Je mets 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 reçois une exception d'analyse de json. En raison des API externes, le débogage n'a pas aidé. Je ne sais même pas si l'exception est liée au format de l'URL dans mon fichier de propriétés, au patient (qui vient au format xml) ou peut-être même au client phoenix.

J'ai démarré le serveur de requête Phoenix et il semble qu'il puisse s'y connecter, car il lançait une exception "connexion refusée" auparavant et maintenant ce n'est pas le cas.

J'ai ajouté phoenix dans mon 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 autre chose pour le client léger Phoenix. Si je le dois, je n'ai pas pu trouver cette dépendance, j'ai donc supposé qu'elle était incluse.

Toute aide est appréciée!

ÉDITER:

C'est l'exception que le serveur lève:

> > 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
10
randombee

Avez-vous correctement mis à niveau votre serveur Phoenix? Il semble qu'il essaie d'utiliser à la fois les protocoles JSON et Protocol Buffer pour se connecter. Ce devrait être l'un ou l'autre.

2
kliew

Vérifiez si vous fournissez correctement l'autorisation, les en-têtes et d'autres paramètres.

I résol en vérifiant ces étapes.

0
Ajay