2017-08-04 8 views
0

Kubernetesで動作するサービスを開発しています。このサービスの機能テストのために、私たちのテストでは、ラップトップ上で実行されているミニキューブにサービスが展開されます。kubernetes minikubeサービスへの接続でjava rest clientがリモートでクローズされました

最も基本的なテストでは、Javaクライアントはサービスのヘルスチェックエンドポイントをpingします。 Javaクライアントは、ジャージーを使用し、単にのようなクライアントを作成します。

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
.. 
private static final Client CLIENT = ClientBuilder.newClient(); 

The request fails with; 
2017-08-04 13:57:55.202 WARNING [PingTest] Remotely closed 
2017-08-04 13:57:55.206 INFO [system.err] javax.ws.rs.ProcessingException: Remotely closed 
2017-08-04 13:57:55.207 INFO [system.err]  at org.glassfish.jersey.grizzly.connector.GrizzlyConnector.apply(GrizzlyConnector.java:260) 
2017-08-04 13:57:55.207 INFO [system.err]  at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) 
2017-08-04 13:57:55.208 INFO [system.err]  at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:684) 
.. 

しかし、私はカールやポストマンから直接minikubeで実行されている同じエンドポイントを呼び出すことができます。

3つの別のクライアントから送信された要求は、(ユーザーエージェントを除く)基本的に同じである:

--POSTNAME-- 
GET /20170101/health HTTP/1.1 
cache-control: no-cache 
Postman-Token: f899c540-e93a-479b-9e8b-c58e356140d7 
User-Agent: PostmanRuntime/6.2.5 
Accept:/
Host: localhost:31081 
accept-encoding: gzip, deflate 
Connection: keep-alive 

--CURL-- 
GET /20170101/health HTTP/1.1 
Host: localhost:31081 
User-Agent: curl/7.54.0 
Accept:/

--JAVA TEST-- 
GET /20170101/health HTTP/1.1 
User-Agent: Jersey/2.24.1 (Async HTTP Grizzly Connector 2.24.1) 
Host: localhost:31081 
Connection: keep-alive 
Accept:/

私はカールやポストマンからではなく、Javaからエンドポイントにアクセスできる理由の任意のアイデアクライアント?

+0

読み取り可能なコードで完全なスタックトレースを投稿してください – CodeIsLife

+0

ここにスタックトレースがあります。 – tiwatso

+0

2017-08-04 16:56:17.592 INFO [system.err] javax.ws.rs.ProcessingException:リモートで閉じた 2017-08-04 16:56:17.594 INFO [system.err] \t at org.glassfish。 jersey.grizzly.connector.GrizzlyConnector.apply(GrizzlyConnector.java:260) 2017-08-04 16:56:17.594 INFO [system.err] \t at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java) :252) 2017-08-04 16:56:17.595 INFO [system.err] \t at org.glassfish.jersey.client.JerseyInvocation $ 1.call(JerseyInvocation.java:684) ... – tiwatso

答えて

0

タイミング問題であることが分かります。サービスエンドポイントを呼び出す前にコンテナが準備完了状態になるまで待つことを目的としたコールバックメソッドがありますが、コールバックをバイパスしたコードパスが見つかりました。

関連する問題