Pieza 24 de 64
Otra épocaPieza nº 0024 de 64

Por favor, establezca un datasource

En la página donde el portal de datos abiertos del Gobierno Vasco cuenta sus orígenes, la frase del acuerdo de 2009 que lo fundó es un enlace. Quien lo pulsa no encuentra el acuerdo. Encuentra una disculpa, un número de trece cifras, un botón que dice «Mas Información ...» y, detrás del botón, una traza de Java. Así seguía el 23 de septiembre. Un renglón más abajo, otro enlace, con el título del acuerdo, lleva a un PDF, y ese sí se abre.

Dominios
opendata.euskadi.eus · www.euskadi.eus
Guardado
08 SEP 2026
Comprobado en vivo
14 SEP 2026
Citas
12 en 2 ficheros guardados
Lectura
unos 4 min
Captura de https://opendata.euskadi.eus/
foto 1La portada de opendata.euskadi.eus el 23 de septiembre de 2026: el portal de datos abiertos del Gobierno Vasco, que se abre en euskera; el castellano está en el botón ES, arriba a la izquierda.Captura del 23 de septiembre de 2026, 10:17 (hora peninsular)

La página «Sobre Open Data» tiene un apartado de orígenes, y los orígenes tienen fecha: el Consejo de Gobierno Vasco aprobó el 29 de diciembre de 2009 ordenar la puesta en marcha de un proyecto de apertura de datos públicos. La frase es un enlace. Apunta a una aplicación de acuerdos del Consejo, con la fecha en la propia dirección: fecha=20091229. Es el certificado de nacimiento del portal, y el portal lo enlaza para que cualquiera lo lea. Lo enlaza, de hecho, dos veces: debajo de la frase hay otro enlace, «Acuerdo del Consejo de Gobierno sobre Open Data Euskadi (pdf, 268 kb)».

Captura de https://opendata.euskadi.eus/sobre-open-data/-/open-data-euskadi/
foto 2La página «Sobre Open Data» de opendata.euskadi.eus el 23 de septiembre de 2026, apartado Orígenes. Recuadrada, la frase del acuerdo de 2009, que es un enlace y lleva al error; debajo, el enlace al PDF con el título del acuerdo, que sí se abre.Captura del 23 de septiembre de 2026, 14:26 (hora peninsular) · el recuadro es nuestro
1de 12opendata.euskadi.eus/sobre-open-data/-/open-data-euskadi/línea 723 de 762
Copia
archivo
Guardado
8 sep 2026
Peso
153,4 kB
sha256
62693ed0cc50…
720    <h1 class="r01-h1">Open Data Euskadi</h1>
721</header><div class="r01-editor"><p>El Gobierno Vasco se compromete a una efectiva <strong>apertura de los datos p&uacute;blicos</strong> que obran en su poder, entendiendo como p&uacute;blicos todos aquellos datos no sujetos a restricciones de privacidad, se…
722<h2>Or&iacute;genes</h2>
723…href="/r48-acuerdos/es/v97aAcuerdosWar/V97AListaAcuerdosServlet?idioma=c&amp;tema=1&amp;origen=D&amp;fecha=20091229#DPTO5">El <strong>Consejo de Gobierno Vasco</strong> aprob&oacute; el 29 de diciembre de 2009</a> ordenar a la Direcci&oacute;n de Atenci&oacute;n…
724<p class="acuerdo">&nbsp;<a href="/contenidos/informacion/opendataeuskadi/es_que_es/adjuntos/acuerdo_consejo_gobierno_open_data_euskadi.pdf">Acuerdo del Consejo de Gobierno sobre Open Data Euskadi (pdf, 268 kb)</a></p>
725<p>Unos meses despu&eacute;s, en abril de 2010, el Gobierno Vasco publica Open Data Euskadi, el portal de datos abiertos del Gobierno Vasco y entes dependientes:</p>
726<p><iframe width="560" height="314" title="Open Data Euskadi es la p&aacute;gina web de datos abiertos del Gobierno Vasco. En este v&iacute;deo se explica qu&eacute; informaci&oacute;n ofrece esta web: datos en formatos reutilizables, aplicaciones
1La página «Sobre Open Data», apartado de orígenes: la frase del acuerdo de 2009 es un enlace a la aplicación de acuerdos, con la fecha en la dirección.

