problema con java y mainframe
Tengo el siguiente problema. Tengo una aplicaci贸n que se comunica a un mainframe (MVS os/390 IBM) la manera en que se comunica es a trav茅s de PLD\'s y lo que hacen es enviarme una respuesta en texto separando cada variable con tildes (~) despu茅s que le env铆e una solicitud tambi茅n con campos o variables separados con tildes.
El fragmento de c贸digo que muestro a continuaci贸n est谩 implementado dentro de un servlet y funciona muy bien.
El servidor Web es WebSphere versi贸n 5 y est谩 levantado dentro del mainframe (WebSphere para mainframe). Las variables que defino son:
setUrl("local:");
setPuerto(0);
setDirectorio("//home//iddahm//");
Pero el problema es el siguiente:
Debo hacer un demonio con java y considero que tengo dos caminos:
camino 1: hacer una aplicaci贸n con Java y hacer que se ejecute en el tiempo que lo programe.
camino 2: hacer una aplicaci贸n que pueda montarla dentro del servidor web (en este caso WAS)
Para el camino 1 ya hice la aplicaci贸n pero por m谩s que le hago no funciona porque no s茅 cuales son todos los elementos que necesita para ejecutarse fuera de WAS.
Para el camino dos, no se me ocurre c贸mo hacer una demonio para colocarlo dentro de WAS.
Y podr铆a haber una tercera: usando las bibliotecas para MQ que es algo que apenas estoy empezando a manejar.
Ojal谩 puedan ayudarme d谩ndome tips o aconsej谩ndome alguna fuente donde venga informaci贸n al respecto.
Las bibliotecas usadas son las de CTG
1 private MensajeRespuesta ejecutaPLD(String cuenta){
2 final String PROGRAMA = "IW001001";
3 MensajeEnvio msgEnv = new MensajeEnvio(cuenta);//crea mensaje
4 MensajeRespuesta msgRes = null;
5 byte[] abCommArea = new byte[12284];//
6 for(int i=0; i<abCommArea.length;i++)
7 abCommArea[i] = 0;
8 try{
9 System.arraycopy(
10 msgEnv.getMsg().getBytes("IBM-1047"), 0,
11 abCommArea, 4, msgEnv.getMsg().length());
12 JavaGateway jgaConn = new JavaGateway();
13 jgaConn.setURL(getUrl());
14 jgaConn.setPort(getPuerto());
15 jgaConn.open();
16 ECIRequest eciRequest =
17 new ECIRequest("CICSDRG1",
18 "HF945016",
19 null,
20 PROGRAMA,
21 abCommArea, //mensaje de texto separado por tildes
22 ECIRequest.ECI_NO_EXTEND,
23 ECIRequest.ECI_LUW_NEW);
24 jgaConn.flow(eciRequest);
25 String msgResultado = (new String(abCommArea,"Cp037")).trim(); recibo mensaje separado por tildes
26 if(out != null){
27 out.println("<br>Entra a la opci贸n con out");
28 msgRes = new MensajeRespuesta(msgResultado,out);
29 }
30 else{
31 msgRes = new MensajeRespuesta(msgResultado);
32 }
33 msgRes.convierte();
34 jgaConn.close();
35 }
36 catch(UnsupportedEncodingException e){
37 System.err.println("Exception al codificar el mensaje");
38 System.err.println(e.getMessage());
39 e.printStackTrace();
40 }
41 catch(IOException e){
42 System.err.println("Exception al abrir url o puerto");
43 System.err.println(e.getMessage());
44 e.printStackTrace();
45 }
46 catch(Exception e){
47 System.err.println("Exception dentro del metodo ejecutaPLD");
48 System.err.println(e.getMessage());
49 e.printStackTrace();
50 }
51 finally{
52 return msgRes;
53 }
54 }
Saludos y espero su respuesta
Gracias
El fragmento de c贸digo que muestro a continuaci贸n est谩 implementado dentro de un servlet y funciona muy bien.
El servidor Web es WebSphere versi贸n 5 y est谩 levantado dentro del mainframe (WebSphere para mainframe). Las variables que defino son:
setUrl("local:");
setPuerto(0);
setDirectorio("//home//iddahm//");
Pero el problema es el siguiente:
Debo hacer un demonio con java y considero que tengo dos caminos:
camino 1: hacer una aplicaci贸n con Java y hacer que se ejecute en el tiempo que lo programe.
camino 2: hacer una aplicaci贸n que pueda montarla dentro del servidor web (en este caso WAS)
Para el camino 1 ya hice la aplicaci贸n pero por m谩s que le hago no funciona porque no s茅 cuales son todos los elementos que necesita para ejecutarse fuera de WAS.
Para el camino dos, no se me ocurre c贸mo hacer una demonio para colocarlo dentro de WAS.
Y podr铆a haber una tercera: usando las bibliotecas para MQ que es algo que apenas estoy empezando a manejar.
Ojal谩 puedan ayudarme d谩ndome tips o aconsej谩ndome alguna fuente donde venga informaci贸n al respecto.
Las bibliotecas usadas son las de CTG
1 private MensajeRespuesta ejecutaPLD(String cuenta){
2 final String PROGRAMA = "IW001001";
3 MensajeEnvio msgEnv = new MensajeEnvio(cuenta);//crea mensaje
4 MensajeRespuesta msgRes = null;
5 byte[] abCommArea = new byte[12284];//
6 for(int i=0; i<abCommArea.length;i++)
7 abCommArea[i] = 0;
8 try{
9 System.arraycopy(
10 msgEnv.getMsg().getBytes("IBM-1047"), 0,
11 abCommArea, 4, msgEnv.getMsg().length());
12 JavaGateway jgaConn = new JavaGateway();
13 jgaConn.setURL(getUrl());
14 jgaConn.setPort(getPuerto());
15 jgaConn.open();
16 ECIRequest eciRequest =
17 new ECIRequest("CICSDRG1",
18 "HF945016",
19 null,
20 PROGRAMA,
21 abCommArea, //mensaje de texto separado por tildes
22 ECIRequest.ECI_NO_EXTEND,
23 ECIRequest.ECI_LUW_NEW);
24 jgaConn.flow(eciRequest);
25 String msgResultado = (new String(abCommArea,"Cp037")).trim(); recibo mensaje separado por tildes
26 if(out != null){
27 out.println("<br>Entra a la opci贸n con out");
28 msgRes = new MensajeRespuesta(msgResultado,out);
29 }
30 else{
31 msgRes = new MensajeRespuesta(msgResultado);
32 }
33 msgRes.convierte();
34 jgaConn.close();
35 }
36 catch(UnsupportedEncodingException e){
37 System.err.println("Exception al codificar el mensaje");
38 System.err.println(e.getMessage());
39 e.printStackTrace();
40 }
41 catch(IOException e){
42 System.err.println("Exception al abrir url o puerto");
43 System.err.println(e.getMessage());
44 e.printStackTrace();
45 }
46 catch(Exception e){
47 System.err.println("Exception dentro del metodo ejecutaPLD");
48 System.err.println(e.getMessage());
49 e.printStackTrace();
50 }
51 finally{
52 return msgRes;
53 }
54 }
Saludos y espero su respuesta
Gracias