2015-11-05 124 views
1

我正在使用交付的EclipseLink 2.5.2开发WebLogic 12c(12.1.3.0)。WebLogic 12c上的EclipseLink JPA导致StackOverflowError

我配置了一个连接池到PostgreSQL-DB。

当我尝试访问@EJB(SLSB),其中包含@PersistenceContext在WebLogic与的StackOverflowError退出,同时它试图查找一个JNDI资源。我认为这是persistence.xml的JTA数据源。

java.lang.StackOverflowError 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.naming.internal.VersionHelper12.getContextClassLoader(VersionHelper12.java:185) 
    at com.sun.naming.internal.ResourceManager.getFactory(ResourceManager.java:418) 
    at javax.naming.spi.NamingManager.getURLObject(NamingManager.java:592) 
    at javax.naming.spi.NamingManager.getURLContext(NamingManager.java:550) 
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:339) 
    at javax.naming.InitialContext.lookup(InitialContext.java:411) 
    at weblogic.jndi.internal.ApplicationNamingNode.resolveObject(ApplicationNamingNode.java:169) 
    at weblogic.jndi.internal.BasicNamingNode.resolveObject(BasicNamingNode.java:886) 
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:219) 
    at weblogic.jndi.internal.ApplicationNamingNode.lookup(ApplicationNamingNode.java:131) 
    at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:253) 
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:426) 
    at weblogic.jndi.factories.java.ReadOnlyContextWrapper.lookup(ReadOnlyContextWrapper.java:45) 
    at weblogic.jndi.internal.ApplicationNamingNode.resolveObject(ApplicationNamingNode.java:170) 
[...] 

有人知道这样的行为吗?

感谢, 斯特凡

+0

堆栈中是否存在导致某种递归的东西?有关堆栈溢出的信息,请参阅http://stackoverflow.com/questions/214741/what-is-a-stackoverflowerror,因为您没有提供足够的信息来显示代码有任何问题。机会是,你只是没有足够的内存分配给运行WebLogic的JVM – Chris

+0

感谢Chris的评论。我解决了StackOverflowError。看到我的答案。 –

回答

0

我通过增加Webogic服务器的调试输出解决我的问题。 那里我意识到JDBC查找错误的JNDI地址。 看起来持久性上下文试图使用non-jta-data-source而不是persistence.xmljta-data-source。由于单元测试的目的,它们是不同的。 我删除了条目,现在JPA上下文的初始化工作。

+0

如果正常错误导致服务器中出现StackOverflowError错误,则还有其他基于资源的问题需要处理。 – Chris