Cualquiera que lo pulse recibe una página con código 200, el de todo bien, que dice: «Lo sentimos, se ha producido un error en la aplicación. Póngase en contacto con el Administrador». Debajo, subrayado como en un formulario de los noventa, un ID ERROR de trece cifras. Y un «Mensaje», que es el título de esta ficha: por favor, establezca un datasource.

Captura de https://opendata.euskadi.eus/r48-acuerdos/es/v97aAcuerdosWar/V97AListaAcuerdosServlet?idioma=c&tema=1&origen=D&fecha=20091229
foto 3El enlace de la frase, seguido en el navegador el 23 de septiembre de 2026 y con el botón «Mas Información ...» ya pulsado: la cabecera del portal, en euskera; «Lo sentimos», el ID ERROR (que es la hora), el mensaje y, recuadrada, la capa que el botón destapa, con la fecha, la excepción, la clase, el método y una traza de 18 pasos, hasta ExecuteThread. La copia más antigua, la que lee la pieza, tenía 37.Captura del 23 de septiembre de 2026, 14:27 (hora peninsular) · el recuadro es nuestro
2de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlínea 325 de 536
Copia
archivo
Guardado
8 sep 2026
Peso
31,6 kB
sha256
e12f6563e6b3…
322<table width="100%" border="0" cellpadding="0" cellspacing="0">
323    <tr>
324        <td align="center">
325            &nbsp;&nbsp;Lo sentimos, se ha producido un error en la aplicación. Póngase en contacto con el Administrador.
326        </td>
327    </tr>
328    <tr>
2Lo que devuelve el enlace, con código 200.
3de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlínea 339 de 536sigue en el mismo fichero · 14 líneas más abajo
336    </td>
337</tr>
338<tr>
339    <td>&nbsp;&nbsp;<u>ID ERROR:</u>&nbsp; 1788869420795</td>
340</tr>
341<tr>
342    <td>
3El identificador del error: trece cifras, subrayadas con la etiqueta u. Más abajo se lee qué son.
4de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlínea 347 de 536sigue en el mismo fichero · 8 líneas más abajo
344    </td>
345</tr>
346<tr>
347    <td>&nbsp;&nbsp;<u>Mensaje:</u>&nbsp; Por favor, establezca un datasource</td>
348</tr>
349<tr>
350    <td>
4El mensaje, tal cual: una petición al instalador, en pantalla del visitante.

Un datasource es, en Java, la conexión con la base de datos: el sitio del que la aplicación saca lo que enseña. Por favor, establezca uno, es una frase escrita para quien instala el programa, no para quien lo usa; el trato de usted y el por favor van dirigidos a quien configura el servidor. Ese no está. Está el visitante, que quería leer un acuerdo de 2009 y a quien se le pide amablemente que configure un servidor.

El botón dice «Mas Información ...», sin tilde y con sus tres puntos, y cumple lo que promete. Pulsa una función de JavaScript, evalua, que cambia la visibilidad de una capa que la página trae escondida. Dentro de la capa, una tabla con borde, el borde de las tablas de 1998, y una fecha: 9/8/26 2:10 PM. Es el 8 de septiembre de 2026 a las dos y diez de la tarde, hora de aquí. La máquina vive en nuestro huso horario y escribe las fechas como en Ohio, mes, día, año de dos cifras y reloj de doce horas.

5de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlínea 357 de 536
Copia
archivo
Guardado
8 sep 2026
Peso
31,6 kB
sha256
e12f6563e6b3…
354</tr>
355<tr>
356    <td>
357        &nbsp;&nbsp;<input type="button" name="btnInfor" value="Mas Información ..." class="boton" onclick="javascript:evalua('capa');">
358    </td>
359</tr>
360<tr>
5El botón «Mas Información ...» llama a evalua('capa'), que muestra u oculta la capa de abajo.
6–7de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlíneas 367–370 de 536sigue en el mismo fichero · 10 líneas más abajo
364</tr>
365<tr>
366    <td>
367        <div id="capa" style="visibility:hidden"6>
368            <table border="1" width="50%">
369                <tr>
370                    <td>&nbsp;&nbsp;<b>Fecha:</b>&nbsp; 79/8/26 2:10 PM</td>
371                </tr>
372                <tr>
373                    <td>&nbsp;&nbsp;<b>Excepción:</b>&nbsp; class v97a.errores.V97ABaseExceptionServlet</td>
6La capa que el botón destapa: la página la trae escondida, no ausente.
7Su primera fila: 9/8/26 2:10 PM, mes/día/año y reloj de doce horas, con la hora de Madrid.

