Noticias Weblogs Foros Wiki Código

RecorteX

» java
458 usuarios y 235 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta java

RSS
Recortes: 22

Etiquetas relacionadas:
jdbc
xml
hanoi
torres
consola
juego
fechas
tomcat
sql
Look_and_feel
ssl
base-datos
URL
planificador
descargar
StringBuffer
jstl
bd
utilidades
ReplaceAll
documento
tarea
byte
Skin
leer
certificados

Ejecutar un proceso cada cierto tiempo en un contenedor de servlets (tomcat)

Se implementa como un Listener de aplicación:
 
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import java.util.TimerTask;
import java.util.Timer;
 
public class Tarea extends TimerTask implements ServletContextListener {
    private Timer timer;
 
    public void contextInitialized(ServletContextEvent evt) {
        // Iniciamos el timer
        timer = new Timer();
        timer.schedule(this, 0, 10*60*1000);  // Ejemplo: Cada 10 minutos
    }
 
    public void contextDestroyed(ServletContextEvent evt) {
        timer.cancel();
    }
    
    public void run() {
        // Aquí el código a ejecutar cada cierto tiempo
    }    
}
 
Finalmente hay que añadir el listener al fichero web.xml de la aplicación. Ejemplo:
 
<web-app>
  <listener>
    <listener-class>Tarea</listener-class>
  </listener>
</web-app>
 

Obtener el primer día del próximo mes en Java

El siguiente código tiene en cuenta los cambios de año, etc.
 
java.util.Calendar cal=java.util.GregorianCalendar.getInstance();
cal.setLenient(true);
cal.add(java.util.Calendar.MONTH, 1);
cal.set(java.util.Calendar.DAY_OF_MONTH, 1);
 
// Ahora lo imprimimos
java.text.SimpleDateFormat format=new java.text.SimpleDateFormat("dd/MM/yyyy");
System.out.println(format.format(new java.util.Date(cal.getTimeInMillis())));
 

Leer un String de un Blob

Método para leer un String que por necesidades de tamaño se introduce en un blob. Al método se le pasa el resultSet y el nombre del campo en el que se encuentra el blob.
 
 
    public String leerBlob(ResultSet rs,String blob){
        String returndata="";
        ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
        BufferedInputStream bis;
        try {
            bis = new BufferedInputStream(rs.getBinaryStream(blob));
            byte[] bindata=new byte[1024];
            int bytesread = 0;
            try {
                if ( !rs.wasNull() ) {
                    if ( (bytesread = bis.read(bindata,0,bindata.length)) != -1 ) {
                        baos.write(bindata,0,bytesread);
                        returndata= baos.toString();
                    }
                    bis.close();
                }
            } catch (IOException e) {
                System.out.println("leerBlob -- Se produjo un error en la consulta");
                System.out.println(e.getMessage());
            }
        } catch (SQLException ex) {
            System.out.println("leerBlob -- Se produjo un error en la consulta");
            System.out.println(ex.getMessage());
        }
        return returndata;
    }
 

Distancia entre dos Puntos

Escribe aquí el texto
 
import javax.swing.JOptionPane;
import java.lang.Math;
import java.text.DecimalFormat;
 
public class Distancia{
 
	public static void main(String[] args){
		String x1 = JOptionPane.showInputDialog("Ingresa un x1:");
		String y1 = JOptionPane.showInputDialog("Ingresa un y1:");
	        String x2 = JOptionPane.showInputDialog("Ingresa un número x2:");
	        String y2 = JOptionPane.showInputDialog("Ingresa un número y2:");
		
                JOptionPane.showMessageDialog(null,CalculaDistancia(x1,y1,x2,y2),
                         "Distancia entre dos Puntos",JOptionPane.PLAIN_MESSAGE);  
	}
	public static String CalculaDistancia(String x_1, String y_1,String x_2, String y_2){
 
	    double cordX1 = Double.valueOf(x_1).doubleValue();
            double cordY1 = Double.valueOf(y_1).doubleValue();
            double cordX2 = Double.valueOf(x_2).doubleValue();
            double cordY2 = Double.valueOf(y_2).doubleValue();
 	    double respuesta = Math.sqrt( Math.pow ((cordX2-cordX1),2) + Math.pow((cordY2-cordY1),2));
 	    DecimalFormat dosdecimales = new DecimalFormat("0.00");
 	    String resultado = "La Distacia es: " + dosdecimales.format(respuesta);
	    return resultado;
	   }
}
 

