2017-03-07 14 views
0

Ich entwickle Servlet Web-Anwendung in Eclipse JavaEE. Die Anwendung wurde erfolgreich auf dem lokalen Tomcat-Server bereitgestellt und gestartet.javax.naming.NameNotFoundException beim Debuggen in Eclipse

Wenn ich die Anwendung in Eclipse im Debug-Modus auf dem gleichen Server begann ich die Ausnahme haben:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'MedexamDC': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name [jdbc/MedexamDC] is not bound in this Context. Unable to find [jdbc]. 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:736) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:779) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495) 
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347) 
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Unknown Source) 
Caused by: javax.naming.NameNotFoundException: Name [jdbc/MedexamDC] is not bound in this Context. Unable to find [jdbc]. 
at org.apache.naming.NamingContext.lookup(NamingContext.java:817) 
at org.apache.naming.NamingContext.lookup(NamingContext.java:173) 
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163) 
at javax.naming.InitialContext.lookup(Unknown Source) 
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155) 
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87) 
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152) 
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179) 
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:104) 
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:106) 
at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:231) 
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:217) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
... 36 more 

мар 07, 2017 4:32:47 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet mvc-dispatcher 
javax.naming.NameNotFoundException: Name [jdbc/MedexamDC] is not bound in this Context. Unable to find [jdbc]. 
at org.apache.naming.NamingContext.lookup(NamingContext.java:817) 
at org.apache.naming.NamingContext.lookup(NamingContext.java:173) 
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163) 
at javax.naming.InitialContext.lookup(Unknown Source) 
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155) 
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87) 
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152) 
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179) 
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:104) 
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:106) 
at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:231) 
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:217) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:736) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:779) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495) 
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347) 
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Unknown Source) 

Datei conf/context.xml

<Context reloadable="true"> 
<WatchedResource>WEB-INF/web.xml</WatchedResource> 
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 

<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/MedexamDC" password="123" type="javax.sql.DataSource" url="jdbc:postgresql://localhost:5432/medexam" username="postgres"/> 
</Context> 

Webapp \ META_INF \ Kontext .xml

<Context> 
    <Context path=""/> 
    <ResourceLink type="javax.sql.DataSource" name="jdbc/MedexamDC" global="jdbc/MedexamDC" />  
</Context> 

Ich habe keine Gründe dafür. Hat jemand einen Vorschlag? Vielen Dank.

Antwort

0

Dies kann passieren, weil Sie nicht die physische Installation von Tomcat verwenden, sondern eine "Kopie" davon, die die Standardoption für Eclipse ist. Wenn Sie auf Ihre Project Explorer Ansicht schauen, werden Sie sehen, dass es ein Servers Projekt gibt. Schau hinein und finde den Tomcat, den du benutzt.

Innerhalb dieses Tomcat-Ordners sehen Sie eine Reihe von Konfigurationsdateien. Dies sind die Dateien, die Eclipse verwendet, um Ihren Tomcat zu booten, damit Sie mit ihnen spielen können, ohne Ihre physische Installation zu ruinieren.

Alles was Sie tun müssen, ist die context.xml Datei innerhalb des Tomcat-Ordner zu öffnen, die innerhalb von Servers ist, und fügen Sie die Resource Sie bereits auf conf/context.xml haben

nach dem Tomcat neu zu starten, sollte es funktionieren.

Eine weitere Option besteht darin, Eclipse mitzuteilen, dass die physische Installation verwendet werden soll. Sie können dies auf der Servers Ansicht tun. Doppelklicken Sie auf Ihren Tomcat, um seine Konfiguration zu öffnen, und unten links sehen Sie 3 Optionen. Wählen Sie "Tomcat-Installation verwenden", um die physische Installation zu übernehmen, die bereits konfiguriert ist.

+0

Erste Option funktioniert nicht für mich. Und zweitens ist OK. Vielen Dank! –

Verwandte Themen