Sigue una ficha técnica que ningún visitante pidió. La de la captura del 8 de septiembre dice la excepción, el componente, la clase y el método que falló, con sus nombres de dentro del programa. Y, con título propio, la traza. La traza es la lista de llamadas que estaban en marcha cuando la aplicación se rindió, de la más honda a la más alta.

8–9de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlíneas 376–382 de 536
Copia
archivo
Guardado
8 sep 2026
Peso
31,6 kB
sha256
e12f6563e6b3…
373    <td>&nbsp;&nbsp;<b>Excepción:</b>&nbsp; class v97a.errores.V97ABaseExceptionServlet</td>
374</tr>
375<tr>
376    <td>&nbsp;&nbsp;<b>Componente:</b>&nbsp; v97a.acuerdosServlet</td>8
377</tr>
378<tr>
379    <td>&nbsp;&nbsp;<b>Clase:</b>&nbsp; class v97a.acuerdosServlet.V97AFormNovedadesServlet</td>
380</tr>
381<tr>
382    <td>&nbsp;&nbsp;<b>Método:</b>&nbsp; 9v97a.acuerdosServlet.V97AFormNovedadesServlet.tratarPeticion</td>
383</tr>
384<tr>
385    <td>&nbsp;&nbsp;<b>Traza:</b><br />java.lang.IllegalStateException: Por favor, establezca un datasource<br/> at v97a.util.accesoBD.V97AGestorConexion.getConnection(V97AGestorConexion.java:72)<br/> at v97a.acuerdosBean.V97ATemasBean.obtenerTema(V97ATema…
8La ficha técnica: excepción, componente, clase y método de la aplicación.
9El método que falló, y justo debajo empieza la traza: una sola línea de 3.376 caracteres.

La más honda: java.lang.IllegalStateException con el mismo por favor, lanzada en la línea 72 de V97AGestorConexion, el gestor de conexiones de un paquete que se llama accesoBD. La pedía obtenerTema, línea 64; a esta la llamaba tratarPeticion, línea 68. Números de línea del código fuente de una aplicación que el público no ve, publicados en la página que sí ve.

10de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlínea 385 de 536
Copia
archivo
Guardado
8 sep 2026
Peso
31,6 kB
sha256
e12f6563e6b3…
382        <td>&nbsp;&nbsp;<b>Método:</b>&nbsp; v97a.acuerdosServlet.V97AFormNovedadesServlet.tratarPeticion</td>
383    </tr>
384    <tr>
385…/>java.lang.IllegalStateException: Por favor, establezca un datasource<br/> at v97a.util.accesoBD.V97AGestorConexion.getConnection(V97AGestorConexion.java:72)<br/> at v97a.acuerdosBean.V97ATemasBean.obtenerTema(V97ATemasBean.java:64)<br/>…
386    </tr>
387</table>
388<table border="0" width="50%">
10La cabeza de la traza: la excepción, con el mismo por favor, y la línea 72 del gestor de conexiones del paquete accesoBD.

Más arriba, la petición entra por doGet, línea 58 de V97AListaAcuerdosServlet, el nombre que aparece en la dirección. Pasa por javax.servlet, el nombre de paquete que la especificación dejó atrás en 2020, y de ahí en adelante todo es weblogic: 21 de los 37 pasos llevan ese prefijo, hasta el último, ExecuteThread.run, el hilo del servidor de aplicaciones de Oracle. Once pasos son de la propia aplicación, cinco de la especificación de servlets y veintiuno del servidor. Al pie, un enlace: «Imprimir».

11–12de 12www.euskadi.eus/web01-s1ezaleh/eu/v97aAcuerdosWar/V97AListaAcuerdosServletlínea 385 de 536
Copia
archivo
Guardado
8 sep 2026
Peso
31,6 kB
sha256
e12f6563e6b3…
382        <td>&nbsp;&nbsp;<b>Método:</b>&nbsp; v97a.acuerdosServlet.V97AFormNovedadesServlet.tratarPeticion</td>
383    </tr>
384    <tr>
385… at v97a.acuerdosServlet.V97AListaAcuerdosServlet.doGet(V97AListaAcuerdosServlet.java:58)11<br/> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)<br/> at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)<br/> at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)<br/> at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)<br/> at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)<br/> at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61)<br/> at v97a.filter.V97AIdiomaFilter.doFilter(V97AIdiomaFilter.java:41)<br/> at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714)<br/> at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)<br/> at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182)<br/> at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491)<br/> at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)<br/></td>12
386    </tr>
387</table>
388<table border="0" width="50%">
11La entrada de la petición: doGet, la función que la atiende, en la línea 58 del programa que da nombre a la dirección; después, la capa estándar javax.servlet y el primer weblogic, que es el servidor.
12El último de los 37 pasos: el hilo de ejecución de WebLogic. Ahí acaba la traza y la celda.

