From: Sacha L. <sac...@co...> - 2001-05-08 22:31:59
|
Hello, Sorry to insist on this topic... but it is late and I think it is really strange. In org.jboss.ejb.ContainerFactory.deploy (line 342 and around), we have this: // create the _real_ classloader for this app ClassLoader cl = new URLClassLoader( jarUrls, Thread.currentThread().getContextClassLoader() ); app.setClassLoader( cl ); for( int i = 0; i < jarUrls.length; i++ ) deploy( app, jarUrls[ i ], cl ); // Init application app.init(); // Start application app.start(); // Add to webserver so client can access classes through dynamic class downloading WebServiceMBean webServer = (WebServiceMBean) BeanProxy.create( WebServiceMBean.class, WebServiceMBean.OBJECT_NAME ); webServer.addClassLoader( cl ); => - a new classloader is created for the application - each jar of the application is deployed thanks to this newly created CL - the webserver is extended with our new CL so that it is able to also provide this application classes BUT when we deploy an application through the deploy directory, jarUrls will point to a *file* URL (e.g. /c:/jboss/tmp/deploy/default/myBean.jar). Consequently, when the RMI engine will create the home and remote stub, it will set its codebase to the URLClassLoader URL and *not* to the webService URL. => the client, potentially located on another host, will try to download the missing class from a *file path* that does not exist on its system and not from a http URL (the one of our webservicembean) Please, tell me that I am wrong... it kills me... ;) Thank you. Cheers, Sacha |