問題タブ [lagom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Lagom の使用を開始すると実行時例外が発生する
アクティベーターを次のようにインストールしました:
brew install typesafe-activator
次のように新しいプロジェクトを作成しました。
activator new my-first-system lagom-java
ディレクトリに移動し、次のようにプロジェクトを実行しactivator run
ます。
[info] Set current project to my-first-system (in build file:/Users/arungupta/workspaces/my-first-system/)
[info] Updating {file:/Users/arungupta/workspaces/my-first-system/}my-first-system...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last my-first-system/compile:run for the full output.
[error] (my-first-system/compile:run) No main class detected.
[error] Total time: 0 s, completed Mar 23, 2016 12:08:22 PM
JDKのバージョンは次のとおりです。
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
何が欠けていますか?
lagom - ロゴム アプリケーションでサービス ゲートウェイのポートを変更するにはどうすればよいですか?
開始するラグム アプリケーション http://www.lagomframework.com/documentation/1.0.x/GettingStarted.htmlを作成しました。
そして、システムは正常に起動しています。
0.0.0.0:8080 でリッスンするようにサービス ゲートウェイのホストとポートを変更するにはどうすればよいですか?
java - Lightbend Lagom - Java EE モノリスをリファクタリングする方法
モノリスをマイクロサービスにリファクタリングすることについて話している lightbend によって作成されたウェビナーを見ていましたが、質問がありました。このフレームワークの主なターゲットはモノリスのリファクタリングであるようですが、lagom は独自のコンテナーと一連のテクノロジで実行されているようです。モノリスとレガシー Java アプリについて考えるとき、頭に浮かんだ主なテクノロジーは Java EE です。今日のプロダクションのほとんどのアプリケーションは、いくつかの Java EE テクノロジーに依存していると思います。私が働いているのは、主にEJBに基づいています。私の質問は、Lagom がこの問題をどのように解決するのかということです。この種のアプリケーションをリファクタリングするには、リモート EJB ルックアップをレスト コールに変換する必要があると思います。しかし、ラグムが Java EE コンテナーで実行されない場合、アプリケーションのローカル EJB をどのように保持すればよいでしょうか? 両方を使用することは可能ですか?
microservices - Lagom サービスは他のサービスをどのように消費しますか?
3つの場合は考えられません。
- Lagom サービスは、同じクラスター内の別の Lagom サービスを消費します
- Lagom サービスは、別のクラスター内の別の Lagom サービスを消費します
- Lagom サービスは外部の非 Lagom サービスを消費します
- 外部の非 Lagom サービスが Lagom サービスを使用する
1. Lagom サービスは、同じクラスター内の別の Lagom サービスを消費します。
この場合のアプローチは、ServiceAImpl に注入される具体的な実装にバインドされている ServiceB API に ServiceAImpl が依存するというものです。
私の理解が正しければ、このようにサービス API を使用するには、両方のクライアントが同じクラスター内にある必要があります。しかし、ラゴムは言います
クラスタは、同じサービスを実行しているノードのみにまたがる必要があります。
この場合、2 つの異なるタイプのサービスがあります。
- 「同じサービス」とは、API が外部サービスに公開されている最上位のサービスを意味しますか?
- Lagom 1 Microservice = 外部 API を使用した 1 つのサービス + n 内部サービス?
2. Lagom サービスは、別のクラスター内の別の Lagom サービスを消費します。
ドキュメントには次のように書かれています:
通信したいサービスが実際に Lagom サービスである場合は、外部 Lagom プロジェクトとの統合に関するドキュメントを読むことをお勧めします。
外部 Lagom サービスの IP とポートではなく、サービス API への依存関係のみが構成されているのはなぜですか?
3. Lagom サービスが外部の非 Lagom サービスを使用する
最初に、各外部サービスを Service Locator に登録する必要があります。http://localhost:3333 で実行されている weather という名前の外部サービスを登録するとします。ビルドに追加する内容は次のとおりです。
そのIPとの契約は何ですか?その背後にあるものは何ですか?
4. 外部の非 Lagom サービスが Lagom サービスを使用する
Lagom が自己登録パターンをサポートするまで、サードパーティ登録パターンを使用する必要がありますか?
java - lagomプロジェクトでsbtEclipseがエラーを出す
最新バージョンのアクティベーター (1.3.9) をダウンロードし、このガイドライン ( http://www.lagomframework.com/documentation/1.0.x/GettingStarted.html )を使用して Lagom プロジェクトを起動して実行しようとしています。
新しい lagom-java プロジェクトを取得しました (activator new コマンドを使用)。プロジェクト ディレクトリでアクティベーター コマンドを正常に実行できますが、アクティベーター コンソールで Eclipse を実行しようとすると、次のエラーが発生します。
「project/eclipse.sbt」に次のエントリがあります。
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
そして、project/plugins.sbt 内の以下:
「lagom-internal-meta-project-service-locator」は Eclipse にインポートされない内部プロジェクトであることはわかっていますが、ビルドで「skipProject」を定義していないため、eclipseSkipProject 設定をどこから取得しているかはわかりません。どこでもsbt。
私はラグムのデフォルト設定で実行しているだけなので、すぐに使えるはずだと思いました。ここで何が問題なのですか?
java - Lagom lagomServiceLocatorStart が機能しない - 接続が拒否されました
hello-lagom という名前のサンプル Lagom プロジェクトを作成しましたが、すべて正常に動作しているようです。ただし、最初にサービスロケーターを開始してから、次のようにプロジェクトを実行することにより、helloworld-impl プロジェクトを実行しようとすると、次のようになります。
コンソールに、サービス ロケーターが実行中であることが示されます。
ただし、Lagom は helloworld-impl サービスの開始時に接続拒否例外をスローします。
埋め込み cassandra を lagomCassandraStart で起動しても役に立ちません。cassandra サービスだけでなく、helloworld-impl もサービス ロケーターへの登録に失敗します。ポートに telnet しようとしましたが、接続が拒否されました。
これは、サービスをスタンドアロンで実行しようとしたときにのみ発生するバグでしょうか、それとも何か不足している可能性がありますか?
websocket - Lagom フレームワーク / ストリーミング レスポンス / websocket / pathCall / Descriptor / Creator の代わりに Function
私は自分のサービスをこのように宣言しています:
ダニが効きます。トックはしません。
websocket クライアント ( to ws://localhost:9000/api/bloggie/tock ) を使用して呼び出すと、応答として「未定義」が返され、その URL のマッピングが見つからないことが示されました。
いくつかの実験の後、理由がわかりました: tick は、url パラメータ (:interval) を持っているため機能します。url パラメータがないため、Tick は機能しません。真剣に pathCall は、URL に param を含める必要がありますか? そこで、サービスの API を確認しました: http://www.lagomframework.com/documentation/1.0.x/api/java/com/lightbend/lagom/javadsl/api/Service.html
pathCall のオーバーロードされた宣言がいくつかあります。どうやらダニはこれを使用しています:
したがって、署名から、はい、メソッドがパラメーターを取る必要があります。そのため、メソッド (tock など) がパラメーターを取らない場合、バインディングは実行時に失敗します。したがって、代わりにこれを使用する必要があると思います。
問題は... やり方がわからない。pathCall で akka.japi.function.Creator を使用した例は見たことがありません。
私はこれを試しました:
コンパイルします。ただし、実行時にエラーがスローされます。
前もって感謝します!
私はちょうどいくつかの実験をしました...すべてコンパイルされましたが、どれも機能しません....
結果: コンパイル成功。ランタイム: パスが不明です (バインドなし (?))。
それから私は試しました
結果: 例外。
それから私は試しました:
結果: 例外
更新:「解決済み」(部分的)。これが機能することがわかりました:
次の URL を使用して開くことができます: ws://localhost:9000/tock
それで...、ストリームを返す関数のURLを適切に構造化することはできませんが、それらの関数はパラメーターを必要としませんか? とりあえず(?)。
更新: この問題は、pathCall だけでなく発生しているようです。残りの呼び出しで同じ問題が発生しました。これは機能しません(バインディングなし):
これは機能します:
ありがとう!