Index: murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java
===================================================================
--- murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java	(revision 0c30a25aef94cc70815a686d50d4e1f3fb53a9c5)
+++ murachi/src/main/java/ve/gob/cenditel/murachi/MurachiRESTWS.java	(revision a2d4c86cd432f46bcfcd728dfb70f75f654bc015)
@@ -1460,4 +1460,8 @@
 		String result = "";
 		if (presignPar == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("solicitud mal formada.");
 			result = "\"error\":\"solicitud mal formada\"";
@@ -1468,4 +1472,8 @@
 		String fileId = presignPar.getFileId();
 		if (fileId == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.debug("fileId == null");
 			logger.error("solicitud mal formada: no esta especificado el identificador del archivo PDF.");
@@ -1478,4 +1486,8 @@
 		String certHex = presignPar.getCertificate();
 		if (certHex == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.debug("certHex == null");
 			logger.error("solicitud mal formada: no esta especificado el certificado del firmante en hexadecimal.");
@@ -1488,4 +1500,8 @@
 		String reason = presignPar.getReason();
 		if (reason == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.debug("certHex == null");
 			logger.error("solicitud mal formada: no esta especificada la razon de la firma.");
@@ -1498,4 +1514,8 @@
 		String location = presignPar.getLocation();
 		if (location == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.debug("location == null");
 			logger.error("solicitud mal formada: no esta especificada la ubicación donde se realiza la firma.");
@@ -1508,4 +1528,8 @@
 		String contact = presignPar.getContact();
 		if (contact == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.debug("contact == null");
 			logger.error("solicitud mal formada: no esta especificada la informacion de contacto del firmante.");
@@ -1518,4 +1542,8 @@
 		Boolean signatureVisible = presignPar.getSignatureVisible(); 
 		if (signatureVisible == null) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.debug("signatureVisible == null");
 			logger.error("solicitud mal formada: no esta especificado si la firma PDF es visible o no.");
@@ -1536,4 +1564,7 @@
 			presignHash.setHash("");
 			//return presignHash;
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
 									
 			//result = presignHash.toString();
@@ -1553,4 +1584,7 @@
 				logger.error("presignPdf: error en carga de certificado de firmante");
 				//throw new MurachiException("presignPdf: error en carga de certificado de firmante");
+				
+				// registrar error de firma en estadisticas
+				registerASignatureError(0);
 				
 				presignHash.setError("error en carga de certificado de firmante");
@@ -1674,4 +1708,8 @@
 			
 		} catch (CertificateException e1) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e1);
 			e1.printStackTrace();
@@ -1682,4 +1720,8 @@
 			
 		} catch (InvalidPdfException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			e.printStackTrace();
@@ -1691,4 +1733,8 @@
 			
 		} catch (IOException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			e.printStackTrace();
@@ -1700,4 +1746,8 @@
 			
 		} catch (DocumentException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			e.printStackTrace();
@@ -1709,4 +1759,8 @@
 			
 		} catch (InvalidKeyException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			//e.printStackTrace();
@@ -1718,4 +1772,8 @@
 			
 		} catch (NoSuchProviderException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			//e.printStackTrace();
@@ -1727,4 +1785,8 @@
 			
 		} catch (NoSuchAlgorithmException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			//e.printStackTrace();
@@ -1736,4 +1798,8 @@
 			
 		} catch (GeneralSecurityException e) {
+			
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+			
 			logger.error("presignPdf ocurrio una excepcion ", e);
 			//e.printStackTrace();
@@ -1870,5 +1936,5 @@
 			logger.debug("signature == null");
 			logger.error("solicitud mal formada: no esta especificada la firma realizada en el cliente.");
-			result = "\"error\":\"solicitud mal formada: : no esta especificado el identificador del archivo PDF\"";
+			result = "\"error\":\"solicitud mal formada: no esta especificado el identificador del archivo PDF\"";
 			return Response.status(400).entity(result).build();
 		}
@@ -1876,4 +1942,15 @@
 		
 		HttpSession session = req.getSession(false);
+		
+		if (session == null) {
+			// registrar error de firma en estadisticas
+			registerASignatureError(0);
+						
+			logger.debug("session == null");
+			logger.error("HTTPSession es null");
+			result = "\"error\":\" Sesion HTTPSession es null.\"";
+			return Response.status(500).entity(result).build();
+		}
+		
 		
 		String fileId = (String) session.getAttribute("fileId");
