lunes, 7 de marzo de 2011

Capturando una excepción en Java (08.02.02)

Este ejemplo convierte una cadena en un entero

int cantidad;
String cadena = "5";
try {
    cantidad = Integer.parseInt(cadena);
}
catch ( NumberFormatException e) {
    System.err.println(cadena + " no es un entero");
}

Laboratorio:
Pruebe este ejemplo en un programa TestException.java. Cambie la cadena por "cinco", "1.1", "2f".
Compartir:

Como capturar y manejar una excepción en Java (08.02.01)

- Encierre el código del método en un bloque try
- Maneje cada exception en un bloque catch.
- Cualquier proceso final realícelo en un bloque finally. Este bloque siempre se ejecutara, ocurra o no una excepción.

try {
    // código del método
}
catch (exception1) {
   // manejar la excepción1
}
catch (exception2) {
   // manejar la excepción2
}
...
finally {
   // cualquier otro proceso final
}

La documentación del java indicara que excepciones lanza los métodos del java.

Clase : java.io.FileInputStream
Método: public FileInputStream(String name) throws FileNotFoundException
Método: public int read() throws IOException
Compartir:

Devolviendo excepciones en Java (08.01.03)

Devolviendo la excepción hasta el manejador de excepciones.
No se requiere que cada método invocado maneje la excepción, sino únicamente lo hará el primer manejador de excepciones de la lista de métodos invocados.

Maneo Tradicional de errores
El método4 retorna el código de error al método3.
El método3 retorna el código de error al método2
El método2 retorna el código de error al metodo1
El metodo1 maneja el error.

 



Excepciones en Java
El metodo4 lanza una excepción
El metodo1 captura la excepción y la maneja



Las excepciones no pueden ignorarse.

Una vez que un método lanza un error no puede ignorarse a diferencia de la programación tradicional donde se debe controlar en cada punto de invocación.



Compartir:

Separando el manejo de excepciones en Java (08.01.02)

1.2. Características del Java
Cuando ocurre una excepción en un método, Java lanza (throws) una excepcion (Exception).
El objeto Exception generado contiene el tipo de excepción, y el estado del programa cuando ocurrió el error.

Separando el manejo de errores
El manejo de excepciones en java permite separarlos del algoritmo principal.
El resultado es un código mas legible y menos propenso a errores de programación.

Manejo tradicional de errores.
int leerRegistroArchivo() {
   int errorCode = 0;
   abrirArchivo();
   if (errorAbrirArchivo) {
      errorCode = OPEN_ERROR;
   }
   else {
      leerArchivo();
      if (errorLeerArchivo) {
          errorCode = READ_ERROR;
      }
      cerrarArchivo();
      if (errorCerrarArchivo) {
          errorCode = CLOSE_ERROR;
      }
   }
   return errorCode;
} 

Manejo de excepciones en Java.

leerRegistroArchivo() {
   try {
      abrirArchivo();
      leerArchivo();
      cerrarArchivo();
   }
   catch (errorAbrirArchivo) {
      manejarErrorAbrirArchivo;
   }
   catch (errorLeerArchivo) {
      manejarErrorLeerArchivo;     
   }
   catch (errorCerrarArchivo) {
      manejarErrorCerrarArchivo;          
   }
}


Java separa los detalles del manejo de errores del código principal, obteniéndose un código mas legible y menos propenso a errores de codificación.
Compartir:

Excepciones en Java (08.01.01)

Que es una excepción? Es un evento que interrumpe la ejecución de un programa
- Usar un índice fuera de los limites de un arreglo
- Dividir entre cero
- Realizar métodos de objetos nulos.
Que es un error?
En java es cuando la situación es irrecuperable y termina el programa.
- No hay memoria para correr JVM
- Errores internos en JVM
Cual es la diferencia?
Una excepción se puede controlar en el programa. Un error no.
Compartir:

jueves, 10 de febrero de 2011

WebService con seguridad UsernameToken y oasis (Mensaje SOAP via Socket)

Aqui el ejemplo

package com.blogspot.toolboxnet;
import java.net.*;
import java.io.*;

public class SoapRequestStream {
 private String response = "Nothing";
 private static String wServer = "";
 private static String wPort = "";
 private static String wURI = "";

 public static void main(String[] args) throws Exception {
  SoapRequestStream se = new SoapRequestStream();
  String wParam1 = args[0]; // "1"
  String wParam2 = args[1]; // "2"
  wServer = args[2]; // "localhost"
  wPort = args[3]; // "8079"
  wURI = args[4]; // "/axis2/services/WebService";

  se.webServiceMethod(wParam1, wParam2);
 }

 public void webServiceMethod(String param1, String param2) {
  SoapRequestBuilder s = new SoapRequestBuilder();

  s.Server = wServer;
  s.WebServicePath = wURI;
  s.Port = Integer.parseInt(wPort);
  s.MethodName = "webServiceMethod";
  s.XmlNamespace = "
http://toolboxnet.blogspot.com/WebService";
  s.SoapAction = s.XmlNamespace+"/"+s.MethodName;
  response = s.sendRequest(param1, param2);
  System.out.println(response);
 }

}
class SoapRequestBuilder {
 String Server = "";
 String WebServicePath = "";
 String SoapAction = "";
 String MethodName = "";
 String XmlNamespace = "";
 int Port = 8080;

 public String sendRequest(String param1, String param2) {
  String retval = "";
  Socket socket = null;
  try {
   InetAddress  addr = InetAddress.getByName(Server);
   socket = new Socket(addr, Port);
  }
  catch (Exception ex1) {
   ex1.printStackTrace(System.out);
  }

  try {
   boolean autoflush = true;
   PrintWriter out = new PrintWriter(socket.getOutputStream(), autoflush);
   BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

   String username="username";
   String password="password";

   String sout="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cgt=\"http://toolboxnet.blogspot.com/CGType\"><soapenv:Header><wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" soapenv:mustUnderstand=\"1\"><wsse:UsernameToken xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" wsu:Id=\"UsernameToken-1\"><wsse:Username>"+username+"</wsse:Username><wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">"+password+"</wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><cgt:webServiceMethod><cgt:param1>"+param1+"</cgt:param1><cgt:param2>"+param2+"</cgt:param2></cgt:webServiceMethod></soapenv:Body></soapenv:Envelope>";
   String NL="\n";
   String cab="";
   cab+="POST "+WebServicePath+" HTTP/1.1"+NL;
   cab+="Content-Type: text/xml; charset=UTF-8"+NL;
   cab+="SOAPAction: \"urn:webServiceMethod\""+NL;
   cab+="User-Agent: Axis2"+NL;
   cab+="Host: "+Server+":"+Port+NL;
   cab+="Content-Length: "+ (1+sout.length() )+NL;

   out.println(cab);
   out.println(sout);
   out.println();
   out.flush();

   System.out.println(cab);
   System.out.println(sout);

   int inputChar;
   StringBuffer sb = new StringBuffer(1000);

   int wait_seconds = 3;
   boolean timeout = false;
   long m = System.currentTimeMillis();

   while ( (inputChar = in.read()) != -1 && !timeout) {
    sb.append( ((char)inputChar) );
    if ( (System.currentTimeMillis() - m) > (1000 * wait_seconds)) timeout = true;
   }
   in.close();

   System.out.println(sb.toString());
   socket.close();
  }

  catch (Exception ex) {
   ex.printStackTrace(System.out);
  }

  return retval;
 }

}
Compartir: