标签: micronaut

从 Cognito 身份池 identityId 获取 Cognito 用户池用户名

我正在使用 AWS Congito 用户池通过 Cognito 身份池进行账户管理,该身份池将此用户池作为身份提供者。我使用它来控制通过 API 网关对 API 的访问,该网关将请求发送到 Lambda。我的 Lambda 是使用 Micronaut 用 Ja​​va 8 实现的。所有这些都运行良好。

在 Lambda 中,我从以下Principal中获取名称HttpRequest

  protected String resolveUser( HttpRequest request ){
    String ret = null;

    Optional<Principal> principal = request.getUserPrincipal();
    if( principal.isPresent() ){
      ret = principal.get().getName();
    }

    if( ret == null || ret.length() == 0 ){
      ret = "unknown";
    }
    return ret;
  }
Run Code Online (Sandbox Code Playgroud)

Cognito identityId 的字符串名称中返回的内容。像这样的东西:

us-east-1:xxxxe650-53f4-4cba-b553-5dff42bexxxx

我想记录实际的用户登录信息,或者至少有一些方法可以在需要时将 identityId 转换为登录信息。

LookupDeveloperIdentity API调用似乎是去了解这个正确的方式,但我无法得到它的工作。

尝试使用 Java 和 AWS Java SDK 2 执行此操作: …

amazon-web-services amazon-cognito aws-java-sdk micronaut micronaut-aws

14
推荐指数
1
解决办法
2322
查看次数

如何将 micronaut 的默认端口(8080)更改为其他端口?

如何将8080Micronaut 中的默认端口更改为其他端口?我在我的项目中使用了 Micronaut,我找不到更改端口号的配置。

micronaut

10
推荐指数
1
解决办法
5314
查看次数

How can I configure the HTTP proxy for a Micronaut (1.1.4) HTTP client like the Spring Boot way?

Well after struggling a lot with Micronaut to dompted our proxies, I came to the idea to write a Spring Boot Application doing for the same purpose.

For Spring Boot the HTTP proxy configuration is really straight forward and there are a lot examples available. I came out with this example:

application.properties

generic.proxyHost = my.corporateproxy.net
generic.proxyPort = 3128
Run Code Online (Sandbox Code Playgroud)

MyController.java

@Value("${generic.proxyHost}")
private String proxyHost;

@Value("${generic.proxyPort}")
private Integer proxyPort;

