[jboss-user] [Installation, Configuration & DEPLOYMENT] - Help! JBoss 4.0.5, Log4J, and PojoCache

joe_shabadoo do-not-reply at jboss.com
Wed Jan 23 17:56:26 EST 2008


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



More information about the jboss-user mailing list