1

hello-lagom という名前のサンプル Lagom プロジェクトを作成しましたが、すべて正常に動作しているようです。ただし、最初にサービスロケーターを開始してから、次のようにプロジェクトを実行することにより、helloworld-impl プロジェクトを実行しようとすると、次のようになります。

activator lagomServiceLocatorStart
activator helloworld-impl/run

コンソールに、サービス ロケーターが実行中であることが示されます。

[info] Service locator is running at http://localhost:8000
[info] Service gateway is running at http://localhost:9000
[success]

ただし、Lagom は helloworld-impl サービスの開始時に接続拒否例外をスローします。

c.l.l.j.p.InitServiceLocatorHolder - Cassandra server name=[cas_native]
couldn't be registered to the service locator.
java.net.ConnectException: Connection refused: localhost/127.0.0.1:8000

埋め込み cassandra を lagomCassandraStart で起動しても役に立ちません。cassandra サービスだけでなく、helloworld-impl もサービス ロケーターへの登録に失敗します。ポートに telnet しようとしましたが、接続が拒否されました。

これは、サービスをスタンドアロンで実行しようとしたときにのみ発生するバグでしょうか、それとも何か不足している可能性がありますか?

4

1 に答える 1

1

問題は、最初のコマンドactivator lagomServiceLocatorStartが埋め込みサービス ロケーターを開始することですが、コマンドの実行直後にサービス ロケーターも停止することです (アクティベーター セッションが終了したため)。アクティベーター セッションの終了時に埋め込みサービス ロケーターを自動的に停止する理由は、リソースのリークを避けるためです。

ここには 3 つの解決策があります。

1) 2 つのタスクを連結して、同じアクティベーター セッション内で実行されるようにします。activator lagomServiceLocatorStart helloworld-impl/run

2)最初にアクティベーターセッションに入り、次にタスクを実行します(毎回アクティベーターを開始するための時間ペナルティを支払わないため、1よりもこれをお勧めします):

$ activator
> lagomServiceLocatorStart
> helloworld-impl/run

3) サービス ロケーターとサービスを手動で開始する代わりに、LagomrunAllタスクを使用します。

$ activator
> runAll
于 2016-05-22T07:11:01.227 に答える