I have this code: DAOClassLoader d = new DAOClassLoader(); Object o = d.loadClass("security.to.ActionTO").newInstance(); System.out.println(o); ActionTO u = (ActionTO)o; u.setDescription("descripcion"); System.out.println(u);
The ActionTO is a simple TO object whit their get and sets and the loadClass is: package infraestructure.utils; import java.io.FileInputStream; import java.util.Hashtable; public class DAOClassLoader extends ClassLoader { private Hashtable classes = new Hashtable(); private byte getClassFromFile(String className)[] { System.out.println("Fetching the implementation of " + className); byte result[]; try { String file = "/home/esteban/workspace/security/web/WEB-INF/classes/" + className; file = file.replaceAll("\\.", "/") + ".class"; System.out.println("Trataremos con " + file + "..."); FileInputStream fi = new FileInputStream(file); System.out.println("FileInputStream: " + fi); result = new byte[fi.available()]; fi.read(result); return result; } catch (Exception e) { e.printStackTrace(); return null; } } @SuppressWarnings("unchecked") public Class loadClass(String className) throws ClassNotFoundException { return (loadClass(className, true)); } @SuppressWarnings("unchecked") public synchronized Class loadClass(String className, boolean resolveIt) throws ClassNotFoundException { Class result; byte classData[]; System.out.println("Load class : " + className); System.out.println("cache : "); /* Check our local cache of classes */ result = (Class) classes.get(className); if (result != null) { System.out.println("returning cached result."); return result; } try { result = super.findSystemClass(className); System.out .println("returning system class (in CLASSPATH)."); return result; } catch (ClassNotFoundException e) { System.out.println("Not a system class."); } System.out.println("repositorio "); classData = getClassFromFile(className); if (classData == null) { throw new ClassNotFoundException(); } /* Define it (parse the class file) */ result = this.defineClass(null, classData, 0, classData.length); if (result == null) { throw new ClassFormatError(); } if (resolveIt) { resolveClass(result); } classes.put(className, result); System.out.println("Returning newly loaded class."); return result; } } When I run the code in the console work fine, put when I run in a jsp I have this: type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: security.to.ActionTO org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause java.lang.ClassCastException: security.to.ActionTO security.administration.Authorization.<init>(Authorization.java:51) org.apache.jsp.admin.login_jsp._jspService(login_jsp.java:49) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.0 logs. and the log is: 2006-05-12 14:02:42 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception java.lang.ClassCastException: security.to.ActionTO at security.administration.Authorization.<init>(Authorization.java:46) at org.apache.jsp.admin.login_jsp._jspService(login_jsp.java:49) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) I configure tomcat with: # Use the Java security manager? (yes/no) TOMCAT5_SECURITY=no to rule out the security system like a problem. If I comment the code: ActionTO u = (ActionTO)o; work 'fine' (fine is like 'just run'). Anyone have any idea? Thanks. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]