2015-11-05 120 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