I have the same problem using 2.4.4 with catalina 4.0.1.
Is there a solution ?
Jetty or Tomcat ?
Think of the EAR classloader(s) as a triangle that can only look up. At the top is your library files referenced by the EJB's manifest.mf classpath (if needed) - these are the "utility" or "helper" classes, and are common to both the EJB's and the Web application. The bottom left of the triangle is the EJB class loader, and if memory serves me correctly, the interfaces are exported up to the top of the triangle, so both EJB's and Web Apps can find the classes. The bottom right of the triangle is the Web App - this is where the classes or library files from the WEB-INF directory get exported. If the factory is in the EJB, it has no visibility into the WEB area. If you want the factory to instance another class, the factory must be in the same, or lower class loader than the instanced class. Thus if the factory is in the utility or EJB area, it will not have visibility down into the WEB area. Hope this helps a little ...