2011-07-03 7 views
8

मेरे पास एक वेब-ऐप है (टॉमकैट 6, log4j 1.2.16), जो श्रोता के साथ शुरू होता है। आवेदन Undeploying फेंकता निम्न अपवाद:टॉमकैट ने अनावश्यकता के दौरान 'java.lang.IleglegalStateException: कक्षा invariant उल्लंघन' क्यों फेंक दिया?

INFO (HqListener.java:28) - HqListener exited! 
log4j:ERROR log4j called after unloading, see http://logging.apache.org/log4j/1.2/faq.html#unload. 
java.lang.IllegalStateException: Class invariant violation 
    at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199) 
    at org.apache.log4j.LogManager.getLogger(LogManager.java:228) 
    at org.apache.log4j.Logger.getLogger(Logger.java:117) 
    at com.mchange.v2.log.log4j.Log4jMLog.getMLogger(Log4jMLog.java:51) 
    at com.mchange.v2.log.MLog.getLogger(MLog.java:145) 
    at com.mchange.v2.sql.SqlUtils.<clinit>(SqlUtils.java:37) 
    at com.mchange.v2.c3p0.DataSources.pooledDataSource(DataSources.java:290) 
    at com.mchange.v2.c3p0.DataSources.pooledDataSource(DataSources.java:316) 
    at org.hibernate.connection.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:181) 
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143) 
    at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:51) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906) 
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) 
    at net.hq.util.Db.init(Db.java:15) 
    at net.hq.process.ConnectionGateway.run(ConnectionGateway.java:89) 
    at java.lang.Thread.run(Thread.java:662) 
Exception in thread "HQ Gateway Thread" java.lang.NullPointerException 
    at net.hq.process.ConnectionGateway.run(ConnectionGateway.java:129) 
    at java.lang.Thread.run(Thread.java:662) 
Jul 3, 2011 3:03:53 AM org.apache.catalina.core.StandardContext stop 

HqListener.java मेरी श्रोता है और यह एक सफल बंद की रिपोर्ट।

मैं इस अपवाद संदेश से कैसे छुटकारा पा सकता हूं?

+0

आप शायद log4j में कॉन्फ़िगरेशन की खोज कर सकते हैं, मेरे पास tomcat6 में अनुप्रयोगों के साथ एक ही समस्या है जो tomcat5.5 –

उत्तर

8

चेक अपने समाधान के लिए इस jira बग: http://java.net/jira/browse/GLASSFISH-16767

इसी संकल्प लिया मुद्दा stackoverflow पर यहाँ: Undeploying a Grails App from Glassfish gets a Class invariant violation

Glassfish में domain.xml फ़ाइल में संपत्ति

<jvm-options> 
    -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false 
</jvm-options> 

स्थापना समस्या का समाधान ; निश्चित नहीं है कि इसे टोमकैट में सेट करना है, शायद server.xml?

+0

में "ठीक" काम करता है, आप इस संपत्ति को कहां रखना चाहते हैं नमूना domain.xml प्रदान कर सकते हैं। क्या यह सिस्टम संपत्ति है? kinkajou

+3

इसे डोमेन.एक्सएमएल के के jvm-options में जोड़ें, जो आमतौर पर पाया जाता है इंस्टॉल-डीआईआर/ग्लासफ़िश/डोमेन/डोमेन 1/कॉन्फ़िगरेशन में: -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES = false Oversteer

2

जिस तरह से मैंने इस समस्या को हल किया (ग्लासफ़िश पर्यावरण में) लॉगर को स्थिर के रूप में घोषित करने से बचाना है, उदा।

private static final Logger logger = LoggerFactory.getLogger(BootStrapListener.class); 

आप ऊपर घोषणा से static निकालते हैं, तो आप अब उपरोक्त त्रुटि मिल जाएगा।

संबंधित मुद्दे

 संबंधित मुद्दे