I'm currently deploying multiple web applications (WAR's) to a JBoss 4.0.5 AS.
Each web application contains the necessary Cache & PojoCache resources, and it works as expected until I attempt to share cached data between them. For example in web application A I'm able to attach and find objects added from application A through the PojoCache api, however if I attempt to find these object in web application B I receive the following: | java.lang.ExceptionInInitializerError | at org.jboss.cache.pojo.impl.CachedType.analyzeFields(CachedType.java:215) | ... | Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException (Caused by java.lang.NullPointerException) | at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:538) | at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235) | at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209) | at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:353) | at org.jboss.cache.pojo.memory.PersistentReference.<clinit>(PersistentReference.java:44) | ... 42 more | | Caused by: java.lang.NullPointerException | at org.apache.commons.logging.impl.Log4jProxy$1.run(Log4jProxy.java:66) | at java.security.AccessController.doPrivileged(Native Method) | at org.apache.commons.logging.impl.Log4jProxy.threadContextClassLoader(Log4jProxy.java:88) | at org.apache.commons.logging.impl.Log4jProxy.<init>(Log4jProxy.java:94) | | at org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:39) | at sun.reflect.GeneratedConstructorAccessor24.newInstance(Unknown Source) | at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) | at java.lang.reflect.Constructor.newInstance(Constructor.java:494) | at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529) | ... 46 more | The web applications both use their own log4j.xml files (http://wiki.jboss.org/wiki/Wiki.jsp?page=Log4jRepositorySelector). I have also tested the applications w/out their own logging and get the same exception. I'm currently using the following cache configuration: | <server> | <mbean code="org.jboss.cache.pojo.jmx.PojoCacheJmxWrapper" | name="jboss.cache:service=PojoCache"> | <depends>jboss:service=Naming</depends> | <depends>jboss:service=TransactionManager</depends> | <!-- | Configure the TransactionManager | <attribute name="TransactionManagerLookupClass">org.jboss.cache.transaction.DummyTransactionManagerLookup</attribute> | --> | <attribute name="TransactionManagerLookupClass">org.jboss.cache.transaction.JBossTransactionManagerLookup</attribute> | <!-- | Isolation level : SERIALIZABLE | REPEATABLE_READ (default) | READ_COMMITTED | READ_UNCOMMITTED | NONE | --> | <attribute name="IsolationLevel">REPEATABLE_READ</attribute> | <!-- | Valid modes are LOCAL | REPL_ASYNC | REPL_SYNC | INVALIDATION_ASYNC | INVALIDATION_SYNC | --> | <attribute name="CacheMode">REPL_SYNC</attribute> | <!-- | Just used for async repl: use a replication queue | --> | <attribute name="UseReplQueue">false</attribute> | <!-- | Replication interval for replication queue (in ms) | --> | <attribute name="ReplQueueInterval">0</attribute> | <!-- | Max number of elements which trigger replication | --> | <attribute name="ReplQueueMaxElements">0</attribute> | <!-- Name of cluster. Needs to be the same for all TreeCache nodes in a | cluster in order to find each other. Note application sets this value at | startup. | --> | <attribute name="ClusterName">JBossCache-Cluster-1</attribute> | <!--Uncomment next three statements to enable JGroups multiplexer. | This configuration is dependent on the JGroups multiplexer being | registered in an MBean server such as JBossAS. --> | <!-- | <depends>jgroups.mux:name=Multiplexer</depends> | <attribute name="MultiplexerService">jgroups.mux:name=Multiplexer</attribute> | <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 bind_addr="127.0.0.1" | mcast_addr="228.10.10.10" | mcast_port="45588" | tos="8" | ucast_recv_buf_size="20000000" | ucast_send_buf_size="640000" | mcast_recv_buf_size="25000000" | mcast_send_buf_size="640000" | loopback="false" | discard_incompatible_packets="true" | max_bundle_size="64000" | max_bundle_timeout="30" | use_incoming_packet_handler="true" | ip_ttl="2" | enable_bundling="false" | enable_diagnostics="true" | use_concurrent_stack="true" | thread_naming_pattern="pl" | thread_pool.enabled="true" | thread_pool.min_threads="1" | thread_pool.max_threads="25" | thread_pool.keep_alive_time="30000" | thread_pool.queue_enabled="true" | thread_pool.queue_max_size="10" | thread_pool.rejection_policy="Run" | oob_thread_pool.enabled="true" | oob_thread_pool.min_threads="1" | oob_thread_pool.max_threads="4" | oob_thread_pool.keep_alive_time="10000" | oob_thread_pool.queue_enabled="true" | oob_thread_pool.queue_max_size="10" | oob_thread_pool.rejection_policy="Run"/> | <PING timeout="2000" num_initial_members="3"/> | <MERGE2 max_interval="30000" min_interval="10000"/> | <FD_SOCK/> | <FD timeout="10000" max_tries="5" shun="true"/> | <VERIFY_SUSPECT timeout="1500"/> | <pbcast.NAKACK max_xmit_size="60000" | use_mcast_xmit="false" gc_lag="0" | retransmit_timeout="300,600,1200,2400,4800" | discard_delivered_msgs="true"/> | <UNICAST timeout="300,600,1200,2400,3600"/> | <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" | max_bytes="400000"/> | <pbcast.GMS print_local_addr="true" join_timeout="5000" | join_retry_timeout="2000" shun="false" | view_bundling="true" view_ack_collection_timeout="5000"/> | <FRAG2 frag_size="60000"/> | <pbcast.STREAMING_STATE_TRANSFER use_reading_thread="true"/> | <!-- <pbcast.STATE_TRANSFER/> --> | <pbcast.FLUSH timeout="0"/> | </config> | </attribute> | <!-- | Whether or not to fetch state on joining a cluster | NOTE this used to be called FetchStateOnStartup and has been renamed to be more descriptive. | --> | <attribute name="FetchInMemoryState">true</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">15000</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> | <!-- | Indicate whether to use region based marshalling or not. Set this to true if you are running under a scoped | class loader, e.g., inside an application server. Default is "false". | --> | <attribute name="UseRegionBasedMarshalling">true</attribute> | </mbean> | </server> | Any hints or pointers would be appreciated. Thanks View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4122835#4122835 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4122835 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
