2017-02-16 20 views
1

Я создаю простое приложение для 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

Когда я использую 'GET запрос с http: // localhost: 57211/doWork' url. Мой запрос выполняется нормально. Но все еще не понимаю, почему пост '9000' не работает? –

ответ

4

Ваша служба работает на http://localhost:57211

http://localhost:9000 работает сервер службы шлюза, который действует как обратный прокси-сервер для всех служб, работающих в проекте.

Сервисный шлюз может быть сконфигурирован для переадресации вызовов службы на ваш сервис, но по умолчанию он не используется. Вы настраиваете его, определяя списки управления доступом (списки управления доступом) в дескрипторах службы.

Чаще всего, вы будете называть withAutoAcl(true) автоматически пересылать все пути обслуживания вызовов к вашим услугам:

trait TwitterSchedulerService extends Service { 

    def doWork: ServiceCall[NotUsed, Done] 

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

Если вы хотите получить больше контроля над которыми путями получить пересылаемые от шлюза службы в серверной службу , вы можете позвонить withAcls, чтобы передать список явных методов и путям регулярных выражений, которые должны быть переадресованы от шлюза службы:

trait TwitterSchedulerService extends Service { 

    def doWork: ServiceCall[NotUsed, Done] 

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

При развертывании ConductR (часть Lightbend Production Suite), то se ACL-конфигурации в дескрипторе службы также используются для генерации ConductR ACL configuration.