2 Replies Latest reply on Jan 10, 2007 5:29 AM by Tim Fox

    Full JMX functionality

    Tim Fox Master

      I have fleshed out the ServerPeer, Queue and Topic MBean interfaces so now we have complete equivalent JMX functionality to JBossMQ.

      I also sorted out the mess that was the Queue/Topic mbean interface

      There's basically a whole stack of new stuff in here:

      public interface ServerPeerMBean
      {
       // JMX attributes
      
       int getServerPeerID();
      
       String getJMSVersion();
      
       int getJMSMajorVersion();
      
       int getJMSMinorVersion();
      
       String getJMSProviderName();
      
       String getProviderVersion();
      
       int getProviderMajorVersion();
      
       int getProviderMinorVersion();
      
       String getDefaultQueueJNDIContext();
      
       String getDefaultTopicJNDIContext();
      
       void setSecurityDomain(String securityDomain) throws Exception;
      
       String getSecurityDomain();
      
       void setDefaultSecurityConfig(Element conf) throws Exception;
      
       Element getDefaultSecurityConfig();
      
       ObjectName getPersistenceManager();
      
       void setPersistenceManager(ObjectName on);
      
       ObjectName getPostOffice();
      
       void setPostOffice(ObjectName on);
      
       ObjectName getJmsUserManager();
      
       void setJMSUserManager(ObjectName on);
      
       ObjectName getDefaultDLQ();
      
       void setDefaultDLQ(ObjectName on);
      
       ObjectName getDefaultExpiryQueue();
      
       void setDefaultExpiryQueue(ObjectName on);
      
      
       int getQueuedExecutorPoolSize();
      
       void setQueuedExecutorPoolSize(int poolSize);
      
       long getFailoverStartTimeout();
      
       void setFailoverStartTimeout(long timeout);
      
       long getFailoverCompleteTimeout();
      
       void setFailoverCompleteTimeout(long timeout);
      
       int getDefaultMaxDeliveryAttempts();
      
       void setDefaultMaxDeliveryAttempts(int attempts);
      
       long getQueueStatsSamplePeriod();
      
       void setQueueStatsSamplePeriod(long newPeriod);
      
       long getDefaultRedeliveryDelay();
      
       void setDefaultRedeliveryDelay(long delay);
      
       int getDefaultMessageCounterHistoryDayLimit();
      
       void setDefaultMessageCounterHistoryDayLimit(int limit);
      
       // JMX operations
      
       String createQueue(String name, String jndiName) throws Exception;
      
       String createQueue(String name, String jndiName, int fullSize, int pageSize, int downCacheSize) throws Exception;
      
       boolean destroyQueue(String name) throws Exception;
      
       String createTopic(String name, String jndiName) throws Exception;
      
       String createTopic(String name, String jndiName, int fullSize, int pageSize, int downCacheSize) throws Exception;
      
       boolean destroyTopic(String name) throws Exception;
      
       Set getDestinations() throws Exception;
      
       List getMessageCounters() throws Exception;
      
       List getMessageStatistics() throws Exception;
      
       String listMessageCountersAsHTML() throws Exception;
      
       void resetAllMessageCounters();
      
       void resetAllMessageCounterHistories();
      
       List retrievePreparedTransactions();
      
       String showPreparedTransactionsAsHTML();
      }
      
      public interface DestinationMBean
      {
       // JMX attributes
      
       String getName();
      
       String getJNDIName();
      
       void setJNDIName(String jndiName) throws Exception;
      
       ObjectName getServerPeer();
      
       void setServerPeer(ObjectName on);
      
       ObjectName getDLQ();
      
       void setDLQ(ObjectName on) throws Exception;
      
       ObjectName getExpiryQueue();
      
       void setExpiryQueue(ObjectName on) throws Exception;
      
       long getRedeliveryDelay();
      
       void setRedeliveryDelay(long delay);
      
       int getMaxSize();
      
       void setMaxSize(int maxSize) throws Exception;
      
       Element getSecurityConfig();
      
       void setSecurityConfig(Element securityConfig) throws Exception;
      
       int getFullSize();
      
       void setFullSize(int fullSize);
      
       int getPageSize();
      
       void setPageSize(int pageSize);
      
       int getDownCacheSize();
      
       void setDownCacheSize(int downCacheSize);
      
       boolean isClustered();
      
       void setClustered(boolean clustered);
      
       boolean isCreatedProgrammatically();
      
       int getMessageCounterHistoryDayLimit();
      
       void setMessageCounterHistoryDayLimit(int limit) throws Exception;
      
       // JMX operations
      
       void removeAllMessages() throws Exception;
      
      }
      
      ublic interface QueueMBean
      {
       // JMX attributes
      
       int getMessageCount() throws Exception;
      
       int getScheduledMessageCount() throws Exception;
      
       MessageCounter getMessageCounter();
      
       MessageStatistics getMessageStatistics() throws Exception;
      
       int getConsumerCount() throws Exception;
      
       // JMX operations
      
       void resetMessageCounter();
      
       void resetMessageCounterHistory();
      
       List listAllMessages() throws Exception;
      
       List listAllMessages(String selector) throws Exception;
      
       List listDurableMessages() throws Exception;
      
       List listDurableMessages(String selector) throws Exception;
      
       List listNonDurableMessages() throws Exception;
      
       List listNonDurableMessages(String selector) throws Exception;
      
       String getMessageCounterAsHTML();
      
       String getMessageCounterHistoryAsHTML();
      }
      
      public interface TopicMBean
      {
       //JMX attributes
      
       int getAllMessageCount() throws Exception;
      
       int getDurableMessageCount() throws Exception;
      
       int getNonDurableMessageCount() throws Exception;
      
       int getAllSubscriptionsCount() throws Exception;
      
       int getDurableSubscriptionsCount() throws Exception;
      
       int getNonDurableSubscriptionsCount() throws Exception;
      
       // JMX operations
      
       void removeAllMessages() throws Exception;
      
       List listAllSubscriptions() throws Exception;
      
       List listDurableSubscriptions() throws Exception;
      
       List listNonDurableSubscriptions() throws Exception;
      
       String listAllSubscriptionsAsHTML() throws Exception;
      
       String listDurableSubscriptionsAsHTML() throws Exception;
      
       String listNonDurableSubscriptionsAsHTML() throws Exception;
      
       List listAllMessages(String subscriptionId) throws Exception;
      
       List listAllMessages(String subscriptionId, String selector) throws Exception;
      
       List listDurableMessages(String subscriptionId) throws Exception;
      
       List listDurableMessages(String subscriptionId, String selector) throws Exception;
      
       List listNonDurableMessages(String subscriptionId) throws Exception;
      
       List listNonDurableMessages(String subscriptionId, String selector) throws Exception;
      
       List getMessageCounters() throws Exception;
      }
      
      



        • 1. Re: Full JMX functionality
          Elias Ross Master

          What are the types for the List objects? If JBM requires JDK 1.5 it would be good to include them in the interface file.

          • 2. Re: Full JMX functionality
            Tim Fox Master

            For listing subscriptions it returns a list of SubscriptionInfo objects, which are basically value objects holding subscription related data.

            For listing messages, it currently just returns the actual message objects. I was thinking whether to create value objects for the messages too, but I'm not sure.

            Currently the caller will have to include the JBM jar on the caller side - not sure how putting in the interface file would help - can you elucidate?