Spring应用部署到WAS上通过JNDI来访问WAS数据源是出错,报如下的错误
Stack Dump = javax.naming.NoInitialContextException: Cannot instantiate class: org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:669)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:259)
at javax.naming.InitialContext.init(InitialContext.java:235)
at javax.naming.InitialContext.<init>(InitialContext.java:187)
at com.ibm.ws.runtime.component.EJBContainerImpl.remoteLazyBind(EJBContainerImpl.java:4381)
at com.ibm.ws.runtime.component.EJBContainerImpl.install(EJBContainerImpl.java:2960)
at com.ibm.ws.runtime.component.EJBContainerImpl.start(EJBContainerImpl.java:3730)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1250)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1140)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:569)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:819)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:921)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2100)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
Caused by: java.lang.ClassNotFoundException: org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:163)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:57)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:666)
... 14 more
或者
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NoInitialContextException: Cannot instantiate class: org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.ow2.carol.jndi.spi.MultiOrbInitialContextFactory]
错误
是因为WAS容器和应用中jta.jar报冲突,删除应用中的jta.jar并从WAS卸载所有应用,重启WAS,重新这些没有包含jta.jar的新应用就可以。
参考:
http://forum.springsource.org/showthread.php?t=44441
http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.html