|
From: Alastair R. <ala...@ph...> - 2003-12-12 10:51:02
|
SGksIA0KDQpJJ3ZlIG9ubHkganVzdCBzdWJzY3JpYmVkIHRvIHRoZSBkZXYgbGlzdCwgYnV0IHNv bWVvbmUgdG9sZCBtZSB0aGVyZSB3YXMgYSBkaXNjdXNzaW9uIGVhcmxpZXIgdGhpcyB3ZWVrIGFi b3V0IGZhaWx1cmUgdG8gcGFzc2l2YXRlIHN0YXRlZnVsIHNlc3Npb24gYmVhbnMuIFRoaXMgd2Fz IGNhdXNlZCBieSB0aGUgYmVhbiBmYWN0b3J5IHJlZmVyZW5jZSBub3QgYmVpbmcgc2V0IHRvIG51 bGwgb24gcGFzc2l2YXRpb24uIA0KDQpJJ3ZlIGNvbWUgYWNyb3NzIGEgcmVsYXRlZCBwcm9ibGVt LCB3aGljaCBzZWVtcyB0byBiZSBkdWUgdG8gdGhlIGxvZ2dlciBmaWVsZCBpbiBBYnN0cmFjdEVu dGVycHJpc2VCZWFuIC0gSSBjYW4ndCBzZXQgaXRzIHJlZmVyZW5jZSB0byBudWxsIGluIGVqYlBh c3NpdmF0ZSgpIGJlY2F1c2UgaXRzIGZpbmFsLCBzbyB3aGVuIG15IGJlYW4gdHJpZXMgdG8gcGFz c2l2YXRlIEkgZ2V0IGFuIGV4Y2VwdGlvbiBzYXlpbmcgdGhhdCBvcmcuYXBhY2hlLmNvbW1vbnMu bG9nZ2luZy5pbXBsLkxvZzRKQ2F0ZWdvcnlMb2cgaXMgbm90IHNlcmlhbGl6YWJsZSAoc3RhY2t0 cmFjZSBiZWxvdykuDQoNCkFsc28sIEkndmUganVzdCB0YWtlbiBhIGxvb2sgYXQgQWJzdHJhY3RF bnRlcnByaXNlQmVhbiBpbiBDVlMgYW5kIGl0IHNlZW1zIHRoYXQgdW5sb2FkQmVhbkZhY3Rvcnko KSBvbmx5IHNldHMgdGhlIHJlZiB0byBiZWFuRmFjdG9yeSB0byBudWxsLCB3aGVyZWFzIHRoZSBi ZWFuRmFjdG9yeUxvYWRlciByZWYgcmVtYWlucyBzZXQuIEkga25vdyBJIGNvdWxkIGp1c3QgY2Fs bCBzZXRCZWFuRmFjdG9yeUxvYWRlcigpIGluIGVqYlBhc3NpdmF0ZSgpIHRvIHNldCBpdCB0byBu dWxsLCBidXQgd291bGRuJ3QgaXQgYmUgY2xlYXJlciB0byBqdXN0IGhhdmUgYSBzaW5nbGUgdW5s b2FkKCkgbWV0aG9kIHdoaWNoIHVubG9hZHMgYm90aCByZWZlcmVuY2VzPw0KDQpBbnl3YXksIHRo YXQgYXNpZGUsIFNwcmluZyBpcyBmYW50YXN0aWMhIFRoYW5rcy4NCg0KQWwuDQoNCg0KDQpqYXZh eC5lamIuRUpCRXhjZXB0aW9uOiBDb3VsZCBub3QgcGFzc2l2YXRlOyBmYWlsZWQgdG8gc2F2ZSBz dGF0ZTsgQ2F1c2VkQnlFeGNlcHRpb24gaXM6DQoJb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcu aW1wbC5Mb2c0SkNhdGVnb3J5TG9nDQoJYXQgb3JnLmpib3NzLmVqYi5wbHVnaW5zLlN0YXRlZnVs U2Vzc2lvbkZpbGVQZXJzaXN0ZW5jZU1hbmFnZXIucGFzc2l2YXRlU2Vzc2lvbihTdGF0ZWZ1bFNl c3Npb25GaWxlUGVyc2lzdGVuY2VNYW5hZ2VyLmphdmE6Mzc4KQ0KCWF0IG9yZy5qYm9zcy5lamIu cGx1Z2lucy5TdGF0ZWZ1bFNlc3Npb25JbnN0YW5jZUNhY2hlLnBhc3NpdmF0ZShTdGF0ZWZ1bFNl c3Npb25JbnN0YW5jZUNhY2hlLmphdmE6ODUpDQoJYXQgb3JnLmpib3NzLmVqYi5wbHVnaW5zLkFi c3RyYWN0SW5zdGFuY2VDYWNoZS50cnlUb1Bhc3NpdmF0ZShBYnN0cmFjdEluc3RhbmNlQ2FjaGUu amF2YToxNTYpDQoJYXQgb3JnLmpib3NzLmVqYi5wbHVnaW5zLkxSVUVudGVycHJpc2VDb250ZXh0 Q2FjaGVQb2xpY3kkT3ZlcmFnZXJUYXNrLnJ1bihMUlVFbnRlcnByaXNlQ29udGV4dENhY2hlUG9s aWN5LmphdmE6NDM1KQ0KCWF0IGphdmEudXRpbC5UaW1lclRocmVhZC5tYWluTG9vcChUaW1lci5q YXZhOjQzMikNCglhdCBqYXZhLnV0aWwuVGltZXJUaHJlYWQucnVuKFRpbWVyLmphdmE6MzgyKQ0K amF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb246IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dn aW5nLmltcGwuTG9nNEpDYXRlZ29yeUxvZw0KCWF0IGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFt LndyaXRlT2JqZWN0MChPYmplY3RPdXRwdXRTdHJlYW0uamF2YToxMDU0KQ0KCWF0IGphdmEuaW8u T2JqZWN0T3V0cHV0U3RyZWFtLmRlZmF1bHRXcml0ZUZpZWxkcyhPYmplY3RPdXRwdXRTdHJlYW0u amF2YToxMzMyKQ0KCWF0IGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtLndyaXRlU2VyaWFsRGF0 YShPYmplY3RPdXRwdXRTdHJlYW0uamF2YToxMzA0KQ0KCWF0IGphdmEuaW8uT2JqZWN0T3V0cHV0 U3RyZWFtLndyaXRlT3JkaW5hcnlPYmplY3QoT2JqZWN0T3V0cHV0U3RyZWFtLmphdmE6MTI0NykN CglhdCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbS53cml0ZU9iamVjdDAoT2JqZWN0T3V0cHV0 U3RyZWFtLmphdmE6MTA1MikNCglhdCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbS53cml0ZU9i amVjdChPYmplY3RPdXRwdXRTdHJlYW0uamF2YToyNzgpDQoJYXQgb3JnLmpib3NzLmVqYi5wbHVn aW5zLlN0YXRlZnVsU2Vzc2lvbkZpbGVQZXJzaXN0ZW5jZU1hbmFnZXIucGFzc2l2YXRlU2Vzc2lv bihTdGF0ZWZ1bFNlc3Npb25GaWxlUGVyc2lzdGVuY2VNYW5hZ2VyLmphdmE6MzcwKQ0KCWF0IG9y Zy5qYm9zcy5lamIucGx1Z2lucy5TdGF0ZWZ1bFNlc3Npb25JbnN0YW5jZUNhY2hlLnBhc3NpdmF0 ZShTdGF0ZWZ1bFNlc3Npb25JbnN0YW5jZUNhY2hlLmphdmE6ODUpDQoJYXQgb3JnLmpib3NzLmVq Yi5wbHVnaW5zLkFic3RyYWN0SW5zdGFuY2VDYWNoZS50cnlUb1Bhc3NpdmF0ZShBYnN0cmFjdElu c3RhbmNlQ2FjaGUuamF2YToxNTYpDQoJYXQgb3JnLmpib3NzLmVqYi5wbHVnaW5zLkxSVUVudGVy cHJpc2VDb250ZXh0Q2FjaGVQb2xpY3kkT3ZlcmFnZXJUYXNrLnJ1bihMUlVFbnRlcnByaXNlQ29u dGV4dENhY2hlUG9saWN5LmphdmE6NDM1KQ0KCWF0IGphdmEudXRpbC5UaW1lclRocmVhZC5tYWlu TG9vcChUaW1lci5qYXZhOjQzMikNCglhdCBqYXZhLnV0aWwuVGltZXJUaHJlYWQucnVuKFRpbWVy LmphdmE6MzgyKQ0K |
|
From: Colin S. <col...@ex...> - 2003-12-12 19:29:08
|
I've made the logger non-final so that stateful session bean subclasses
can remove and restore it in ejbPassivate/ejbActivate, respectively.
I considered nulling out the BeanFactoryLoader automatically on the
unload call. On the other hand, I don't think this is always appropriate
since some people don't use the default loader. I use my own loader for
example, which is serializable, so there is no need to reset it each
time (although I'm not using stateful beans anyways).
Alastair Rodgers wrote:
>Hi,
>
>I've only just subscribed to the dev list, but someone told me there was a discussion earlier this week about failure to passivate stateful session beans. This was caused by the bean factory reference not being set to null on passivation.
>
>I've come across a related problem, which seems to be due to the logger field in AbstractEnterpriseBean - I can't set its reference to null in ejbPassivate() because its final, so when my bean tries to passivate I get an exception saying that org.apache.commons.logging.impl.Log4JCategoryLog is not serializable (stacktrace below).
>
>Also, I've just taken a look at AbstractEnterpriseBean in CVS and it seems that unloadBeanFactory() only sets the ref to beanFactory to null, whereas the beanFactoryLoader ref remains set. I know I could just call setBeanFactoryLoader() in ejbPassivate() to set it to null, but wouldn't it be clearer to just have a single unload() method which unloads both references?
>
>Anyway, that aside, Spring is fantastic! Thanks.
>
>Al.
>
>
>
>javax.ejb.EJBException: Could not passivate; failed to save state; CausedByException is:
> org.apache.commons.logging.impl.Log4JCategoryLog
> at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivateSession(StatefulSessionFilePersistenceManager.java:378)
> at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(StatefulSessionInstanceCache.java:85)
> at org.jboss.ejb.plugins.AbstractInstanceCache.tryToPassivate(AbstractInstanceCache.java:156)
> at org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy$OveragerTask.run(LRUEnterpriseContextCachePolicy.java:435)
> at java.util.TimerThread.mainLoop(Timer.java:432)
> at java.util.TimerThread.run(Timer.java:382)
>java.io.NotSerializableException: org.apache.commons.logging.impl.Log4JCategoryLog
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivateSession(StatefulSessionFilePersistenceManager.java:370)
> at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(StatefulSessionInstanceCache.java:85)
> at org.jboss.ejb.plugins.AbstractInstanceCache.tryToPassivate(AbstractInstanceCache.java:156)
> at org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy$OveragerTask.run(LRUEnterpriseContextCachePolicy.java:435)
> at java.util.TimerThread.mainLoop(Timer.java:432)
> at java.util.TimerThread.run(Timer.java:382)
>N?HY隊X???'???u?????S??+??l?(??{^?ا,?T^???l???z|???$?YlJ('??謀L?Z?x????j[y??z???b??kay????^?[h?+vh?
>X??z0??i????&?bt
>?ƥ??"t
>?Z)?rD??)?~??{
>+?ׯzZ)z???X??X??*k?x????u?ޖ?^?X???(??~??zw???i????l???q???z???l?X??)ߣ?)?)?~??{
>+?ׯzZ)er==
>
|