We are not throwing the correct exception (IllegalStateException) for these methods when used inappropriately ie attempting to call createDurableSubscriber on a QueueSession. Instead we are simply allowing the CCE to bubble up. The JMS/JCA adapter needs to be reworked to allow for this.
This is not a classloading issue.
The real issue is that we attempt to cast the underlying Session depending upon the method (queue or topic API). According to the JMS spec, it is the provider that should be throwing the IllegalStateException not necessarily us. The problem is, the JCA adapter never lets things get this far and results in a CCE.