14 Replies Latest reply on Apr 27, 2005 8:04 AM by nperidont

    JDBCCacheLoader feature

    lac_raz

      Is there a posibility to map existing tables
      to JDBCCachLoader ?
      In the documentation I saw just the posibility to
      create new tables according to your nodes .

        • 1. Re: JDBCCacheLoader feature
          belaban

          Yes, look into the documentation (http://docs.jboss.org/jbcache/current/TreeCache/html/) or the javadoc for JDBCCacheLoader

          • 2. Re: JDBCCacheLoader feature
            lac_raz

            Thanks for your reply :-)
            So lets say I have table named USER , with columns PHONE_NUMBER
            , ADDRESS and ID (as key).

            Then the CacheLoaderConfig will look like this ?


            cache.jdbc.table.name=USER
            cache.jdbc.table.create=true
            cache.jdbc.table.drop=true
            cache.jdbc.fqn.column=ID
            cache.jdbc.fqn.type=varchar(255)
            cache.jdbc.node.column=PHONE_NUMBER
            cache.jdbc.node.type=VARCHAR(10)
            cache.jdbc.node.column=ADDRESS
            cache.jdbc.node.type=VARCHAR(10)
            cache.jdbc.parent.column=parent

            • 3. Re: JDBCCacheLoader feature
              belaban

              looks right, I wouldn't drop the table though

              • 4. Re: JDBCCacheLoader feature
                lac_raz

                10x :-)

                I need to retrieve values from my Data Source into the cache
                every 5 minutes (because my DataSource is changed from other source) .

                Can I configure this in my xml configuration file ?

                • 5. Re: JDBCCacheLoader feature
                  belaban

                  No, but I will add a method soon to configure JDBCCacheLoader from a DataSource. You'd be able to set it every 5 minutes I guess

                  • 6. Re: JDBCCacheLoader feature
                    lac_raz

                    Great !!! :-)

                    will it be on 1.3 release ?

                    • 7. Re: JDBCCacheLoader feature
                      belaban

                      Currently scheduled for 1.3, but it may spill over to 1.4, b/c this is a low priority issue

                      • 8. Re: JDBCCacheLoader feature
                        lac_raz

                        OK ,
                        I guess I can generate some workaround ....
                        Thanks :-)

                        • 9. Re: JDBCCacheLoader feature
                          belaban

                          Yes, I think you could easily create a subclass and fetch the data source from there

                          • 10. Re: JDBCCacheLoader feature
                            lac_raz

                            I tried to configure the JDBCCacheLoader with the next params :

                            org.jboss.cache.loader.JDBCCacheLoader
                            true
                            /
                            false
                            false

                            cache.jdbc.table.name=subscribers
                            cache.jdbc.fqn.column=MSISDN
                            cache.jdbc.fqn.type=VARCHAR2(15)
                            cache.jdbc.node.column=USER_SUB_ID1
                            cache.jdbc.node.type=VARCHAR2(30)
                            cache.jdbc.node.column=USER_SUB_ID2
                            cache.jdbc.node.type=VARCHAR2(30)
                            cache.jdbc.datasource=java:/OracleDS


                            and it threw the next exception :

                            2005-04-07 16:09:21,598 ERROR [org.jboss.cache.loader.JDBCCacheLoader] Failed to get children names for fqn /
                            java.sql.SQLException: ORA-00904: "PARENT": invalid identifier

                            why is that ?

                            • 11. Re: JDBCCacheLoader feature
                              belaban

                              Look into your table schema, check for a PARENT column

                              • 12. Re: JDBCCacheLoader feature
                                lac_raz

                                when using LRUPolicy as eviction policy I get the next exception :

                                Caused by: java.lang.NullPointerException
                                at org.jboss.cache.eviction.LRUPolicy.nodeVisited(LRUPolicy.java:100)
                                at org.jboss.cache.TreeCache.notifyNodeVisisted(TreeCache.java:3208)
                                at org.jboss.cache.TreeCache._get(TreeCache.java:1657)

                                I'm using JBoss 4.0.1

                                my config is :


                                jboss:service=Naming
                                jboss:service=TransactionManager

                                <!-- Use DefaultCache to bind the cache into JNDI. The proxy returned as part of the lookup can be used both
                                by local (e.g. servlet) and remote (e.g. RMI) clients -->
                                DBTablesCache


                                <!-- Configure the TransactionManager >
                                org.jboss.cache.JBossTransactionManagerLookup
                                -->
                                <!--
                                Node locking level : SERIALIZABLE
                                REPEATABLE_READ (default)
                                READ_COMMITTED
                                READ_UNCOMMITTED
                                NONE
                                -->
                                <!-- NONE -->

                                <!-- Valid modes are LOCAL
                                REPL_ASYNC
                                REPL_SYNC
                                -->
                                LOCAL

                                <!-- Name of cluster. Needs to be the same for all clusters, in order
                                to find each other -->
                                TreeCache-Cluster



                                <!-- 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="45566" 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" up_thread="false" down_thread="false"/>
                                <MERGE2 min_interval="10000" max_interval="20000"/>
                                <FD shun="true" up_thread="true" down_thread="true"/>
                                <VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false"/>
                                <pbcast.NAKACK gc_lag="50" max_xmit_size="8192" retransmit_timeout="600,1200,2400,4800" up_thread="false"
                                down_thread="false"/>
                                <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" down_thread="false"/>
                                <pbcast.STABLE desired_avg_gossip="20000" up_thread="false" down_thread="false"/>
                                <FRAG frag_size="8192" down_thread="false" up_thread="false"/>
                                <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="true" print_local_addr="true"/>
                                <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/>



                                <!-- The max amount of time (in milliseconds) we wait until the
                                initial state (ie. the contents of the cache) are retrieved from
                                existing members in a clustered environment
                                -->
                                5000

                                <!-- Number of milliseconds to wait until all responses for a
                                synchronous call have been received.
                                -->
                                10000

                                <!-- Max number of milliseconds to wait for a lock acquisition -->
                                15000

                                <!-- Name of the eviction policy class. -->
                                <!-- attribute name="EvictionPolicyClass">org.jboss.cache.eviction.AopLRUPolicy</attribute -->
                                org.jboss.cache.eviction.LRUPolicy

                                <!-- Specific eviction policy configurations. This is LRU -->


                                5
                                <!-- Cache wide default -->

                                5000
                                1000



                                10
                                0




                                <!-- Whether or not to fetch state on joining a cluster -->
                                true

                                org.jboss.cache.loader.JDBCCacheLoader
                                true
                                /
                                false
                                false

                                cache.jdbc.table.name=subscribers
                                cache.jdbc.fqn.column=MSISDN
                                cache.jdbc.fqn.type=VARCHAR2(15)
                                cache.jdbc.node.column=USER_SUB_ID1
                                cache.jdbc.node.type=VARCHAR2(30)
                                cache.jdbc.node.column=USER_SUB_ID2
                                cache.jdbc.node.type=VARCHAR2(30)
                                cache.jdbc.parent.column=MSISDN
                                cache.jdbc.datasource=java:/OracleDS


                                • 13. Re: JDBCCacheLoader feature
                                  lac_raz

                                  when using LRUPolicy as eviction policy I get the next exception :

                                  Caused by: java.lang.NullPointerException
                                  at org.jboss.cache.eviction.LRUPolicy.nodeVisited(LRUPolicy.java:100)
                                  at org.jboss.cache.TreeCache.notifyNodeVisisted(TreeCache.java:3208)
                                  at org.jboss.cache.TreeCache._get(TreeCache.java:1657)

                                  I'm using JBoss 4.0.1

                                  my config is :


                                  jboss:service=Naming
                                  jboss:service=TransactionManager

                                  <!-- Use DefaultCache to bind the cache into JNDI. The proxy returned as part of the lookup can be used both
                                  by local (e.g. servlet) and remote (e.g. RMI) clients -->
                                  DBTablesCache


                                  <!-- Configure the TransactionManager >
                                  org.jboss.cache.JBossTransactionManagerLookup
                                  -->
                                  <!--
                                  Node locking level : SERIALIZABLE
                                  REPEATABLE_READ (default)
                                  READ_COMMITTED
                                  READ_UNCOMMITTED
                                  NONE
                                  -->
                                  <!-- NONE -->

                                  <!-- Valid modes are LOCAL
                                  REPL_ASYNC
                                  REPL_SYNC
                                  -->
                                  LOCAL

                                  <!-- Name of cluster. Needs to be the same for all clusters, in order
                                  to find each other -->
                                  TreeCache-Cluster



                                  <!-- 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="45566" 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" up_thread="false" down_thread="false"/>
                                  <MERGE2 min_interval="10000" max_interval="20000"/>
                                  <FD shun="true" up_thread="true" down_thread="true"/>
                                  <VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false"/>
                                  <pbcast.NAKACK gc_lag="50" max_xmit_size="8192" retransmit_timeout="600,1200,2400,4800" up_thread="false"
                                  down_thread="false"/>
                                  <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" down_thread="false"/>
                                  <pbcast.STABLE desired_avg_gossip="20000" up_thread="false" down_thread="false"/>
                                  <FRAG frag_size="8192" down_thread="false" up_thread="false"/>
                                  <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="true" print_local_addr="true"/>
                                  <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/>



                                  <!-- The max amount of time (in milliseconds) we wait until the
                                  initial state (ie. the contents of the cache) are retrieved from
                                  existing members in a clustered environment
                                  -->
                                  5000

                                  <!-- Number of milliseconds to wait until all responses for a
                                  synchronous call have been received.
                                  -->
                                  10000

                                  <!-- Max number of milliseconds to wait for a lock acquisition -->
                                  15000

                                  <!-- Name of the eviction policy class. -->
                                  <!-- attribute name="EvictionPolicyClass">org.jboss.cache.eviction.AopLRUPolicy</attribute -->
                                  org.jboss.cache.eviction.LRUPolicy

                                  <!-- Specific eviction policy configurations. This is LRU -->


                                  5
                                  <!-- Cache wide default -->

                                  5000
                                  1000



                                  10
                                  0




                                  <!-- Whether or not to fetch state on joining a cluster -->
                                  true

                                  org.jboss.cache.loader.JDBCCacheLoader
                                  true
                                  /
                                  false
                                  false

                                  cache.jdbc.table.name=subscribers
                                  cache.jdbc.fqn.column=MSISDN
                                  cache.jdbc.fqn.type=VARCHAR2(15)
                                  cache.jdbc.node.column=USER_SUB_ID1
                                  cache.jdbc.node.type=VARCHAR2(30)
                                  cache.jdbc.node.column=USER_SUB_ID2
                                  cache.jdbc.node.type=VARCHAR2(30)
                                  cache.jdbc.parent.column=MSISDN
                                  cache.jdbc.datasource=java:/OracleDS


                                  • 14. Re: JDBCCacheLoader feature
                                    nperidont

                                    Hi,

                                    I get the same pb and afer looking at the source in cvs it seems that old version of TreeCache make the preload before configuring the LRUPolicy.
                                    And cause the npe.

                                    It seems to be corrected in the TreeCache.java revision 1.6 in cvs

                                    Try to update your TreeCache version

                                    Regards,
                                    Nicolas PERIDONT