2016-06-21 136 views
1

我在尝试运行一个web应用程序localy。Websphere - 找不到JDNI名称

当我运行我的服务器时,我得到“NameNotFoundException”,这是因为JNDI查找似乎没有找到模块。即使我做了所有必要的修改(我猜)。我没有对管理员的WAS控制台做任何更改。任何人都知道是什么原因导致这个问题或我缺少什么设置?

Web.xml中:

<resource-ref id="Ref_1"> 
    <description> 
    </description> 
    <res-ref-name>abcDe</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 
在IBM的Web-bnd.xml

<resRefBindings xmi:id="Ref_1" jndiName="jdbc/abcDe"> 
    <bindingResourceRef href="WEB-INF/web.xml#Ref_1"/> 
</resRefBindings> 

这里是堆栈跟踪:

[16年6月21日16 :02:50:491 EDT] 0000000e Helpers W NMSV0610I:NamingException从javax.naming.Context实现中抛出。详细信息如下: 上下文实现:com.ibm.ws.naming.java.javaURLContextRoot 上下文方法:查找(名称) 上下文名称:JAVA: 目标名称:comp/env的/ ABCDE 其他数据: “” 异常堆栈trace:com.ibm.websphere.naming.CannotInstantiateObjectException:对名称java:comp/env/abcDe进行间接查找时发生NameNotFoundException。名称java:comp/env/abcDe映射到执行JNDI查找的应用程序的部署描述符绑定中的JNDI名称。确保部署描述符绑定中的JNDI名称映射是正确的。如果JNDI名称映射正确,请确保可以使用相对于默认初始上下文的指定名称来解析目标资源。 [根异常是javax.naming.NameNotFoundException:上下文:5CG61345YTNode04Cell/nodes/5CG61345YTNode04/servers/server1,名称:jdbc/abcDe:找不到名为abcDe的第一个组件。 [根异常是org.omg.CosNaming.NamingContextPackage.NotFound:IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]] at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:998 ) 在com.ibm.ws.naming.urlbase.UrlContextHelper.processBoundObjectForLookup(UrlContextHelper.java:175) 在com.ibm.ws.naming.java.javaURLContextRoot.processBoundObjectForLookup(javaURLContextRoot.java:402) 在com.ibm .ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1249) at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:394) at com.ibm.ws.naming.java .javaURLContextRoot.lookup(javaURLContextRoot.java:214) at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:154) at jav ax.naming.InitialContext.lookup(InitialContext.java:436) at com.bnc.grc.core.db.DBAccess。(DBAccess.java:68) at com.bnc.grc.gro.models.i18n.I18NDAO .getListI18nvo(I18NDAO.java:95) at com.bnc.grc.gro.models.i18n.I18NDAO.getContextCol(I18NDAO.java:174) at com.bnc.grc.gro.models.i18n.InternationalizationManager.buildAndPutInCache (InternationalizationManager.java:650) at com.bnc.grc.gro.models.i18n.InternationalizationManager.init(InternationalizationManager.java:392) at com.bnc.grc.gro.models.i18n.InternationalizationManager.startLoading(InternationalizationManager .java:73) at com.bnc.grc.gro.ejb.ProcessScheduleBean.refreshData(ProcessScheduleBean.java:72) at com.bnc.grc.gro.ejb.EJSRemoteStatelessProcessSchedule_7d9d2593.refreshDat a(EJSRemoteStatelessProcessSchedule_7d9d2593.java:100) at com.bnc.grc.gro.ejb._ProcessSchedule_Stub.refreshData(_ProcessSchedule_Stub.java:363) at com.bnc.grc.gro.pres.schedule.ScheduleDelegate.loadData(ScheduleDelegate。 java:63) at com.bnc.grc.gro.web.servlets.GroInitSvlt.init(GroInitSvlt。(ServletWrapperImpl.java:165) at com.ibm.ws.webcontainer.servlet.ServletWrapper.initialize(ServletWrapper.java:1588) at com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor.createServletWrapper(WebExtensionProcessor.java:98) at com.ibm.ws. webcontainer.webapp.WebApp.getServletWrapper(WebApp.java:936) at com.ibm.ws.webcontainer.webapp.WebApp.getServletWrapper(WebApp.java:857) at com.ibm.ws.webcontainer.webapp.WebApp。 initializeTargetMappings(WebApp.java:538) at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:360) at co m.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:292) at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:99) at com.ibm.ws. webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:167) at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:722) at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java: 607) 在com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:376) 在com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:668) 在融为一体。 ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1162) at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeplo yedObjectStart(DeployedApplicationImpl.java:1313) at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:611) at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java: 938) 在com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:740) 在com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2092) 在融为一体。 ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:437) at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:122) at com.ibm.ws.runtime。 component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:380) at com.ibm.ws.runtime.component.CompositionU nitMgrImpl.access $ 300(CompositionUnitMgrImpl.java:105) at com.ibm.ws.runtime.component.CompositionUnitMgrImpl $ CUInitializer.run(CompositionUnitMgrImpl.java:928) at com.ibm.wsspi.runtime.component.WsComponentImpl $ _AsynchInitializer .run(WsComponentImpl.java:349) at com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1527) 导致:javax.naming.NameNotFoundException:上下文:5CG61345YTNode04Cell/nodes/5CG61345YTNode04/servers/server1,名称:jdbc/abcDe:找不到名为abcDe的第一个组件。 [根异常是org.omg.CosNaming.NamingContextPackage.NotFound:IDL:omg.org/CosNaming/NamingContext/NotFound:1.0] at com.ibm.ws.naming.jndicos.CNContextImpl.mapNotFoundException(CNContextImpl.java:4360) at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1793) at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1748) at com.ibm。 ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1499) at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1537) at com.ibm.ws.naming.util。 IndirectJndiLookupObjectFactory $ 1.run(IndirectJndiLookupObjectFactory.java:370) at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) at com.ibm.ws.naming.util.In directJndiLookupObjectFactory.getObjectInstanceExt(IndirectJndiLookupObjectFactory.java:220) 在com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory.getObjectInstance(IndirectJndiLookupObjectFactory.java:154) 在com.ibm.ws.util.ResRefJndiLookupObjectFactory。getObjectInstance(ResRefJndiLookupObjectFactory.java:144) 在javax.naming.spi.NamingManager.getObjectInstanceByFactoryInReference(NamingManager.java:501) 在javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:365) 在com.ibm。 ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:920) ... 46更多 引起人:org.omg.CosNaming.NamingContextPackage.NotFound:IDL:omg.org/CosNaming/NamingContext/NotFound:1.0 在com.ibm.ws.naming.ipcos.WsnOptimizedNamingImpl.do_resolve_complete_info(WsnOptimizedNamingImpl.java:543) 在com.ibm.ws.naming.cosbase.WsnOptimizedNamingImplBase.resolve_complete_info(WsnOptimizedNamingImplBase.java:2163) 在com.ibm.WsnOptimizedNaming ._NamingContextStub.resolve_complete_info(_Na mingContextStub.java:538) at com.ibm.ws.naming.jndicos.CNContextImpl $ 2.run(CNContextImpl.java:2792) at com.ibm.ws.naming.jndicos.CNContextImpl $ 2.run(CNContextImpl.java: 2788) 在com.ibm.ws.naming.util.CommonHelpers.retry(CommonHelpers.java:762) 在com.ibm.ws.naming.jndicos.CNContextImpl.cosResolve(CNContextImpl.java:2786) 在融为一体。 ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1789) ...... 57多个

回答

1

请尝试以下

  1. 更改<res-ref-name>abcDe</res-ref-name><res-ref-name>jdbc/abcDe</res-ref-name>里面的web.xml文件

  2. 确保您的应用程序和JDBC数据源都在同一水平(小区/节点/服务器)配置。

`

+0

你的意思是我需要设置JDBC数据源中是控制台? – MasterJohn

+0

当然! JNDI资源引用意味着您的应用程序将使用在将安装它的容器(在本例中为Websphere)上定义的资源。因此,在WAS控制台中,您需要创建一个新的JDBC数据源,并使用JNDI名称“jdbc/abcDe”并指向所需的数据库。这样,一旦启动,服务器就会将您的resource-ref与WAS中定义的JNDI资源相匹配。 –

+0

谢谢先生。你让我今天一整天都感觉很好。 – MasterJohn