Hibernate ehcache glassfish 3.1.2死锁
我在将ehcache与jpa和hibernate一起使用时遇到问题。在这个项目中,我有两个实体:Country和Provider,它们与一个附加列有多个关系(我想知道是否为特定的国家/地区启用了一个Provider)。Hibernate ehcache glassfish 3.1.2死锁,hibernate,glassfish-3,ehcache,Hibernate,Glassfish 3,Ehcache,我在将ehcache与jpa和hibernate一起使用时遇到问题。在这个项目中,我有两个实体:Country和Provider,它们与一个附加列有多个关系(我想知道是否为特定的国家/地区启用了一个Provider)。 我最初的方法是使用一个第三实体CountryProvider和一个组合的primaryKey,但由于安装程序的复杂性,并听取了这些家伙的意见()“为了简化您的生活,我建议向关联类添加一个生成的Id属性”。我添加了一个人工主键,并将这两个实体映射为onetomany。 只有当我想在
我最初的方法是使用一个第三实体CountryProvider和一个组合的primaryKey,但由于安装程序的复杂性,并听取了这些家伙的意见()“为了简化您的生活,我建议向关联类添加一个生成的Id属性”。我添加了一个人工主键,并将这两个实体映射为onetomany。
只有当我想在glassfish上部署时,才会出现以下死锁:
Java stack information for the threads listed above:
===================================================
"net.sf.ehcache.CacheManager@72d47b5a":
at org.glassfish.web.loader.WebappClassLoader.extractResources(WebappClassLoader.java:2267)
- waiting to lock <0x00000000e2e6c8b0> (a org.glassfish.web.loader.WebappClassLoader)
at org.glassfish.web.loader.WebappClassLoader.findResourceInternalFromJars(WebappClassLoader.java:2253)
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2095)
- locked <0x00000000e2f202a0> (a [Ljava.util.jar.JarFile;)
at org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1036)
at org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1020)
at org.glassfish.web.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1254)
at java.lang.Class.getResourceAsStream(Class.java:2032)
at net.sf.ehcache.util.ProductInfo.parseProductInfo(ProductInfo.java:67)
at net.sf.ehcache.util.ProductInfo.<init>(ProductInfo.java:49)
at net.sf.ehcache.util.ProductInfo.<init>(ProductInfo.java:40)
at net.sf.ehcache.util.UpdateChecker.buildParamsString(UpdateChecker.java:125)
at net.sf.ehcache.util.UpdateChecker.buildUpdateCheckUrl(UpdateChecker.java:121)
at net.sf.ehcache.util.UpdateChecker.doCheck(UpdateChecker.java:69)
at net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:60)
at net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:51)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
"admin-thread-pool-4848(5)":
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2095)
- waiting to lock <0x00000000e2f202a0> (a [Ljava.util.jar.JarFile;)
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2066)
at org.glassfish.web.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1976)
at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:901)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1476)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
at org.hibernate.hql.internal.ast.SqlASTFactory.initializeSqlNode(SqlASTFactory.java:242)
at org.hibernate.hql.internal.ast.SqlASTFactory.create(SqlASTFactory.java:257)
at antlr.ASTFactory.create(ASTFactory.java:153)
at antlr.ASTFactory.create(ASTFactory.java:186)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:543)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
- locked <0x00000000f8044b10> (a org.hibernate.hql.internal.ast.QueryTranslatorImpl)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:1132)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:525)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:206)
at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:120)
at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224)
at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495)
at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233)
at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Found 1 deadlock.
上面列出的线程的Java堆栈信息:
===================================================
“net.sf.ehcache。CacheManager@72d47b5a":
位于org.glassfish.web.loader.WebappClassLoader.extractResources(WebappClassLoader.java:2267)
-等待锁定(org.glassfish.web.loader.WebappClassLoader)
位于org.glassfish.web.loader.WebappClassLoader.findResourceInternalFromJars(WebappClassLoader.java:2253)
位于org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2095)
-锁定(一个[Ljava.util.jar.JarFile;)
位于org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1036)
位于org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1020)
位于org.glassfish.web.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1254)
位于java.lang.Class.getResourceAsStream(Class.java:2032)
在net.sf.ehcache.util.ProductInfo.parseProductInfo(ProductInfo.java:67)上
位于net.sf.ehcache.util.ProductInfo。(ProductInfo.java:49)
位于net.sf.ehcache.util.ProductInfo。(ProductInfo.java:40)
位于net.sf.ehcache.util.UpdateChecker.buildParamssString(UpdateChecker.java:125)
位于net.sf.ehcache.util.UpdateChecker.buildUpdateCheckUrl(UpdateChecker.java:121)
位于net.sf.ehcache.util.UpdateChecker.doCheck(UpdateChecker.java:69)
位于net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:60)
位于net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:51)
位于java.util.TimerThread.mainLoop(Timer.java:512)
在java.util.TimerThread.run(Timer.java:462)
“admin-thread-pool-4848(5)”:
位于org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2095)
-等待锁定(一个[Ljava.util.jar.JarFile;)
位于org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2066)
位于org.glassfish.web.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1976)
位于org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:901)
位于org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1476)
位于org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
位于org.hibernate.hql.internal.ast.SqlASTFactory.initializeSqlNode(SqlASTFactory.java:242)
位于org.hibernate.hql.internal.ast.SqlASTFactory.create(SqlASTFactory.java:257)
在antlr.ASTFactory.create(ASTFactory.java:153)中
创建(ASTFactory.java:186)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:543)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:183)
-锁定(org.hibernate.hql.internal.ast.QueryTranslatorImpl)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:105)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)
位于org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
位于org.hibernate.internal.SessionFactoryImpl.checknamedquerys(SessionFactoryImpl.java:1132)
位于org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:525)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:94)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
位于org.hibernate.ejb.HibernatePersistence.createContainerEntityManager工厂(HibernatePersistence.java:74)
位于org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:206)
位于org.glassfish.persistence.jpa.PersistenceUnitLoader(PersistenceUnitLoader.java:120)
位于org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224)
位于org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495)
位于org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233)
位于org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
在com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871)上
位于com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
位于com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
位于org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl.docomand(CommandRunnerImpl.java:363)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl.docomand(CommandRunnerImpl.java:1085)
位于com.sun.enterprise.v3.adm