@GetMapping("/proxy")
public HttpStatus getApiWithProxy(){

    SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
    InetSocketAddress address = new …
Run Code Online (Sandbox Code Playgroud)

java spring-boot micronaut

9
推荐指数
1
解决办法
214
查看次数

如何使用表内的 JSONB 数据类型和 PostgreSQL JDBC 驱动程序将 JSON 对象存储到 PostgreSQL 中

我想将以下 json 对象保存到 PostgreSQL db 表中作为 jsonb

{
  "fname":"john",
  "lname:"doe",
}
Run Code Online (Sandbox Code Playgroud)

我目前使用 PGObject 创建对象并将类型设置为 jsonb 并将值作为 json 字符串传递

寻找 micronaut-data 和 micronaut 的更好方法 micronaut-data 中 是否支持任何本机数据类型将 Java 对象转换为 JSON 并存储在 db 中? 如何使用 postgres jdbc 驱动程序保存数据

使用 :jsonb 在查询中进行类型转换已经尝试过使用原始 jdbc 如果它适用于 micronaut-data / 捕食者怎么做?

postgresql json jdbc kotlin micronaut

9
推荐指数
1
解决办法
2896
查看次数

micronaut Java 中的全局异常处理

寻找更好的解决方案来处理 micronaut 中的全局异常https://docs.micronaut.io/latest/guide/index.html#errorHandling

控制器

@Controller("/category")
public class CategoryController {
@Delete(uri = "/{id}")
public Maybe<HttpResponse> delete(@NotBlank String id) {
            LOG.info(String.format("API --> Deleting the specified category"));
            return iCategoryManager.Count(id).flatMap(item -> {
                if (item > 0) {
                    iCategoryManager.Delete(id).subscribe();
                    return Maybe.just(HttpResponse.noContent());
                } else
                    return Maybe.just(HttpResponse.notFound());
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

iCategoryManager.Count(id)导致如下异常,如何捕获GlobalExceptionHandler上的异常

io.micronaut.core.serialize.exceptions.SerializationException: Incorrect message body size to deserialize to a Long
    at io.micronaut.rabbitmq.serdes.JavaLangRabbitMessageSerDes$LongSerDes.deserialize(JavaLangRabbitMessageSerDes.java:314)
    at io.micronaut.rabbitmq.serdes.JavaLangRabbitMessageSerDes$LongSerDes.deserialize(JavaLangRabbitMessageSerDes.java:306)
    at io.micronaut.rabbitmq.serdes.JavaLangRabbitMessageSerDes.deserialize(JavaLangRabbitMessageSerDes.java:81)
    at io.micronaut.rabbitmq.intercept.RabbitMQIntroductionAdvice.deserialize(RabbitMQIntroductionAdvice.java:323)
    at io.micronaut.rabbitmq.intercept.RabbitMQIntroductionAdvice.lambda$intercept$22(RabbitMQIntroductionAdvice.java:268)
    at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:132)
    at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onNext(RxInstrumentedSubscriber.java:59)
    at io.reactivex.internal.operators.flowable.FlowableTimeoutTimed$TimeoutSubscriber.onNext(FlowableTimeoutTimed.java:101)
    at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onNext(RxInstrumentedSubscriber.java:59)
    at io.reactivex.internal.subscriptions.DeferredScalarSubscription.complete(DeferredScalarSubscription.java:132)
    at io.reactivex.internal.operators.single.SingleToFlowable$SingleToFlowableObserver.onSuccess(SingleToFlowable.java:62)
    at …
Run Code Online (Sandbox Code Playgroud)

java micronaut micronaut-client micronaut-rest

9
推荐指数
1
解决办法
9239
查看次数

Micronaut 根据环境配置记录器附加程序

我想根据环境配置日志附加程序,例如,在生产中运行时,我想配置一个将日志发送到elasticsearch的附加程序,但在测试或开发模式下,不会启用此附加程序。

logback micronaut

8
推荐指数
2
解决办法
6457
查看次数

Micronaut 数据:没有为存储库配置支持 RepositoryOperations

当我尝试使用内存 h2 数据库和 Jpa 配置 micronaut-data 时,出现以下异常。
我一直在关注文档

我使用 maven 作为构建工具从命令行创建了该项目。我有以下

<dependency>
     <groupId>io.micronaut.configuration</groupId>
      <artifactId>micronaut-jdbc-tomcat</artifactId>
      <scope>runtime</scope>
    </dependency>
<dependency>
     <groupId>com.h2database</groupId>
     <artifactId>h2</artifactId>
     <scope>runtime</scope>
</dependency>
<dependency>
     <groupId>io.micronaut.data</groupId>
     <artifactId>micronaut-data-hibernate-jpa</artifactId>
     <version>1.0.0.M3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

而且我还添加了这样的注释处理器

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
   ......
  <configuration>
    ...
    <annotationProcessorPaths>
      <path>
        <groupId>io.micronaut</groupId>
        <artifactId>micronaut-inject-java</artifactId>
        <version>${micronaut.version}</version>
      </path>
      <path>
        <groupId>io.micronaut</groupId>
        <artifactId>micronaut-validation</artifactId>
        <version>${micronaut.version}</version>
      </path>
      <path>
        <groupId>io.micronaut.data</groupId>
        <artifactId>micronaut-data-processor</artifactId>   
        <version>1.0.0.M3</version>
      </path>
    </annotationProcessorPaths>
  </configuration>
  .....
</plugin>
Run Code Online (Sandbox Code Playgroud)

我的实体类和存储库类与指南中提到的完全一样。当我尝试使用存储库保存时,出现此异常

18:16:37.787 [pool-1-thread-3] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: No backing RepositoryOperations configured for repository. Check your configuration and try again
io.micronaut.context.exceptions.ConfigurationException: No backing RepositoryOperations configured …
Run Code Online (Sandbox Code Playgroud)

micronaut micronaut-data

8
推荐指数
2
解决办法
4007
查看次数

Micronaut Data with R2DBC 是不是比经典的“每个连接一个线程”模型更具可扩展性的方法 Micronaut Data JDBC

根据micronaut-data 反应指南

“...在反应式执行的情况下,如果支持实现是阻塞的,Micronaut Data 将使用配置的 I/O 线程池在不同的线程上调度查询执行。

如果支持实现在驱动程序级别本机支持反应类型,则不使用 I/O 线程池,而是假定驱动程序将以非阻塞方式处理查询......”

我的直接问题:访问关系数据库(例如 PostGres R2DBC 驱动程序)抛出 R2DBC Micronaut Data 是否会依赖 R2DBC 驱动程序以非阻塞方式处理并且更具可扩展性?

假设我的微服务公开了一个基于 ReactiveX 的 Reactive 端点并且必须访问一个阻塞数据源 throw Micronaut Data JDBC(例如,生产版本中还没有 Oracle R2DBC),从上面可以清楚地看出它“将使用配置我/O 线程池”,同时访问数据。我是否完全失去了响应式端点的好处?

这是我与 Micronaut 合作的第一个项目,我有几个采用 Reactive 方法的项目。我远不是反应式最佳实践方面的专家,但我记得我已经阅读了几篇博客:如果您有阻塞源,请避免使用反应式堆栈。我还记得读到过,将非阻塞与阻塞设计混合在一起可能会产生更糟糕的结果,这主要是因为 Eventloop(例如 Netty)的设计方式。由于我将 Micronaut 与 ReactiveX 和关系数据库一起使用,某些情况下使用 R2DBC,而其他情况下使用 JDBC,我将感谢对我的疑问的任何评论。

netty reactivex micronaut r2dbc micronaut-data

8
推荐指数
1
解决办法
425
查看次数

没有这样的属性:类计数:com.github.jengelman.gradle.plugins.shadow.transformers.ServiceFileTransformer

使用 Intelj 使用最新版本的 Micronaut 创建新应用程序会在构建过程中引发异常。

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':shadowJar'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
    at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124) …
Run Code Online (Sandbox Code Playgroud)

java gradle build.gradle micronaut

8
推荐指数
1
解决办法
4675
查看次数

我可以在Micronaut上使用spring data jpa吗?

我想用JpaRepository扩展我的TestRepository接口,并利用jpa方法查询,分页和排序等功能,而无需手动定义实体管理器bean,也无需编写任何sql.PS在微电子项目中

spring spring-data-jpa spring-boot micronaut

7
推荐指数
1
解决办法
1077
查看次数