For what you're doing, I think an MDB is the wrong strategy. What an MDB is for is for processing a single message, I don't even know if consuming additional messages from JMS via the MDB is even allowed by the spec.
Create yourself a QueueSession and a hash table made up of correlation IDs as keys, lists of Messages as values. Read each message, put each message in the table as you read it.
Correlation ID is used for finding a /single/ message which is a response, not multiple responses. And how do you know all responses exist? JMSXGroupID and JMSXGroupSeq seem like better properties to use.