I have had this issue for a while now, and I'm hoping that someone can help me with this. I have a java class that connects to a queue using the jmx QueueBrowser api. I used its getEnumeration() method in order to iterate through the messages on a Weblogic queue as this is the only way that is provided. The messages are returned in the way a queue works (FIFO).

Questions:
--------------------
1. Is there a way to iterate through this Enumeration starting from the last message on published to the queue, essentially working with it as if it were a stack and not a queue?

2. Is there a way to get the total size of the Enumeration without first converting it to a Collection? Note: I tried the code below and it killed the performance of my application to the point where it was not usable (takes an extremely long time to do this conversion).

3. Is there a way to start iterating through an Enumeration at a certain spot (not at the first element)? I tried to convert it to a collection first, but performance is a major issue (see #2 above). I'd like to be able to return messages 1-50 to the caller, and then 51-100, and so on based on the caller's request. Right now, I can only return the first n items and that's it.

Enumerations don't have a size as they don't contain anything. You can get the size of the container, but an enumeration is essentially a const(in terms of the refrence not the object) iterator. Its responsibiliy is to know where the next item is. If you have a handle to the container being iterated I would suggest checking to see if it has a size method (most do).

But I guess you should be getting the collection in the first place
this looks like some backwards operation of creating collection from enumeartion again:
List<BrowserVO> messagesList = Collections.list(queueBrowser.getEnumeration());

Thanks for your responses but you are right, this is still an issue. My requirement will not allow me to consume the messages (only browse them). Since I am using a WebLogic Server, I'm thinking that I might be able to access the JMS MBean to get this information. I'm still looking for some code.

Thanks for_yan for your comments. I ended up solving the count issue with an MBean implementation. Please see the code below. I will award you the full points for your persistent attempts.

CEHJ - I'm not sure what you mean by "enumerate with the Enumeration". I was not asking how to enumerate over the Enumeration. If you take a look at the code I originally posted, you will see that I am doing exactly that (iterating through the first fifty messages and incrementing a counter along the way). The issue with this is that it requires me to iterate through all the messages...takes too long.

Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java.
Define …

Viewers will learn one way to get user input in Java.
Introduce the Scanner object:
Declare the variable that stores the user input:
An example prompting the user for input:
Methods you need to invoke in order to properly get user input: