简体   繁体   English

Tomcat在webapp启动期间挂起

[英]Tomcat hangs during webapp startup

My web project was working perfectly, it includes: spring3 and hibernate3 . 我的web项目运行正常,它包括: spring3hibernate3 After renaming some packages in eclipse by the help of eclipse refactoring , tomcat could't start anymore. eclipse重构的帮助下在eclipse中重命名一些包后, tomcat再也无法启动了。 It hangs on these logs below: 它挂在下面的这些日志中:

......
......
......

2012-02-29 08:57:04,552 INFO [org.springframework.orm.hibernate3.LocalSessionFactoryBean] [buildSessionFactory] - <Building new Hibernate SessionFactory>
2012-02-29 08:57:04,567 INFO [org.hibernate.connection.ConnectionProviderFactory] [newConnectionProvider] - <Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider>
2012-02-29 08:57:10,698 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <RDBMS: MySQL, version: 5.0.77>
2012-02-29 08:57:10,698 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.15 ( Revision: ${bzr.revision-id} )>
2012-02-29 08:57:10,729 INFO [org.hibernate.dialect.Dialect] [<init>] - <Using dialect: org.hibernate.dialect.MySQLDialect>
2012-02-29 08:57:10,745 INFO [org.hibernate.transaction.TransactionFactoryFactory] [buildTransactionFactory] - <Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory>
2012-02-29 08:57:10,745 INFO [org.hibernate.transaction.TransactionManagerLookupFactory] [getTransactionManagerLookup] - <No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Automatic flush during beforeCompletion(): disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Automatic session close at end of transaction: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <JDBC batch size: 15>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <JDBC batch updates for versioned data: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Scrollable result sets: enabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <JDBC3 getGeneratedKeys(): enabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Connection release mode: auto>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Maximum outer join fetch depth: 2>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Default batch fetch size: 1>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Generate SQL with comments: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Order SQL updates by primary key: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Order SQL inserts for batching: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [createQueryTranslatorFactory] - <Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory>
2012-02-29 08:57:10,745 INFO [org.hibernate.hql.ast.ASTQueryTranslatorFactory] [<init>] - <Using ASTQueryTranslatorFactory>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Query language substitutions: {}>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <JPA-QL strict compliance: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Second-level cache: enabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Query cache: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [createRegionFactory] - <Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Optimize cache for minimal puts: disabled>
2012-02-29 08:57:10,745 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Structured second-level cache entries: disabled>
2012-02-29 08:57:10,761 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Statistics: disabled>
2012-02-29 08:57:10,761 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Deleted entity synthetic identifier rollback: disabled>
2012-02-29 08:57:10,761 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Default entity-mode: pojo>
2012-02-29 08:57:10,761 INFO [org.hibernate.cfg.SettingsFactory] [buildSettings] - <Named query checking : enabled>
2012-02-29 08:57:10,792 INFO [org.hibernate.impl.SessionFactoryImpl] [<init>] - <building session factory>
2012-02-29 08:57:11,244 INFO [org.hibernate.impl.SessionFactoryObjectFactory] [addInstance] - <Not binding factory to JNDI, no JNDI name configured>
2012-02-29 08:57:11,307 INFO [org.springframework.orm.hibernate3.HibernateTransactionManager] [afterPropertiesSet] - <Using DataSource [org.apache.commons.dbcp.BasicDataSource@1aac07d] of Hibernate SessionFactory for HibernateTransactionManager>

It hangs here, and when tomcat's "start timeout" reaches tomcat stops. 它挂在这里,当tomcat的 “启动超时”到达tomcat时停止。 I increased the timeout to 100 seconds, but it was useless, where the app still hanged on the longest times! 我将超时时间增加到100秒,但它没用, 应用程序仍然在最长时间挂起! The strangest thing is that there is no error whatsoever, it just hangs. 最奇怪的是,没有任何错误,只是挂起。 I tried a lot of times cleaning/deleting the server and cleaning/building the project, but with no result. 我尝试了很多次清理/删除服务器和清理/构建项目,但没有结果。

EDIT: 编辑:

Before refactoring the log continued like this below: 在重构之前,日志继续如下:

2012-02-29 07:52:39,822 INFO [org.springframework.ws.soap.saaj.SaajSoapMessageFactory] [afterPropertiesSet] - <Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol>
2012-02-29 07:52:39,853 INFO [org.springframework.oxm.jaxb.Jaxb2Marshaller] [createJaxbContextFromContextPath] - <Creating JAXBContext with context path [aheeva.webService.oxm]>
2012-02-29 07:52:40,571 INFO [org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping] [registerHandler] - <Mapped URL path [
.......
.......
.......

EDIT: 编辑:

I got a thread dump with the following output: 我得到了一个带有以下输出的线程转储:

"main" prio=5 tid=0x001f9dc8 nid=0xf8c runnable [0x000bf000..0x000cfc00]
        at java.lang.String.equals(String.java:858)
        at java.util.HashMap.eq(HashMap.java:277)
        at java.util.HashMap.getEntry(HashMap.java:363)
        at java.util.LinkedHashMap.get(LinkedHashMap.java:273)
        at org.springframework.beans.CachedIntrospectionResults.getPropertyDescr
iptor(CachedIntrospectionResults.java:275)
        at org.springframework.beans.BeanWrapperImpl.getPropertyDescriptorIntern
al(BeanWrapperImpl.java:335)
        at org.springframework.beans.BeanWrapperImpl.isWritableProperty(BeanWrap
perImpl.java:407)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1327)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:222)
        - locked <0x24682be0> (a java.util.concurrent.ConcurrentHashMap)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:288)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getType
ForFactoryBean(AbstractBeanFactory.java:1343)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:678)
        at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeM
atch(AbstractBeanFactory.java:507)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.
getBeanNamesForType(DefaultListableBeanFactory.java:317)
        at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIn
cludingAncestors(BeanFactoryUtils.java:185)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.
findAutowireCandidates(DefaultListableBeanFactory.java:829)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.
doResolveDependency(DefaultListableBeanFactory.java:786)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.
resolveDependency(DefaultListableBeanFactory.java:703)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanP
ostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.j
ava:474)
.......
.......
.......

I can conclude the following: 我可以得出以下结论:

It's always the same spring hashmap in a singleton mode trying to fetch a bean and isn't able to find it for that reason the thread is locked ...very very strange! 单例模式下,它总是在尝试获取bean的同一个Spring hashmap,并且由于这个原因线程被锁定而无法找到它...非常奇怪! mustn't there be a throw for an exception or a timeout? 一定不能抛出 异常或超时吗? weird Spring architecture! 奇怪的春天建筑!

OK I solved this: eclipse refactoring didn't change Spring <context:component-scan base-package="package_name" /> blocks, for that reason spring couldn't find any wired components to treat. 好吧我解决了这个问题: eclipse重构没有改变Spring <context:component-scan base-package="package_name" />块,因此spring无法找到任何有线组件来处理。 I found this by adding Spring Tools -> add java nature and checking in the Spring Explorer tab that context:component-scan blocks were empty. 我通过添加Spring Tools -> add java nature找到了这个Spring Tools -> add java nature并在Spring Explorer选项卡中检查context:component-scan块是空的。

Thanks to AlexR, mindandmedia, NIVESH SENGAR, Xorty and Donal Fellows for your support and special thanks to nwinkler for the constructive instructions! 感谢AlexR,mindandmedia,NIVESH SENGAR,Xorty和Donal Fellows的支持,特别感谢nwinkler的建设性指示!

Can you try the following: 你能尝试以下方法吗?

  • Enable DEBUG logging - this will give you a better understanding of what the server is doing. 启用DEBUG日志记录 - 这将使您更好地了解服务器正在执行的操作。
  • Check the database for open connections to see whether the connection is established. 检查数据库是否有打开的连接,以查看是否已建立连接。
  • Create a thread dump when the process is in this state. 进程处于此状态时创建线程转储。 See here or here for details on how to take a thread dump. 有关如何进行线程转储的详细信息,请参阅此处此处

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM