¿ Quieres imprimir esta página ? Volver a la página principal de Recursos iSeries AS400 ¿ Necesitas ayuda ? En pruebas
Recursos iSeries AS400. Compartiendo generamos conocimiento
Novedades en Recursos iSeries AS400
Últimas noticias del iSeries AS400
Web Service Java con Programas AS400

Categoría : Programación
Autor : Edwin
Título : Web Service Java con Programas AS/400


Descripción del truco:
Describe como podemos llamar a un programa AS/400 (CL, PGM u otro) mediante un Web Service. En este ejemplo se llama a un programa que ingresa y sale un cadena de caracteres

/**** 
/* Se debe crear un archivo donde se ponga la interface de las clases
/************
import java.rmi.*;

public interface iSeriesService
    extends Remote {
  // Función que envia datos al AS/400 en Forma de Trama
  public String enviarDatos(String pServidor, String pUsuario,
                            String pPassword, String pLibreria,
                            String pTipoProg, String pPrograma,
                            String pTrama) throws RemoteException;

}
/**********
/* este es el archivo que implementa la clase
/**************************************
import java.rmi.*;
import java.util.Vector;
import com.ibm.as400.access.*;

/**
 *
 * @author  EDGO
 */
public class iSeries
    implements iSeriesService {
  static private AS400 servidor[];
  private ProgramCall cmd;
  private String sServidor=nombre de Servidor;
  private String sUsuario=Usuario de Conexion;
  private String sPassword=Clave de Conexion;
  private int nNumConex=Numero de Conexiones con AS/400;
  /**
   * Método que envia una Cadena de Datos al Programa Manejador Devuelve
   * una cadena con el resultado
   *
   * @param pServidor Nombre del Servidor iSeries
   * @param pUsuario Uusario Atorizado
   * @param pPassword Clave de Accesso
   * @param pLibreria Nombre de la Libreria o Biblioteca
   * @param pTipoProg Tipo de Programa Nativo iSeires
   * @param pPrograma Nombre del Programa
   * @param pTrama Cadena de Caracteres
   * @throws RemoteException
   * @return String
   */
  public String enviarDatos(String pServidor, String pUsuario,
                            String pPassword, String pLibreria,
                            String pTipoProg, String pPrograma,
                            String pTrama) throws RemoteException {

    String sRpta = "";
    int nConexion;
    if (servidor == null) {
      creaConexion();
    }
    //crea un aleatorio para enviar la conexion
    nConexion = (int) (Math.random() * nNumConex);
    String sNombre = servidor[nConexion].getSystemName();
    sNombre = sNombre.toUpperCase();
    if (sNombre.compareTo(pServidor) == 0) {
      try {
        String c = "/QSYS.LIB/" + pLibreria + ".LIB/" + pPrograma + "." +
            pTipoProg;
        ProgramParameter[] parmList = new ProgramParameter[1];
        AS400Text parm1 = new AS400Text(39999);
        parmList[0] = new ProgramParameter(ProgramParameter.PASS_BY_REFERENCE,
                                           parm1.toBytes(pTrama), 39999);

        ProgramCall cmd = new ProgramCall(servidor[nConexion], c, parmList);
        try {

          if (cmd.run() != true) {
            // Reporte de las fallas
            System.out.println("Programa ha fallado!");
            // muestra mensajes de error
            AS400Message[] messagelist = cmd.getMessageList();
            for (int i = 0; i < messagelist.length; ++i) {
              System.out.println(messagelist[i]);
            }
          }
          else {
            AS400Text text = new AS400Text(39999);
            sRpta = (String) text.toObject(parmList[0].getOutputData());
            sRpta.trim();
            parmList = null;
            cmd = null;
          }
        }
        catch (Exception ex) {
          sRpta = "Error:" + ex.getMessage();
          ex.printStackTrace();
        }
      }
      catch (Exception ex1) {
        sRpta = "Error:" + ex1.getMessage();
        ex1.printStackTrace();
      }
    }
    return sRpta;
  }

  private void creaConexion() {
    int i;
    servidor = new AS400[nNumConex];
    for (i = 0; i < nNumConex; i++) {
        servidor[i] = new AS400(sServidor, sUsuario, sPassword);
    }
  }
}

                        
En el programa AS/400 se debe monitorearse los /*errores (con las rutinas de error o con la sentencia /*Monitor en caso sea RPG o monitoreo de error en /*caso sea CL) a fin de que el programa no se caiga /*pero que reporte el error

Ver código
Fecha 29-07-2004


Tienes algún truco que quieras compartir con todos los profesionales de Recursos iSeries AS400?.Envianoslo y si resulta seleccionado te enviaremos un vale de Amazon por valor de 50$

Comentarios de usuarios

Nombre:
Mail:
Comentario:
 

Subir a la parte superior de la web

Symtrax
Dossiers técnicos iSeries y AS400
- Dossier de seguridad
- Alta disponibilidad.
¿Buscas trabajo ?
Inscríbete en nuestra lista laboral y recibirás las ofertas de trabajo en tu buzón de correo electrónico.
Nuestros links preferidos
- Tendencias tecnologías de la información
Expertos en materías relacionadas con las tecnologías de la información, nos dan su punto de vista sobre las tendencias actuales y futuras
- Los últimos anuncios sobre hardware-software para iSeries AS400 realizados por IBM
- Freeware. Software gratuito para el iSeries AS400
- Utilidades para el iSeries AS400 realizadas por profesionales
- Documentos. Trucos e ideas para resolver tus problemas
- Manuales. Los manuales y links más interesantes del iSeries AS400

  Links patrocinados
  •  
  •  

[ Soy nuevo |   Profesionales |   AS qué |   Empresas |    Foros |   Recomiéndanos |    Productos ]
 
Recursos iSeries AS400 es una web de: Poliedric, s.c.p. CIF:G63005011 Urgell 143 1º1ª 08036 - Barcelona - Tel.+34.902.361.344