2017-02-16 7 views
1

私はlagom単純なアプリケーションを作成しています。しかし、私は応答には、アクションが見つかりませんエラーが見つかりました。私は次のように私のコードで、lagomとアッカに統合しています:Lightbend LagomとAkka:lagomサービスの残りのエンドポイントを打つことができません

サービス:

trait TwitterSchedulerService extends Service { 

    def doWork: ServiceCall[NotUsed, Done] 

    override def descriptor: Descriptor = { 
    import Service._ 
    named("scheduler").withCalls(
     call(doWork) 
    ) 
    } 
} 

ServiceImpl

class TwitterSchedulerServiceImpl(system: ActorSystem) extends TwitterSchedulerService { 

    override def doWork = ServiceCall { _ => 
    Future { 
     println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ") 
     Done 
    } 
    } 
} 

ローダーの設定:

class TwitterLoader extends LagomApplicationLoader { 

    override def load(context: LagomApplicationContext): LagomApplication = 
    new TwitterApplication(context) { 
     override def serviceLocator = NoServiceLocator 
    } 

} 

object TwitterSerializerRegistry extends JsonSerializerRegistry { 

    override val serializers = Vector(
    JsonSerializer[String] 
) 
} 

abstract class TwitterApplication(context: LagomApplicationContext) extends LagomApplication(context) 
    with CassandraPersistenceComponents with AhcWSComponents { 

    override lazy val lagomServer = LagomServer.forServices(
    bindService[TwitterSchedulerService].to(wire[TwitterSchedulerServiceImpl]) 
) 
    override lazy val jsonSerializerRegistry = TwitterSerializerRegistry 
} 

lagomの文書http://www.lagomframework.com/documentation/1.3.x/scala/Akka.htmlに従っています。私は知りたい、なぜこのエラーが発生する、すべての休憩ポイントが定義されているイベント???

+0

こんにちは@ harmeet-singh-taara、あなたのコードをテストするために使用しているエラーメッセージと 'curl'コマンドを投稿できますか? – ignasi35

+0

確かに、 'GETリクエストhttp:// localhost:9000/doWork'。 @ ignasi35私はPostmanを使用しています。応答は404が見つかりませんでした。 –

+0

私は 'http:// localhost:57211/doWork' URLで' GETリクエストを使用しています。私の要求プロセスは問題ありません。しかし、まだ理解していない、なぜ '9000'投稿が機能していないのですか? –

答えて

4

あなたのサービスがhttp://localhost:57211

http://localhost:9000で実行されているプロジェクトで実行中のすべてのサービスをリバースプロキシとして動作するサービス・ゲートウェイ・サーバが実行されています。

サービスゲートウェイは、サービスコールをサービスに転送するように設定できますが、デフォルトでは設定されません。サービスディスクリプタでACL(アクセス制御リスト)を定義することによって、この構成を構成します。

最も一般的に、あなたはあなたのサービスへのすべてのサービスコールのパスを自動転送するwithAutoAcl(true)と呼ぶことにします:

trait TwitterSchedulerService extends Service { 

    def doWork: ServiceCall[NotUsed, Done] 

    override def descriptor: Descriptor = { 
    import Service._ 
    named("scheduler").withCalls(
     call(doWork) 
    ).withAutoAcl(true) 
    } 
} 

あなたがパスは、バックエンドサービスへのサービス・ゲートウェイから転送されますこれをより細かく制御したい場合、あなたはConductR(Lightbend生産スイートの一部)に展開する場合

trait TwitterSchedulerService extends Service { 

    def doWork: ServiceCall[NotUsed, Done] 

    override def descriptor: Descriptor = { 
    import Service._ 
    named("scheduler").withCalls(
     call(doWork) 
    ).withAcls(
     ServiceAcl.forPathRegex("/doWork") 
    ) 
    } 
} 

:は、明示的な方法やサービス・ゲートウェイから転送されなければならないパス正規表現のリストを渡すことwithAclsを呼び出すことができますサービスディスクリプタのACL設定は、ConductR ACL configurationの生成にも使用されます。

関連する問題