2010-10-27 243 views
0

在做别的事情时,我添加了一个名为catalina.jar的lib文件夹。这使我能够提供静态内容(可以工作),但我以前正在使用的struts动作(通过休眠访问数据库)不再有效。发生在Tomcat启动失败的第一个迹象:Tomcat服务器异常 - java:comp没有绑定在这个上下文中

SEVERE: Null component Catalina:type=DataSource,path=/,host=localhost,class=javax.sql.DataSource,name="jdbc/UpdatableDB" 

随后的故障发生在运行的访问数据库的操作:

ERROR [http-8080-1 14:21:29,789] (DatasourceConnectionProvider) - Could not find datasource: java:comp/env/jdbc/UpdatableDB 
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context 
     at org.apache.naming.NamingContext.lookup(NamingContext.java:770) 
     at org.apache.naming.NamingContext.lookup(NamingContext.java:153) 
     at javax.naming.InitialContext.lookup(InitialContext.java:392) 
     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) 
     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) 
     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79) 
     at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:438) 
     at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91) 
     at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) 
     at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) 
     at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) 
     at com.util.HibernateUtil.<clinit>(HibernateUtil.java:58) 
     at com.offers.CompleteRuleAndTemplateCache.refreshIfNecessary(CompleteRuleAndTemplateCache.java:91) 
     at com.offers.CompleteRuleAndTemplateCache.refreshIfNecessary(CompleteRuleAndTemplateCache.java:73) 
     at com.offers.CompleteRuleAndTemplateCache.<clinit>(CompleteRuleAndTemplateCache.java:65) 
     at com.offers.actions.ShowIframeAction.getApplicableRule(ShowIframeAction.java:541) 
     at com.offers.actions.ShowIframeAction.execute(ShowIframeAction.java:121) 
     at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) 
     at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) 
     at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
     at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
     at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) 
     at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
     at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at com.util.SessionFilter.doFilter(SessionFilter.java:78) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
     at java.lang.Thread.run(Thread.java:619) 
Initial SessionFactory creation failed. hibernate-offers.cfg.xml 
org.hibernate.HibernateException: Could not find datasource 
     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79) 
     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) 
     at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79) 
     at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:438) 
     at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91) 
     at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163) 
     at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383) 
     at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954) 
     at com.util.HibernateUtil.<clinit>(HibernateUtil.java:58) 
     at com.offers.CompleteRuleAndTemplateCache.refreshIfNecessary(CompleteRuleAndTemplateCache.java:91) 
     at com.offers.CompleteRuleAndTemplateCache.refreshIfNecessary(CompleteRuleAndTemplateCache.java:73) 
     at com.offers.CompleteRuleAndTemplateCache.<clinit>(CompleteRuleAndTemplateCache.java:65) 
     at com.offers.actions.ShowIframeAction.getApplicableRule(ShowIframeAction.java:541) 
     at com.offers.actions.ShowIframeAction.execute(ShowIframeAction.java:121) 
     at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) 
     at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) 
     at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
     at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
     at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) 
     at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
     at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at com.util.SessionFilter.doFilter(SessionFilter.java:78) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
     at java.lang.Thread.run(Thread.java:619) 
Caused by: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context 
     at org.apache.naming.NamingContext.lookup(NamingContext.java:770) 
     at org.apache.naming.NamingContext.lookup(NamingContext.java:153) 
     at javax.naming.InitialContext.lookup(InitialContext.java:392) 
     at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) 
     ... 41 more 

为什么会增加一个罐子原因?我能做些什么(不要只是摆脱catalina.jar)?

我在网上找到的一些建议包括删除源文件中的命名common.jar,命名factory.jar和命名resources.jar - 但我已经没有这些文件。

在吉姆·加里森的要求,继承人那里JDBC/UpdatableDB绑定到数据源 - 它不是在server.xml中,其在context.xml中,这一直为我们一个很长的时间:

<Resource name="jdbc/UpdatableDB" auth="Container" type="javax.sql.DataSource" 
      maxActive="75" maxIdle="40" maxWait="1000" 
      removeAbandoned="true" removeAbandonedTimeout="300" 
      timeBetweenEvictionRunsMillis="30000" 
      defaultAutoCommit="false" 
      username="XXXX" password="XXXX" driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://<HOSTNAME AND PATH>?autoReconnect=true" 
      connectionProperties="autoReconnect=true;cachePrepStmts=true;cacheCallableStmts=true;cacheServerConfiguration=true;useLocalSessionState=true;elideSetAutoCommits=true;alwaysSendSetIsolation=false;enableQueryTimeouts=false;" 
     /> 
+0

显示server.xml的相关部分,其中jdbc/UpdatableDB绑定到DataSource – 2010-10-27 21:35:09

+0

我不再需要这个问题的答案 - 我摆脱了catalina .jar(最有可能在其他地方重复加载)并使用默认操作来加载静态内容。 IntelliJ抱怨说它找不到默认的动作,但我应该忽略它,而不是通过Javaland进行漫长的跋涉。尽管有警告,它仍然有效。 – 2010-10-27 22:16:24

回答

4

在Tomcat 5.5中,我们采用了以下语法来查找JDBC资源:

java:/comp/env/jdbc/UpdatableDB 

我不知道这是相当于你使用的是什么,但我认为在情况下,它可以帮助我会提到它其他人。

+1

+1,原始代码在/ comp之前缺少前导斜杠 – 2012-05-16 16:08:14

0

您不应该将catalina.jar添加到您的WEB-INF/lib,因为那是一个容器特定的jar。这就是你得到这个错误的原因。删除jar文件并将其作为目标运行时Tomcat添加到eclipse中

相关问题