Obtener un DataSource de Tomcat

 
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DB");
 
Luego hay que definir dicha base de datos DB en el contexto de la aplicación web. Ejemplo:
 
<Context path="/aplicacion" docBase="aplicacion">
    <Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/DB">
        <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
	</parameter>
	<parameter>
            <name>driverClassName</name>
            <value>com.mysql.jdbc.Driver</value>
	</parameter>
	<parameter>
            <name>url</name>
            <value>jdbc:mysql://host/database?autoReconnect=true</value>
	</parameter>
	<parameter>
            <name>username</name>
            <value>usuario</value>
	</parameter>
	<parameter>
            <name>password</name>
            <value>clave</value>
	</parameter>
	<parameter>
            <name>maxActive</name>
            <value>30</value>
	</parameter>
	<parameter>
            <name>maxIdle</name>
            <value>10</value>
	</parameter>
	<parameter>
            <name>maxWait</name>
            <value>10000</value>
	</parameter>
        <parameter>
            <name>removeAbandoned</name>
            <value>true</value>
        </parameter>
        <parameter>
            <name>logAbandoned</name>
            <value>true</value>
        </parameter>                        
    </ResourceParams>
</Context>
 

Obtener el último día de un mes

Se crea un GregorianCalendar con el día 1 del mes y se utiliza la función getActualMaximum.
 
Calendar cal = GregorianCalendar.getInstance();
cal.set(2006, 1, 1); // Febrero 2006, los meses empiezan en 0.
System.out.println("Último día: " + cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
 

Devolver un documento pdf desde un servlet

Antes de enviar el documento (sus bytes) hay que fijar el content-type del resultado.
 
response.setContentType("application/pdf");
 
Si se desea también se puede fijar un nombre de fichero:
 
response.setHeader("Content-Disposition", "attachment; filename=\"nombre_fichero.pdf\"");
 

Obtener el DN de un certificado digital

En java:
 
java.security.cert.X509Certificate certificados[]=(java.security.cert.X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
String dn=certificados[0].getSubjectDN().toString();
 

Convertir un ResultSet a XML

Esta función convierte un ResultSet en formato XML y lo imprime.
 
public void rs2xml(ResultSet rs,
                  String tabla,
                  String elemento,
                 java.io.Writer out) throws java.io.IOException, SQLException {
    ResultSetMetaData rsmd=rs.getMetaData();
    out.write("<"+tabla+">\n");
    while (rs.next()) {
        out.write("    <"+elemento+">\n");
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
           out.write("        <"+rsmd.getColumnLabel(i).toLowerCase()+"><![CDATA[");
           String var=rs.getString(i);
           if (var!=null) {
                out.write(var);
           }
           out.write("]]></"+rsmd.getColumnLabel(i).toLowerCase()+">\n");
        }
        out.write("    </"+elemento+">\n");
    }
    out.write("</"+tabla+">\n");        
}
 
Recibe el ResultSet, el nombre que le queremos dar al elemento XML root y el nombre que le queremos dar al elemento XML de cada registro.

Leer un fichero de properties que se encuentra en el CLASSPATH

El siguiente código carga un fichero de properties que se encuentra en algún sitio del CLASSPATH.
 
URL confURL = $Clase$.class.getClassLoader().getResource("fichero.properties");
if (confURL == null) {
    confURL = ClassLoader.getSystemResource("fichero.properties");
} 
Properties confProp=new Properties();
confProp.load(confURL.openStream());
 
Sustituir $Clase$ por el nombre de la clase que contiene este código.
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin - Información legal y técnica