paddoc
PROPÓSITO
- lo relacionado con PADDOC
TEST DE BASE DE DATOS
- para probar que funciona la conexión con base de datos
https://paddoc.aragon.es/eppla_adm/test.jsp
- tiene que dat
[ORACLE DB] - [OK]
y no KO
DATOS USUARIOS
- para sacar los datos de los usuarios
-- DESDE GEB
GRANT SELECT ON GEB_USUARIOS TO EPCNT;
-- DESDE EPCNT
CREATE TABLE USUARIOS AS
SELECT * FROM EPCNT_ADM_PERFIL_USUARIO PER, GEB.GEB_USUARIOS USU
WHERE PER.CNT_ID_USUARIO = USU.GEB_ID_USUARIO
AND CNT_ID_PERFIL <> 'PERFIL_COMISION' ORDER BY CNT_ID_USUARIO;
-- DESDE GEB
REVOKE SELECT ON GEB_USUARIOS FROM EPCNT;
- salen 86 quitando los de la comisión
- salen 139 en total
- aruizcer tiene usuario en EPCNT_ADM pero no tiene datos en GEB
- paddoc17!
JAVA 1.8
- empezamos a migrar estas aplicaciones a java 8 cuando se dan problemas de seguridad con log4j
- AST crea un cluster nuevo para estas aplicaciones
Se ha creado el cluster DES_OFM_CLUSTER_EDU_2 y el manejado EDU_21_2 para albergar estas aplicaciones en java 1.8
NUEVO DISEÑO CON BOOTSTRAP
- información en el documento
- para ver la plantilla original en funcionamiento
REINICIAR PARÁMETROS
- para reiniciar parámetros
- operaciones sin login
- https://paddoc.aragon.es/epnom/oslInitReiniciarParametros.action
- contraseña
- puede ser epnom123
- esta sería errónea epnom_123
- epnom_adm12
- epacf_adm123
- puede ser epnom123
- contraseña
- pero hay que entrar en cada nodo
REINICIAR PARÁMETROS EN TODOS LOS NODOS
- para reiniciar los parámetros en todos los nodo se usa la pantalla
EPDTM/Datos Maestros/Gestión de Aplicaciones/<Nombre aplicación>/
- en esta pantalla se ven los nodos la ip y la fecha de inicio
- al aceptar se pasa a otra pantalla donde da más información
- pero no veo de donde se lanza el reinicio de parámetros
- tiene que salir otra pantalla con OK
DESARROLLO APUNTANDO A LOCAL
- para las aplicaciones públicas
- para que desde despaddoc te lleve a localhost
- hay que cambiarlo en la tabla
EPDTP_APLICACIONES
del usuario EPDTP@DESEDUCA y no en la tablaGEB_APLICACIONES
de GEB
- para las aplicaciones privadas
- se hace a traves de la Administración general / Aplicaciones
PONER UNA APLICACIÓN COMO PRIVADA
- se gestiona entrando en geb EPDTP / administración / aplicaciones
- se desmarca el check pública
- y se da acceso a los usuarios que se quiera
- se desmarca el check pública
- de esa forma se queda como privada
- ya no sale el icono en la pantalla de la lista de aplicaciones
- se puede abrir desde gestión por fechas dado que en la lista de aplicaciones solo la ven los que están en la lista de usuarios privados de esa aplicación que ahora no es pública
CREAR NUEVO USUARIO
- correo de Paco Coloma para dar de alta a un nuevo usuario
- Necesito que deis acceso a SIRHGA y a PADDOC a un nuevo compañero de secundaria.
- Pedro Pinto García, DNI 38854468Q
- Usuario: ppinto@aragon.es
AUTENTICACIÓN PUENTEADA CUANDO GEB NO FUNCIONA
- desde el cambio para poder cambiar de aplicación sin necesidad de nuevo login es necesario modificar esta utilidad
//Se verifica si el usuario tiene acceso a la aplicación
/* if (!controlAccesoBL.verificarTokenBL(controlAcceso))
{
addActionError (getText("error.start.noAccesoAplicacion"));
return ActionSupport.ERROR;
}*/
//Se obtienen todos los datos del usuario y se almacenan en sesión
//Usuario usuario = usuarioBL.obtenerUsuarioBL (idUsuario);
Usuario usuario = new Usuario();
usuario.setIdUsuario("jiranzo");
usuario.setApellido1("GEB_NO_FUNCIONA");
USUARIO PRUEBAS
ENTRADA PARA EPDTP
- para hacer pruebas directamente entrando en la aplicación sin necesidad de pasar por la autenticación de PADDOC en la parte donde se accede desde EPDTP
--DESDE EPDTP en desarrollo
Insert into EPDTP_CONTROL_USUARIOS
(DTP_NIF, DTP_ID_APLICACION, DTP_TOKEN, DTP_FECHA_INICIO_ACCESO, DTP_FECHA_FIN_ACCESO)
Values
('76924820D', 8, '1', TO_DATE('04/05/2019 10:38:29', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/05/2029 10:39:29', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
- uno para EPACF-USUARIO-76924820D-PRIMARIA
ENTRADA PARA GEB
- para hacer pruebas directamente entrando en la aplicación sin necesidad de pasar por la autenticación de PADDOC en la parte donde se accede desde GEG
- o la parte de gestión
--DESDE GEB en desarrollo
Insert into GEB_CONTROL_USUARIOS
(GEB_ID_USUARIO, GEB_ID_APLICACION, GEB_TOKEN, GEB_FECHA_INICIO_ACCESO, GEB_FECHA_FIN_ACCESO)
Values
('jiranzo', 49, '1', TO_DATE('04/05/2019 10:38:29', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('04/05/2029 10:39:29', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
-
un SQL al que se le pase un usuario y le ponga el token 1 en todas las aplicaciones o en una de ellas
- el SQL en el proyecto EPDTP y en GEG llamado accesoUsuarioPruebas.sql
-
para tener una lista de enlaces con los usuarios de una aplicación y el perfil que tienen se tiene que sacar desde cada aplicación
SELECT '* [USUARIO-'||PLA_ID_USUARIO||'-'|| PLA_ID_PERFIL||'-PRIMARIA-'||PLA_PRI||'-SECUNDARIA-'||PLA_SEC||DECODE(NVL(PLA_PROVINCIA,'--'),'--','','-PROVINCIA-'||PLA_PROVINCIA)||'](localhost:8080/eppla_adm/start.action?idUsuario=jiranzo'||'&'||'idAplicacion=54'||'&'||'token=1)' URL FROM EPPLA_ADM_PERFIL_USUARIO ORDER BY PLA_ID_PERFIL, PLA_PRI, PLA_SEC, PLA_PROVINCIA
DIFERENCIAL
- con la excel
H:\ecinform\Aplicaciones\Paddoc\Usuarios-Gestores\usuarios-gestores.xls
- con el usuario geb la primera parte
- el resto con cada aplicacion
- falla con EPSOF
INSERT INTO EPSOF_ADM_PERFIL_USUARIO (SOF_ID_USUARIO, SOF_ID_PERFIL, SOF_ID_PROVINCIA) VALUES ('ppinto', 'PERFIL_SSPP', '50'); commit;
EPLST
CREACIÓN DE LISTAS DESDE EPCNV
- si la lista no existe da un error y el proceso se queda en ejecución
- se ven los errores en EPLST y EPCNV
- hay que crear la lista desde EPLST
- hay que parar el job usando esta opción del Toad
PROYECTO NUEVO
- a partir de uno reciente como epsof_adm para empezar con epcnt_adm
- con la ayuda de David siguiendo el documento
H:\ecinform\Aplicaciones\Aplicaciones Web - Raul\Instalacion Aplicacion EclipseEE.doc
monto la aplicación copiando el contenido de EPSOF creando un proyecto nuevo y copiando en el los fuentes de epsof_adm - con la búsqueda selecciono todas las referencias a epsof_ y las cambio por epcnt_
- ademas es necesario renombrar los archivos de properties con el nombre del proyecto
- ademas de esta guía
- poner los datos en la configuración del servidor
C:\Servidores\Apache Tomcat 7.0.27\conf
en los archivos context.xml, server.xml donde tiene que resolver el nombre de la base de datos
PROPERTIES
-
copiar los properties en
C:\Servidores\Apache Tomcat 7.0.27\webapps\properties\epcnt_adm
pues es donde los toma el servidor para arrancar- son los que están en la aplicación en
C:\proyectos\epcnt_adm\src\conf\properties\des
para desarrollo
- son los que están en la aplicación en
-
el descriptor de despliegue tiene que estar en
C:\Servidores\Apache Tomcat 7.0.27\conf\Catalina\localhost
-
pero resulta que no es un proyecto en marcha dado que lo interesante era la parte pública o sea epsof así que da algunos fallos que tengo que corregir
- tengo que poner el archivo
applicationContext-WS.xml
que da problemas si no esta - falta un imPBL de un clase en solicitudes y eso al usar autowired da problemas antes de arrancar
- tengo que poner el archivo
-
ahora da problemas de sql que son los normales
-
la contraseña 1234 documentar donde se usa para sacar la información del usuario en geb
-
copiar lo que hay en el documento y dejar una guía completa más clara solo del montaje del proyecto
APLICACION NUEVA EN BASE DE DATOS
-
se da de alta mediante la aplicación geb/Administración General
- copiar lo que tenga otra parecida tanto a nivel de aplicación como de usuarios y grupo
- Grupos de la Aplicación
- 9 - Aplicaciones de Personal Docente
- Grupos de la Aplicación
- en la configuración de la aplicación poner
- Uso Interfaz Si
- Uso Servicios Web Si
- copiar lo que tenga otra parecida tanto a nivel de aplicación como de usuarios y grupo
-
hay que dar de alta al usuario en la propia aplicación
INSERT INTO EPCNT_ADM_PERFIL_USUARIO (CNT_ID_USUARIO, CNT_ID_PERFIL, CNT_PROVINCIA, CNT_PRI, CNT_SEC) VALUES ('jiranzo', 'PERFIL_ADMIN', '', 'S', 'S');
CAMBIOS EN PADDOC
- chuleta de Raúl
-- chuleta de cambios de Raúl
cambiosVersion.txt
----------------------------
-- LOG
----------------------------
Sustituir las líneas:
static Logger logger = (Logger) LogManager.getLogger(NombreAplicacionCTS.APP_ID);
por:
static Logger logger = (Logger) LogManager.getLogger(<nombreClase>.class);
Modificar el fichero de configuración. El de producción es un poco diferente ya que no tiene la salida por consola
Es necesario copiar los properties en C:\Servidores\Apache Tomcat 7.0.27\webapps\properties\<nombre_aplicacion> copiados de C:\Proyectos\<nombre_aplicacion>\src\conf\properties
Modificar el fichero del listener para la nueva configuración. Sobran las siguientes líneas.
//Se inicializa el log
Logger loggerPersonal = (Logger) LogManager.getLogger(ApplicationListener.class);
PersonalStoredProcedure.setLogger(loggerPersonal);
EadmonBase.setLogger(loggerPersonal);
----------------------------
-- DAL
----------------------------
Cambiar los ficheros DAL
--cuando se trata de lista
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);
//Se obtiene el resultado
return (List<ActoCandidatoColectivo1>) obtenerRegistrosCursor(FUN_STRING, inputs, outputs);
--cuando se trata de un elemento
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);
//Se obtiene el resultado
return (ActoCandidatoColectivo1) obtenerRegistroCursor(FUN_STRING, inputs, outputs);
--cuando se trata de un boolean
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);
//Se obtiene el resultado
return obtenerRegistroBoolean(FUN_STRING, inputs, outputs);
--cuando se trata de un entero
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);
//Se obtiene el resultado
return obtenerRegistroInt(FUN_STRING, inputs, outputs);
--cuando se trata de un String
//Se ejecuta la sentencia
Map<String, Object> outputs = super.execute(inputs);
//Se obtiene el resultado
return obtenerRegistroString(FUN_STRING, inputs, outputs);
----------------------------
-- QUITAR INPUT STREAM Y DEJAR byte[]
----------------------------
- Clases ent.
- Rowmapper
import org.apache.commons.io.IOUtils;
public byte[] mapRow(ResultSet rs, int argRowNum ) throws SQLException
{
byte [] fichero = null;
try
{
fichero = IOUtils.toByteArray(rs.getBinaryStream("OPO_DOCUMENTO"));
}
catch (Exception ex)
{
}
return fichero;
}
- Añadir
String pathFichero = fichero.getAbsolutePath();
File file = new File(pathFichero);
ByteArrayInputStream bais = new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
oposicionTribunalPrealegacionQueja.setDocumento(IOUtils.toByteArray(bais));
- Descargar
byte[] ficheroBytes = solicitudDocumentoBL.descargarSolicitudDocumentoBL(sesionDatosSolicitud.getNif(), sesionDatosSolicitud.getCodigo(), idDocumento);
if (ficheroBytes == null)
{
addActionError (getText("error.error"));
return ActionSupport.ERROR;
}
nombreFichero = solicitudDocumento.getNombre();
fileInputStream = new ByteArrayInputStream(ficheroBytes);
- Previsualizar
try {
byte[] ficheroBytes = meritoDocumentoBL.descargarMeritoDocumentoBL(sesionDatosPersona.getDatosPersonales().getNif(), idMerito, idDocumento);
if (ficheroBytes == null)
{
addActionError (getText("error.error"));
return ActionSupport.ERROR;
}
inputStream = new ByteArrayInputStream(ficheroBytes);
byte[] buffer = new byte[1024];
servletResponse.setContentType(UtilValidaciones.obtenerContentTypeFichero(oposicionSolicitudDocumento.getNombre()));
ServletOutputStream bOut = servletResponse.getOutputStream();
int length=-1;
while ((length = inputStream.read(buffer)) != -1)
{
bOut.write(buffer, 0, length);
}
inputStream.close();
bOut.flush();
bOut.close();
}
catch (Exception e)
{
}
LOGS
- para descargar los logs de una aplicación se puede usar la pantalla de administración con la ventaja de que se puede modificar esa ruta por lo que se puede bajar los logs de otra aplicación distinta a la que has accedido
- es necesario hacerlo en los 4 nodos pues el log es distinto
- para cambiar de nodo lo mejor es cambiar de navegador
- desde c:\proyectos\ast<nombre-proyecto>\ se puede cambiar a la rama
logs
- para usar los logs hay que hacer un checkout a la rama logs
- luego modificar el texto del archivo logs.txt con la fecha y hacer un commit con el mensaje logs-1-pro para que envíen los logs de producción del día anterior
- llega un correo a la cuenta asociada con un enlace a un fichero comprimido que hay que cambiar de extensión para poderlo descomprimir
- llegan los logs de los nodos que se usan
IDENTIFICACIÓN Y ADMINISTRACIÓN ELECTRÓNICA
- Nosotros tenemos identificación con el usuario siempre con Clave Permanente o certificado.
- En concurso de traslados y oposiciones se firma con sello de órgano, lo cual sé que está mal pero es lo que hay si queremos que funciona tal y como está ahora la Administración Electrónica.
- En el resto de aplicaciones que tienen un plazo de presentación tan corto no se firman porque da errores cada dos por tres y es inviable.
- Registro electrónico se hace bien en concurso de traslados y oposiciones y en el resto les mostramos un resguardo (lo que sería su apartado 2).
PROBLEMAS
CHECKBOX NO SE MARCA
- con los nuevos estilos que usan bootstrap
out.println(" <input type='checkbox' name='tipoSolicitud' value='" + presolicitudTipo.getIdTipo() + "' id='presolicitudTipo_" + presolicitudTipo.getIdTipo() + "' class='form-control-custom' >");
out.println(" <label for='presolicitudTipo_" + presolicitudTipo.getIdTipo() + "'><span style='font-weight: 400;'>" + presolicitudTipo.getDescripcion() + "</span></label>");
- realmente lo que se ve es el label y no el checkbox como se puede comprobar si se usa las dev tools y se quita la propiedad visibility y width lo que hace que se vea el checkbox
input.form-control-custom {
visibility: hidden;
width: 1px;
}
- por eso si no coincide el id del checkbox y el label for todo se pinta bien pero no se deja marcar
FUNCIONA EN LOCAL Y NO EN DESEDUCA
- para hacer las pruebas en local el parámetro
RUTA_BASE_INFORMES
se suele establecer aC:\Proyectos\epacf_adm\informes\
- para probar la aplicación en el servidor de AST es necesario el cambio a
/compartido/app/epacf_adm/informes/
- tanto en la tabla EPACF_ADM_PARAMETROS como en EPACF_P_ADM_PARAMETROS
- tengo que reiniciar los parámetros
https://despaddoc.aragon.es/epacf/admProcessReiniciarParametros
- para probar la aplicación en el servidor de AST es necesario el cambio a
- esto se nota sobre todo al presentar la solicitud donde se generan informes y la ruta se saca del parámetro.
ORA-01002: RECUPERACIÓN FUERA DE SECUENCIA
- se da al copiar el esquema de pro a pre por ejemplo
- las secuencias tienen un contador distinto y eso es lo que provoca el error
- por ejemplo la secuencia
SQ_PROCESO_EJECUCION.NEXTVAL
en EPREM cuando se usa para duplicar méritos en EPOPO por ejemplo- al tener un número que ya se ha usado provoca una violación de PK en la tabla de procesos
- el error se extiende de EPOPO a EPREM y se ven trazas en las dos auditorias
Error 404–Not Found
- a veces sale este error en algunos navegadores y en otros no
- se soluciona borrando los datos de navegación de las últimas horas
Error 404--Not Found
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.4.5 404 Not Found
ERROR CL@AVE
- error al usar clave para el login
- en la parte pública al hacer login con Cl@ve
https://pasarela.clave.gob.es/Proxy2/ServiceProvider
Se ha producido un error...
error
javax.servlet.ServletException: es.clave.ApplicationSpecificServiceException
Por favor, reinténtelo de nuevo más tarde

- en el escritorio la captura de pantalla errorClave.png
ERRORES DE SERVIDOR
- los problemas que son propios de servidor los llevo a parte de problemas del archivo para Tomcat