JBoss application classloaders leak because of unclosed EJBReceiverContexts and EJBClientContexts

Solution Verified - Updated

Environment

  • JBoss Enterprise Application Platform (EAP) 6.x

Issue

  • Classloaders for our application leak across redeploys leading to a PermGen OOME when the application defines a client context in its jboss-ejb-client.xml:
    <client-context>
        <ejb-receivers>
            <remoting-ejb-receiver outbound-connection-ref="remote-ejb-connection" />
        </ejb-receivers>        
    </client-context>

Resolution

  • Await a forthcoming fix in a later release

Diagnostic Steps

  • Identify any application classloaders in your heap dump with the below Eclipse MAT OQL and check if they are persisted by EJB receiver and client contexts:
SELECT module.identifier.name.value.toString() FROM org.jboss.modules.ModuleClassLoader WHERE (module.identifier.name.value.toString() LIKE "deployment.*")
Components
Category

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.