繁体   English   中英

尝试从 aws lambda 处理程序函数调用 SDN 时出现 java.lang.NullPointerException

[英]java.lang.NullPointerException when trying to call SDN from aws lambda handler function

我有一个处理函数,我在其中调用我的 spring 数据存储库接口。 该代码在我的主方法或从 jar 中运行良好,但是当我在 s3 中上传 jar 并从我调用存储库方法的 aws lambda 调用时抛出 NullPointerException。 下面是我的 lambda 处理程序方法;

public class LambdaRestFunction implements RequestHandler<String, Object> {

    @Autowired
    UserRepository userRepository;

    @Override
    public String handleRequest(String uname, Context context) {
        String time = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss").format(Calendar.getInstance().getTime());

        context.getLogger().log("Lambda call started: " + time);

        List<User> users = new ArrayList<>();
        context.getLogger().log("Array initialized.");
        **users = userRepository.findByName(uname);** // <-- NullPointerException thrown here
        context.getLogger().log("Method call over..");
        ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
        String json = "[]";
        try {
            json = ow.writeValueAsString(users);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            context.getLogger().log("Error from application : " + e.getMessage());
        }

        context.getLogger().log("Lambda function completed: " + time);
        return json;
    }

}

我的存储库界面是;

@RepositoryRestResource(collectionResourceRel = "user", path = "user")
public interface UserRepository extends GraphRepository<User> { 
    @Query("MATCH (u:User) WHERE u.id =({id}) RETURN u")
    User findUser(@Param("id") Long id);    
}

域类是;

@NodeEntity
public class User {

    @GraphId Long id;
    private String name;
    private String dob;
    private String cc;

    public User(String name, String dob, String cc) {
        this.name = name;
        this.dob = dob;
        this.cc = cc;
    }

    public User() {
    }

    public String getName() {
        return name;
    }
...

请在跟踪日志下方找到:

java.lang.NullPointerException
at com.test.lambda.LambdaRestFunction.handleRequest(LambdaRestFunction.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at lambdainternal.EventHandlerLoader$PojoMethodRequestHandler.handleRequest(EventHandlerLoader.java:439)
at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:370)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:972)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:235)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:60)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94) 

如果有人能帮我找到异常的原因,我将不胜感激。 先感谢您。

Lambda 不支持注解,所以@Autowired 不会有想要的效果。

https://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html 上,请参阅“处理程序输入/输出:POJO 类型”下的注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM