java.io.NotSerializableException: java.util.concurrent.Futu
guazi Oct 14, 2008 4:50 AMI used jbossCache in "cluster" mode, Tomcat as the servers. when I start up one server and do nothing before other one start up, it works well. but I did someting before other one start up, an exception occured. like this:
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.topsoft.common.cacheadapt.CacheAdapterJbossImpl]: Constructor threw exception; nested exception is java.lang.ExceptionInInitializerError Caused by: java.lang.ExceptionInInitializerError at com.topsoft.common.cacheadapt.CacheAdapterJbossImpl.<init>(CacheAdapterJbossImpl.java:13) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:752) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:717) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByName(AbstractAutowireCapableBeanFactory.java:876) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByName(AbstractAutowireCapableBeanFactory.java:876) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByName(AbstractAutowireCapableBeanFactory.java:876) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:824) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:245) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:188) at com.topsoft.common.SpringContextLoaderListener.contextInitialized(SpringContextLoaderListener.java:25) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3692) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.startup.Embedded.start(Embedded.java:821) at com.topnet.util.web.EmbeddedTomcat.startup(EmbeddedTomcat.java:75) at com.topnet.util.web.EmbeddedTomcat.main(EmbeddedTomcat.java:87) Caused by: org.jboss.cache.CacheException: Unable to invoke method public void org.jboss.cache.RPCManagerImpl.start() on object instance org.jboss.cache.RPCManagerImpl@5866c1 at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:127) at org.jboss.cache.factories.ComponentRegistry$PrioritizedMethod.invoke(ComponentRegistry.java:932) at org.jboss.cache.factories.ComponentRegistry.internalStart(ComponentRegistry.java:718) at org.jboss.cache.factories.ComponentRegistry.start(ComponentRegistry.java:582) at org.jboss.cache.invocation.CacheInvocationDelegate.start(CacheInvocationDelegate.java:279) at com.topsoft.common.cache.TopCacheImpl.<clinit>(TopCacheImpl.java:29) ... 49 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:123) ... 54 more Caused by: org.jboss.cache.CacheException: Unable to fetch state on startup at org.jboss.cache.RPCManagerImpl.start(RPCManagerImpl.java:167) ... 59 more Caused by: org.jboss.cache.CacheException: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: java.util.concurrent.FutureTask at org.jboss.cache.statetransfer.DefaultStateTransferIntegrator.integrateTransientState(DefaultStateTransferIntegrator.java:95) at org.jboss.cache.statetransfer.DefaultStateTransferIntegrator.integrateState(DefaultStateTransferIntegrator.java:66) at org.jboss.cache.statetransfer.StateTransferManager.setState(StateTransferManager.java:233) at org.jboss.cache.statetransfer.StateTransferManager.setState(StateTransferManager.java:181) at org.jboss.cache.remoting.jgroups.ChannelMessageListener.setState(ChannelMessageListener.java:165) at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUpEvent(MessageDispatcher.java:647) at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:747) at org.jgroups.JChannel.up(JChannel.java:1069) at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:402) at org.jgroups.protocols.pbcast.STATE_TRANSFER.handleStateRsp(STATE_TRANSFER.java:421) at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:120) at org.jgroups.protocols.pbcast.GMS.up(GMS.java:780) at org.jgroups.protocols.FRAG2.unfragment(FRAG2.java:290) at org.jgroups.protocols.FRAG2.up(FRAG2.java:190) at org.jgroups.protocols.FC.up(FC.java:408) at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:234) at org.jgroups.protocols.UNICAST.handleDataReceived(UNICAST.java:595) at org.jgroups.protocols.UNICAST.up(UNICAST.java:265) at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:729) at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:167) at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:300) at org.jgroups.protocols.FD.up(FD.java:285) at org.jgroups.protocols.MERGE2.up(MERGE2.java:145) at org.jgroups.protocols.Discovery.up(Discovery.java:245) at org.jgroups.protocols.TP.passMessageUp(TP.java:1126) at org.jgroups.protocols.TP.access$100(TP.java:48) at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1637) at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1616) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: java.util.concurrent.FutureTask at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at java.util.concurrent.ConcurrentHashMap.readObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at java.util.HashMap.readObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.jboss.cache.marshall.NodeData.readExternal(NodeData.java:88) at org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:612) at org.jboss.cache.marshall.CacheMarshaller200.populateFromStream(CacheMarshaller200.java:776) at org.jboss.cache.marshall.CacheMarshaller200.unmarshallLinkedList(CacheMarshaller200.java:715) at org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:578) at org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:522) at org.jboss.cache.marshall.CacheMarshaller200.objectFromObjectStream(CacheMarshaller200.java:140) at org.jboss.cache.marshall.VersionAwareMarshaller.objectFromObjectStream(VersionAwareMarshaller.java:326) at org.jboss.cache.statetransfer.DefaultStateTransferIntegrator.readNodesAsList(DefaultStateTransferIntegrator.java:284) at org.jboss.cache.statetransfer.DefaultStateTransferIntegrator.integrateTransientState(DefaultStateTransferIntegrator.java:243) at org.jboss.cache.statetransfer.DefaultStateTransferIntegrator.integrateTransientState(DefaultStateTransferIntegrator.java:82) ... 30 more Caused by: java.io.NotSerializableException: java.util.concurrent.FutureTask at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.concurrent.ConcurrentHashMap.writeObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at java.util.HashMap.writeObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at org.jboss.cache.marshall.NodeData.writeExternal(NodeData.java:73) at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:398) at org.jboss.cache.marshall.CacheMarshaller200.marshallCollection(CacheMarshaller200.java:489) at org.jboss.cache.marshall.CacheMarshaller200.marshallObject(CacheMarshaller200.java:332) at org.jboss.cache.marshall.CacheMarshaller200.objectToObjectStream(CacheMarshaller200.java:170) at org.jboss.cache.marshall.VersionAwareMarshaller.objectToObjectStream(VersionAwareMarshaller.java:255) at org.jboss.cache.statetransfer.DefaultStateTransferGenerator.marshallTransientState(DefaultStateTransferGenerator.java:139) at org.jboss.cache.statetransfer.DefaultStateTransferGenerator.generateState(DefaultStateTransferGenerator.java:57) at org.jboss.cache.statetransfer.StateTransferManager.getState(StateTransferManager.java:109) at org.jboss.cache.remoting.jgroups.ChannelMessageListener.getState(ChannelMessageListener.java:139) at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUpEvent(MessageDispatcher.java:629) at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:747) at org.jgroups.JChannel.up(JChannel.java:1154) at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:402) at org.jgroups.protocols.pbcast.STATE_TRANSFER.requestApplicationStates(STATE_TRANSFER.java:232) at org.jgroups.protocols.pbcast.STATE_TRANSFER.handleStateReq(STATE_TRANSFER.java:375) at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:117) at org.jgroups.protocols.pbcast.GMS.up(GMS.java:780) at org.jgroups.protocols.FRAG2.up(FRAG2.java:205) ... 17 more
I used jbossCache 2.2.0GA version. my configure file:
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== --> <!-- --> <!-- JBoss Cache Service Configuration --> <!-- --> <!-- ===================================================================== --> <server> <mbean code="org.jboss.cache.jmx.CacheJmxWrapper" name="jboss.cache:service=Cache"> <!-- Configure the TransactionManager --> <attribute name="TransactionManagerLookupClass"> com.topsoft.common.cache.CacheTransationManagerLookUp </attribute> <!-- Node locking level : SERIALIZABLE REPEATABLE_READ (default) READ_COMMITTED READ_UNCOMMITTED NONE --> <attribute name="IsolationLevel">READ_COMMITTED</attribute> <!-- Lock parent before doing node additions/removes --> <attribute name="LockParentForChildInsertRemove"> true </attribute> <!-- Valid modes are LOCAL (default) REPL_ASYNC REPL_SYNC INVALIDATION_ASYNC INVALIDATION_SYNC --> <attribute name="CacheMode">REPL_SYNC</attribute> <!-- Max number of milliseconds to wait for a lock acquisition --> <attribute name="LockAcquisitionTimeout">15000</attribute> <!-- Specific eviction policy configurations. This is LRU --> <attribute name="ClusterName">JBossCache-Cluster</attribute> <depends>jgroups.mux:name=Multiplexer</depends> <attribute name="MultiplexerStack"> fc-fast-minimalthreads </attribute> <!-- JGroups protocol stack properties. ClusterConfig isn't used if the multiplexer is enabled and successfully initialized. --> <attribute name="ClusterConfig"> <config> <!-- UDP: if you have a multihomed machine, set the bind_addr attribute to the appropriate NIC IP address --> <!-- UDP: On Windows machines, because of the media sense feature being broken with multicast (even after disabling media sense) set the loopback attribute to true --> <UDP mcast_addr="228.1.2.3" mcast_port="48866" ip_ttl="64" ip_mcast="true" mcast_send_buf_size="150000" mcast_recv_buf_size="80000" ucast_send_buf_size="150000" ucast_recv_buf_size="80000" loopback="false" /> <PING timeout="2000" num_initial_members="3" /> <MERGE2 min_interval="10000" max_interval="20000" /> <FD shun="true" /> <FD_SOCK /> <VERIFY_SUSPECT timeout="1500" /> <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800" /> <UNICAST timeout="600,1200,2400,4800" /> <pbcast.STABLE desired_avg_gossip="400000" /> <FC max_credits="2000000" min_threshold="0.10" /> <FRAG2 frag_size="8192" /> <pbcast.GMS join_timeout="5000" shun="true" print_local_addr="true" /> <pbcast.STATE_TRANSFER /> </config> </attribute> <!-- The max amount of time (in milliseconds) we wait until the state (ie. the contents of the cache) are retrieved from existing members in a clustered environment --> <attribute name="StateRetrievalTimeout">20000</attribute> <!-- Number of milliseconds to wait until all responses for a synchronous call have been received. --> <attribute name="SyncReplTimeout">15000</attribute> <!-- Max number of milliseconds to wait for a lock acquisition --> <attribute name="LockAcquisitionTimeout">10000</attribute> <attribute name="ShutdownHookBehavior">DEFAULT</attribute> <attribute name="UseLazyDeserialization">false</attribute> <attribute name="EvictionPolicyConfig"> <config> <attribute name="wakeUpIntervalSeconds">5</attribute> <!-- This defaults to 200000 if not specified --> <attribute name="eventQueueSize">200000</attribute> <attribute name="policyClass"> org.jboss.cache.eviction.LRUPolicy </attribute> <!-- Cache wide default --> <region name="/_default_"> <attribute name="maxNodes">5000</attribute> <attribute name="timeToLiveSeconds">1000</attribute> </region> </config> </attribute> <attribute name="CacheLoaderConfig" replace="false"> <config> <shared>false</shared> <cacheloader> <class> org.jboss.cache.loader.jdbm.JdbmCacheLoader </class> <properties>location=./topCache_cluster_temp/</properties> <async>false</async> <!-- if set to true, purges the contents of this cache loader when the cache starts up. Defaults to false. --> <purgeOnStartup>true</purgeOnStartup> </cacheloader> </config> </attribute> </mbean> </server>
what's the matter ?