【问题标题】:Use/Expose Service call composition to multiple modules in the same project对同一项目中的多个模块使用/公开服务调用组合
【发布时间】:2018-01-10 17:02:57
【问题描述】:

Service call composition 中,我测试了记录的示例,它按预期工作

公共服务器服务调用记录(服务器服务调用服务调用){ 返回 HeaderServiceCall.compose(requestHeader -> { System.out.println("收到" + requestHeader.method() + " " + requestHeader.uri()); 返回服务调用; }); }

我更改了实现以验证请求标头中的访问令牌,我发现在我的项目的多个模块中使用相同的实现而不是复制/粘贴很有用。 为此,我:

  • 在我的项目中创建了一个名为common-tools 的模块
  • 创建了一个名为 AuthorizationService 的服务及其实现
  • 创建了一个 CommunModule 类并覆盖了configure 方法
  • 试图覆盖Descriptor descriptor() 方法 但我无法让它编译,它总是无法编译 这是方法:
@覆盖 默认描述符描述符(){ 描述符描述符 = 命名(“安全”).withCalls( Service.call(this::logged) ).withAutoAcl(true); 返回描述符; }

控制台输出:

没有找到合适的调用方法(this::logged) [错误] com.lightbend.lagom.javadsl.api.Service.call(akka.japi.function.Creator>) 方法不适用 [错误](无法推断类型变量请求,响应 [错误](实际参数列表和形式参数列表的长度不同)) [错误] com.lightbend.lagom.javadsl.api.Service.call(java.lang.reflect.Method) 方法不适用 [错误](无法推断类型变量请求,响应 [错误](参数不匹配;java.lang.reflect.Method 不是功能接口)) [错误] com.lightbend.lagom.javadsl.api.Service.call(com.lightbend.lagom.javadsl.api.Descriptor.CallId,java.lang.Object) 方法不适用 [错误](无法推断类型变量请求,响应 [错误](实际参数列表和形式参数列表的长度不同))

【问题讨论】:

    标签: java lagom


    【解决方案1】:

    logged 的定义方式是作为另一个服务调用的包装器。但是,在上面的 Descriptor 定义中,它没有包装另一个调用。

    您通常不会将这种类型的包装方法直接添加到描述符中,而是在documentation on service call composition 中所示的一些其他服务调用定义中使用它。

    public ServerServiceCall<String, String> sayHello() {
      return logged(
          name -> completedFuture("Hello " + name)
      );
    }
    

    这将出现在Descriptor 中而不引用包装方法:

    @Override
    default Descriptor descriptor() {
        return named("security").withCalls(
                call(this::sayHello)
        ).withAutoAcl(true);
    }
    

    Online Auction Java 示例项目中有一个共享模块的示例。 security 子模块被多个服务实现使用。

    看看ServerSecurity.authenticatedimplementedused in a service call

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 2015-10-18
      • 1970-01-01
      • 2018-12-04
      • 2021-08-30
      相关资源
      最近更新 更多