web-dev-qa-db-ja.com

JsonParseException:予期しない文字( '<'(コード60)):有効な値が必要です(数値、文字列、配列、オブジェクト、 'true'、 'false'または 'null')

サーバー内のドッカーコンテナーのHBaseに新しい患者を挿入するプログラムがあります。 JUnitテストを実行するために接続IPをフェニックスクエリサーバーに変更しようとするまで、すべてが正常に機能しています。プロパティファイルで次のようにURLを設定しています。

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] 

json解析例外が発生する理由がわかりません。外部APIのため、デバッグは役に立ちませんでした。例外がプロパティファイルのURLの形式、患者(xml形式)、またはフェニックスクライアントに関連しているかどうかもわかりません。

フェニックスクエリサーバーを起動しましたが、接続できたようです。以前は "接続拒否"例外をスローしていましたが、現在はそうではありません。

私はこのようにpom.xmlにフェニックスを追加しました:

<dependency>
    <groupId>org.Apache.phoenix</groupId>
    <artifactId>phoenix-server</artifactId>
    <version>4.7.0-HBase-1.1</version>
</dependency>

しかし、フェニックスシンクライアント用に他に何かを追加する必要があるかどうかはわかりません。必要な場合、その依存関係を見つけることができなかったので、含まれていると思いました。

どんな助けでもありがたいです!

編集:

これは、サーバーがスローする例外です。

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

フェニックスサーバーを適切にアップグレードしましたか? JSONとプロトコルバッファの両方のプロトコルを使用して接続しようとしているようです。どちらか一方でなければなりません。

2
kliew

承認、ヘッダー、その他のパラメータを正しく提供しているかどうかを確認してください。

I 解決済みこれらの手順を確認します。

0
Ajay