当前位置: 首页 > 知识库问答 >
问题:

quarkus aws lambda函数-cdi在处理程序类中不工作

伊裕
2023-03-14

目前,我尝试用Quarkus实现一个AWS Lambda函数。问题是我不能在处理程序类中使用cdi。例如,如果我想注入Greeter类(上面的示例),它总是null(依赖注入在这里对quarkus不起作用)。因此,我在AWS上得到一个NullPointer异常。

AWS-lambda-console上的NullPointerExceptionon:

{
  "errorMessage": "java.lang.NullPointerException",
  "errorType": "java.lang.NullPointerException",
  "stackTrace": [
    "com.aws.vehicles.constructibility.boundary.ConstructibilityLambdaHandler.handleRequest(ConstructibilityLambdaHandler.java:24)",
    "sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)",
    "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
    "java.lang.reflect.Method.invoke(Method.java:498)"
  ]
}

我使用以下Quarkus-version: 0.16.1 (但我也在以前的版本中试用过)

lambda-handler的代码:

public class MyLambdaHandler implements RequestHandler<SimpleRequest, String> {

  private static final Logger LOGGER = Logger.getLogger(MyLambdaHandler.class.getName());

  @Inject
  Greeter greeter;

  @Override
  public String handleRequest(SimpleRequest simpleRequest, Context context) {
    return greeter.sayGoodMorning();
  }
}

greeter-class是一个非常简单的类,它用@ApplicationScoped进行了注释:

@ApplicationScoped
public class Greeter {

  public String sayGoodMorning(){
    return "good morning, hackers :)";
  }
}

如果有人能帮我就好了?

共有1个答案

宗政文彬
2023-03-14

对于那些也在为这样的问题苦苦挣扎的人:确保将处理程序(resource->project->Properties下的template.yml)设置为io.quarkus.amazon.lambda.runtime.quarkusStreamHandler::HandleRequest。别忘了你正在使用Quarkus,所以Quarkus的处理程序必须被使用。

 类似资料: