【发布时间】:2016-03-23 11:31:02
【问题描述】:
我已经编写了一个 AWS Lambda 函数(像往常一样实现了 handleRequest,没有 db connect 的东西它可以正常工作),它实际上假设连接到一个亚马逊托管的 Oracle 数据库。
同样,我添加了 Hibernate Util 和相关配置文件以连接到数据库。这样在调用 AWS Lambda 函数时,就会将特定记录插入到数据库中。
但我收到以下错误,这里有什么我遗漏的吗?
{
"errorMessage": "Could not initialize class com.exercise.HibernateUtil",
"errorType": "java.lang.NoClassDefFoundError",
"stackTrace": [
"com.exercise.CurrentTime.handleRequest(CurrentTime.java:34)",
"sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
"sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
"sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"java.lang.reflect.Method.invoke(Method.java:497)"
]
}
编辑
我发现没有添加 hibernate.cfg.xml ,后来我添加了所有必需的文件,但最后它给出了以下问题[在我的桌面上一切正常]:
我的问题是,我们是否有任何示例将基于休眠的包上传为 lambda 函数或 AWS lambda 服务意味着最小逻辑功能。
START RequestId: dcece63c-f0e8-11e5-9f50-edb8ba93d932 Version: $LATEST
First Log :Type:Notification, requestId:dcece63c-f0e8-11e5-9f50-edb8ba93d932, function:simple-lambda-java-exercise, groupName:/aws/lambda/simple-lambda-java-exercise, logStreamName:2016/03/23/[$LATEST]6413c2ef43b14e1aad006f31ca92f260
Second Log :InputMessage :sample message
Maven + Hibernate + Oracle
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found
java.lang.ExceptionInInitializerError: java.lang.ExceptionInInitializerError java.lang.ExceptionInInitializerError at com.exercise.HibernateUtil.buildSessionFactory(HibernateUtil.java:17) at com.exercise.HibernateUtil.<clinit>(HibernateUtil.java:8) at com.exercise.CurrentTime.handleRequest(CurrentTime.java:34) 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:497) Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170) at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2176) at org.hibernate.cfg.Configuration.configure(Configuration.java:2157) at org.hibernate.cfg.Configuration.configure(Configuration.java:2137) at com.exercise.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) ... 6 more
END RequestId: dcece63c-f0e8-11e5-9f50-edb8ba93d932
REPORT RequestId: dcece63c-f0e8-11e5-9f50-edb8ba93d932 Duration: 1368.02 ms Billed Duration: 1400 ms Memory Size: 512 MB Max Memory Used: 43 MB
START RequestId: e798ae13-f0e8-11e5-a603-69c02723850a Version: $LATEST
First Log :Type:Notification, requestId:e798ae13-f0e8-11e5-a603-69c02723850a, function:simple-lambda-java-exercise, groupName:/aws/lambda/simple-lambda-java-exercise, logStreamName:2016/03/23/[$LATEST]6413c2ef43b14e1aad006f31ca92f260
Second Log :InputMessage :sample message
Maven + Hibernate + Oracle
Could not initialize class com.exercise.HibernateUtil: java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError: Could not initialize class com.exercise.HibernateUtil at com.exercise.CurrentTime.handleRequest(CurrentTime.java:34) 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:497)
END RequestId: e798ae13-f0e8-11e5-a603-69c02723850a
REPORT RequestId: e798ae13-f0e8-11e5-a603-69c02723850a Duration: 1.26 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 43 MB
START RequestId: e9116b9c-f0e8-11e5-bccb-4f6d3966e31d Version: $LATEST
First Log :Type:Notification, requestId:e9116b9c-f0e8-11e5-bccb-4f6d3966e31d, function:simple-lambda-java-exercise, groupName:/aws/lambda/simple-lambda-java-exercise, logStreamName:2016/03/23/[$LATEST]6413c2ef43b14e1aad006f31ca92f260
Second Log :InputMessage :sample message
Maven + Hibernate + Oracle
Could not initialize class com.exercise.HibernateUtil: java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError: Could not initialize class com.exercise.HibernateUtil at com.exercise.CurrentTime.handleRequest(CurrentTime.java:34) 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:497)
END RequestId: e9116b9c-f0e8-11e5-bccb-4f6d3966e31d
REPORT RequestId: e9116b9c-f0e8-11e5-bccb-4f6d3966e31d Duration: 1.25 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 43 MB
START RequestId: 2d150ad7-f0ec-11e5-afb5-e3e30ad68aea Version: $LATEST
First Log :Type:Notification, requestId:2d150ad7-f0ec-11e5-afb5-e3e30ad68aea, function:simple-lambda-java-exercise, groupName:/aws/lambda/simple-lambda-java-exercise, logStreamName:2016/03/23/[$LATEST]6413c2ef43b14e1aad006f31ca92f260
Second Log :InputMessage :sample message
Maven + Hibernate + Oracle
Could not initialize class com.exercise.HibernateUtil: java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError: Could not initialize class com.exercise.HibernateUtil at com.exercise.CurrentTime.handleRequest(CurrentTime.java:34) 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:497)
END RequestId: 2d150ad7-f0ec-11e5-afb5-e3e30ad68aea
REPORT RequestId: 2d150ad7-f0ec-11e5-afb5-e3e30ad68aea Duration: 1.24 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 43 MB
【问题讨论】:
-
表示您部署的 Lambda 函数中未包含一个类。您没有将该类正确打包到部署中。
-
我的错,我做了所有事情来拒绝 AWS lambda 函数,因为我是这个领域的新手,所以错过了一些安全组配置和其他一些亚马逊特定的东西,这个问题得到了解决。
-
你解决了吗?显示您的 pom.xml 示例
-
@Dynamic ,我删除了 Hibernate 的东西,并使用普通的 JDBC 方式将 lambda 函数与 DB 连接起来。关注以下网址:mkyong.com/jdbc/connect-to-oracle-db-via-jdbc-driver-javatutorialspoint.com/jdbc/preparestatement-object-example.htm
标签: hibernate amazon-web-services aws-lambda