El ID ERROR también se deja leer. 1788869420795 son milisegundos contados desde el 1 de enero de 1970: el 8 de septiembre de 2026 a las 12:10:20 UTC, el mismo segundo en que guardamos la página. El identificador del error es un reloj, no un expediente. La versión en euskera del mismo enlace, guardada cuatro minutos después, trae el mismo error con otro reloj: 1788869646816, las 12:14:06.

El archivo guarda la respuesta del 8 de septiembre de 2026 (31.557 bytes, 536 líneas, con la cabecera y el pie del portal). El 14 de septiembre volvimos a seguir el enlace de la página de orígenes: dos redirecciones y el mismo error a las 20:48:42 UTC, con su reloj a juego, 1789418922321, y su fecha, 9/14/26 10:48 PM. Siete minutos más tarde, pedida a su dirección final en www.euskadi.eus, otra vez: 1789419335928.

Las copias del 14 de septiembre se rinden antes, con una traza de 18 pasos, y con la misma excepción y la misma línea 72. La del 23 de septiembre, igual, con otro reloj: 1790166216713, las 12:23:36 UTC. Cada visita fabrica un error nuevo con la hora exacta. El acuerdo no sale en ninguna. Ese mismo día, el enlace de debajo, el del PDF, se abría sin problema: un documento escaneado de 270.547 bytes. Diecisiete años después, la frase que cita el acuerdo contesta con una traza de Java, y el PDF espera un renglón más abajo.

Un enlace a 2009 que contesta con la hora exacta de ahora mismo, en milisegundos, y un ruego a un instalador que no está. Para leer el acuerdo hay que bajar un renglón.

Lo que decimos
  • El enlace de la frase del apartado de orígenes de opendata.euskadi.eus lleva a una página que responde 200 con un error de aplicación, un mensaje dirigido a quien la configura y, tras un botón, la fecha, las clases y la traza de Java con sus números de línea.
  • El ID de error es la hora en milisegundos.
  • Lo guardamos el 8 de septiembre de 2026, con una traza de 37 pasos, y seguía igual el 14, por el enlace y por la dirección final, y el 23, las dos veces con una traza de 18 pasos.
  • Un renglón por debajo, la misma página enlaza un PDF titulado «Acuerdo del Consejo de Gobierno sobre Open Data Euskadi (pdf, 268 kb)», que el 23 de septiembre respondía 200 con un documento escaneado de 270.547 bytes.
Lo que no decimos
  • Por qué falta el datasource ni desde cuándo: la copia más antigua que conservamos es del 8 de septiembre de 2026 (la del 31 de agosto la sobrescribió esa misma captura).
  • Qué versión de WebLogic o de Java hay detrás: la traza no la dice.
  • Que la traza permita nada más que leerla: no lo hemos probado ni lo vamos a probar.
  • Que la aplicación no funcione con otros parámetros: solo hemos pedido el enlace de la página de orígenes, en castellano y en euskera.
  • Qué dice el PDF: es un escaneo y no lo hemos leído; el enlace lo titula como el acuerdo.
Procedencia

De dónde sale cada cita

Cada trozo de código de esta ficha está en un fichero guardado tal como lo entregó el servidor, con su huella (sha256) y su hora. Las citas entre «» se comprueban por programa contra ese fichero antes de publicar.

Desgobierno Digital · https://desgobiernodigital.com/piezas/euskadi-datasource/ · copia impresa de la edición generada el 19 de octubre de 2026 · Un proyecto de BQuant · correcciones: @Gsnchez