listar librerias java del servidor

Con este comando listamos todas las librerias del servidor y quitamos la ruta, nos quedamos solo con el nombre del jar.

locate *.jar | sed 's/// /g' | sed '/[a-z]*.jar$/ s/[a-z]* //g' | sort

comando locate *.jar : busca todos los ficheros que acaben por .jar
comando sed ‘s/// /g’ : elimina la barra y la sustituye por ‘ ‘(espacio en blanco).
comando sed ‘/[a-z]*.jar$/ s/[a-z]* //g’ : de todas las lineas que cumplan el patrón (la linea termina por .jar) elimina cualquier elemento que contemple el patron (letras seguidas de un espacio). Es decir, elimino la ruta de los ficheros.

listar librerias java del servidor

Java UNICODE

Recientemente el eclipse ha dejado de convertir de UTF-8 a unicode mis properties de i18n. En lugar de intentar arreglarlo (acierto), me he puesto a configurar los acentos y eñes en los distintos lenguajes con los que trabajamos, a mano (error).

Aquí esta la tabla con los caracteres específicos del castellano.

Como no tengo tiempo a mas, aquí pongo unos blogs y tutoriales sobre como maneja Java el UNICODE:

Java UNICODE

MiniApplet 2.1 @firma firma de facturas

Es super sencillo, sin configuraciones de policies ni nada de nada.

		function saveSignatureCallback(signatureB64) {
			/* signatureB64 la firma */
			alert(signatureB64);
			/* Para fichero s de mas de 6 MB estos metodos devuelven null
			alert(MiniApplet.getTextFromBase64(signatureB64));
			alert(MiniApplet.getBase64FromText(signatureB64));
			*/
			/* Para guardar a fichero
			MiniApplet.saveDataToFile(
					signatureB64,
					"Guardar firma electru00F3nica",
					null,
					null,
					null);
			*/
		}
		
		function showLogCallback(errorType, errorMessage) {
			alert("Type: " + errorType + "nMessage: " + errorMessage);
		}
	
		function doSign() {
			try {
				var data = document.getElementById("data").value;
				
				alert(MiniApplet.getTextFromBase64(data));
				
				MiniApplet.sign(
					(data != undefined && data != null && data != "") ? data : null,
					'SHA1withRSA',
					'FacturaE',
					null,
					saveSignatureCallback,
					showLogCallback);
			
			} catch(e) {
				try {
					alert("Type: " + MiniApplet.getErrorType() + "nMessage: " + MiniApplet.getErrorMessage());
				} catch(ex) {
					alert("Error: " + e);
				}
			}
		}
<html>
	<head>
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
	        <script type="text/javascript" src="miniapplet.js"></script>
	        <script type="text/javascript">
                        // codigo anterior
	        </script>
	</head>
	<body>
		<script type="text/javascript">
			MiniApplet.cargarMiniApplet('file:///C:/@firma/bin/MiniApplet_v1_2/MiniApplet_v1_2/');
			// MiniApplet.checkTime(MiniApplet.CHECKTIME_RECOMMENDED, 60.000);
			// MiniApplet.setLocale("gl_ES");
		</script>
	</body>

dentro de file:///C:/@firma/bin/MiniApplet_v1_2/MiniApplet_v1_2/ hay los siguientes ficheros:

  • miniapplet_facturae.html. El que estoy mostrando
  • Originales (venian en el zip):
    • miniapplet_full.html.
    • miniapplet-full_1_2.jar
    • miniapplet.js
MiniApplet 2.1 @firma firma de facturas

Tomcat subir formularios de mas de 2MB

Recientemente necesitaba enviar a través del formulario una factura firmada. Las facturas no suelen ocupar mas de 100KB, pero cuando agregas adjuntos a la factura, este tamaño se puede incrementar hasta el infinito.

Estamos en el caso de un formulario normal, no un multipart. Para los multipart no hace falta nada de esta configuración. Los formularios multipart, son formularios de subida de ficheros, donde dentro del formulario existe un input del tipo «file». Yo necesitaba hacerlo transparente al usuario, que firme a través de la web y el proceso de grabado se realice sin mas interacción que la contraseña de su certificado.

El problema lo he tenido en dos sitios:

  • en el Applet de @firma. No puede firmar ficheros de mas de 2MB.
  • en el Tomcat, era incapaz de subir a traves del formulario ficheros de mas de 2MB.

Para estos dos problemas finalmente después de muchas horas de trabajo, he encontrado dos soluciones:

  • sustituir el Applet por el MiniApplet de @firma. Esta es una version mas reciente, mas rápida y eficiente, del cual no se cual es el limite máximo de ficheros a firmar, pero es bastante mas elevado. Creo que leí que estaba entorno a los 64MB. Pero seguro que depende de la capacidad de memoria y de procesamiento del ordenador cliente. El cambio no es nada doloroso.
  • en Tomcat y en la mayoría de servidores existe un máximo tanto para el GET como para el POST. Si bien el estándar no pone limites. En los navegadores, excluyendo Internet Explorer, para el POST no han puesto limite, pero si para el GET. En ambos casos se pretender prevenir un ataque de denegación de servicio.

Limite para el POST: en tomcat por defecto es de 2 MB. Para incrementarlo o dejarlo indefinido se utiliza el parametro: maxPostSize. En el manual de Tomcat, aparece como configurar este parámetro, debe ser configurado en bytes. Dentro de los Connectors.

    <Connector port="8080" protocol="org.apache.coyote.http11.Http11Protocol"
               connectionTimeout="20000"
               maxPostSize="2000000"
               redirectPort="8443" />

Opciones:

  • maxPostSize=»2000000″. 2MB por defecto, no hace falta indicarlo.
  • maxPostSize=»-1″. Ilimitado, también indican que se puede poner maxPostSize=»0″.
  • maxPostSize=»6000000″. 6MB aproximadamente.

¿En que conectores ponerlo?, en todos, en los HTTP y en los AJP que redirijen el trafico.

En el caso de que tengas un cluster de Tomcat’s con un Apache delante, quizás es necesario que indiques también esta capacidad al Apache, en el httpd.conf.

Tomcat subir formularios de mas de 2MB