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
