The program violates the Enterprise JavaBeans specification by using the class loader.
The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container [1].
In this case, the program violates the following EJB guideline:
"The enterprise bean must not attempt to create a class loader; obtain the current class loader; set the context class loader; set security manager; create a new security manager; stop the JVM; or change the input, output, and error streams."
A requirement that the specification justifies in the following way:
"These functions are reserved for the EJB container. Allowing the enterprise bean to use these functions could compromise security and decrease the container's ability to properly manage the runtime environment."
[1] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 578
[2] The Enterprise JavaBeans 2.1 Specification Sun Microsystems