Está usted en Indice > Construcción > Lenguajes > Java > Lecciones y Paso a Paso > Obtener información de clases Java en aplicaciones web
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Obtener información de clases Java en aplicaciones web

Introducción

En nuestro que hacer diario en Autentia, nos encontramos en multitud de ocasiones con problemas de carga de clases en Java. Estos problemas suelen dar lugar a excepciones de tipo ClassNotFoundException, NoSuchMethodError, etc., y son bastante difíciles de diagnosticar (sobre todo en entornos JEE donde se suele usar una jerarquía de ClassLoaders compleja).

Para estos casos, os proponemos el uso de la siguiente página JSP (compatible con JRE1.4) en la que se vuelca toda la información disponible mediante reflexión sobre la clase que se pida. Consiste en un formulario donde se debe escribir el nombre completo cualificado de la clase. Al pulsar el botón, el servidor nos devolverá una información exhaustiva de la clase: en que JAR se encuentra, su ClassLoader, interfaces que implementa, clases internas, campos, constructores y métodos.

Hale ¡A disfrutarlo¡

Código fuente
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.lang.reflect.*" %>
<%@page import="java.net.*" %>
<%@page import="java.io.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%!
public String getPathToClassOrJar( Class clazz )
{
String cn = "/" + clazz.getName();
cn = cn.replace('.', '/');
cn += ".class";
URL url = clazz.getResource(cn);
String path = url.getPath();
return path;
}

public void putInfo( JspWriter out, String key, String value ) throws IOException
{
out.println("<tr><td style='border-bottom: 1px solid #707070' nowrap><b>"+key+"</b></td><td
style='border-bottom: 1px solid #707070'>"+value+"</td></tr>");
}
%>

<%
String cmd = request.getParameter("cmd");
String className = request.getParameter("class");

if( cmd==null ) cmd = "";
if( className==null ) className = "";
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Class Info</title>
</head>
<body>

<h1>Class Info</h1>

<form method="post">
Type the fully qualified name of a class (example: java.lang.String) for which you want
to get info:<br/>
<input type="text" name="class" value="<%=className%>" size="128"/><br/><br/>
<input type="submit" name="cmd" value="Get class info"/><br/>
</form>

<%
if( !cmd.equals("") )
{
out.println( "<h1>Information for class <i>"+className+"</i>:</h1>" );

out.println( "<table>" );
try
{
Class clazz = Class.forName(className);

String location = getPathToClassOrJar(clazz);
putInfo( out, "Class location:", location );

ClassLoader loader = clazz.getClassLoader();
if( loader == null ){
putInfo( out, "Class loader:", ClassLoader.getSystemClassLoader().toString() );
} else {
putInfo( out, "Class loader:", loader.toString() );
}

Class[] ifaces = clazz.getInterfaces();
for( Class iface : ifaces )
{
putInfo( out, "Implemented interface:", iface.getName() );
}

Class[] inners = clazz.getDeclaredClasses();
for( Class inner : inners )
{
putInfo( out, "Inner class:", inner.getName() );
}

Field[] fields = clazz.getDeclaredFields();
for( Field field : fields )
{
putInfo( out, "Field:", field.toString() );
}

Constructor[] ctors = clazz.getConstructors();
for( Constructor ctor : ctors )
{
putInfo( out, "Constructor:", ctor.toString() );
}

Method[] methods = clazz.getDeclaredMethods();
for( Method method : methods )
{
putInfo( out, "Method:", method.toString() );
}
}
catch( ClassNotFoundException e )
{
putInfo( out, "Class not found.", "" );
}
catch( Throwable e )
{
putInfo( out, "Error analyzing class:", e.toString() );
}
out.println( "</table>" );
}
%>

</body>
</html>




Autor: adictosaltrabajo.com
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=clsinfo

Usuarios que han visto este tema también han visto...

- Crear un Proyecto Web J2EE con un módulo Web
- Clonación de objetos en Java
- Tomcat, Java y PostgreSQL
- La clase ArrayList en Java
- Paso de parámetros a funciones Java


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 08-10-2008 a las 01:28:37