lunes, 29 de junio de 2015

MDS-00054: The file to be loaded does not exist.

Este es un error que se presenta típicamente cuando debido a que en nuestra infraestructura, se encuentra desplegado un compuesto corrupto.

En ocasiones, esto causa que nuestros servidores de SOA (soa_server) no inicien de manera correcta y se vayan a estado ADMIN.

Particularmente el planteamiento de la solución, es para la versión 11g. Sin embargo, continúo trabajando con 12c, por lo que puedo decir que la solución funciona también para esta versión.

El escenario es el siguiente:

Despliego un compuesto sin ningún problema. Por alguna razón, el compuesto se corrompe pero queda desplegado en la infraestructura de SOA. Al intentar levantar el servidor de SOA (soa_server) o re-desplegar el compuesto, se obtiene el siguiente error:

[12:18:51 PM] ----  Deployment started.  ----
[12:18:51 PM] Target platform is  (Weblogic 12.x).
[12:18:52 PM] Running dependency analysis...
[12:18:52 PM] Building...
[12:19:29 PM] Deploying profile...
[12:19:29 PM] Updating revision id for the SOA Project 'CompuestoCorrupto.jpr' to '1.0'..
[12:19:30 PM] Wrote Archive Module to C:\JDeveloper\mywork\12c\JDevSOA\OTMServices\CompuestoCorrupto\deploy\sca_CompuestoCorrupto_rev1.0.jar
[12:19:31 PM] Deploying sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[12:19:31 PM] Processing sar=/C:/JDeveloper/mywork/12c/JDevSOA/OTMServices/CompuestoCorrupto/deploy/sca_CompuestoCorrupto_rev1.0.jar
[12:19:31 PM] Adding sar file - C:\JDeveloper\mywork\12c\JDevSOA\OTMServices\CompuestoCorrupto\deploy\sca_CompuestoCorrupto_rev1.0.jar
[12:19:31 PM] Preparing to send HTTP request for deployment
[12:19:31 PM] Creating HTTP connection to host:127.0.0.1, port:8001
[12:19:31 PM] Sending internal deployment descriptor
[12:19:31 PM] Sending archive - sca_CompuestoCorrupto_rev1.0.jar
[12:19:37 PM] Received HTTP response from the server, response code=500
[12:19:37 PM] Error deploying archive sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[12:19:37 PM] HTTP error code returned [500]
[12:19:37 PM] Error message from server:
There was an error deploying the composite on soa_server2: oracle.fabric.common.FabricDeploymentException: oracle.fabric.common.FabricException: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist.: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist. {rootCauses=[]}: oracle.fabric.common.FabricException: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist.: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist..

[12:19:37 PM] Check server log for more details.
[12:19:37 PM] Error deploying archive sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[12:19:37 PM] Deploying sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server1 [http://127.0.0.1:8001]
[12:19:37 PM] Processing sar=/C:/JDeveloper/mywork/12c/JDevSOA/OTMServices/CompuestoCorrupto/deploy/sca_CompuestoCorrupto_rev1.0.jar
[12:19:37 PM] Adding sar file - C:\JDeveloper\mywork\12c\JDevSOA\OTMServices\CompuestoCorrupto\deploy\sca_CompuestoCorrupto_rev1.0.jar
[12:19:37 PM] Preparing to send HTTP request for deployment
[12:19:37 PM] Creating HTTP connection to host:127.0.0.1, port:8001
[12:19:37 PM] Sending internal deployment descriptor
[12:19:37 PM] Sending archive - sca_CompuestoCorrupto_rev1.0.jar
[12:19:45 PM] Received HTTP response from the server, response code=500
[12:19:45 PM] Error deploying archive sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server1 [http://127.0.0.1:8001]
[12:19:45 PM] HTTP error code returned [500]
[12:19:45 PM] Error message from server:
There was an error deploying the composite on soa_server1: oracle.fabric.common.FabricDeploymentException: oracle.fabric.common.FabricException: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist.: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist. {rootCauses=[]}: oracle.fabric.common.FabricException: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist.: Error in getting XML input stream: oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/CompuestoCorrupto_rev1.0/composite.xml does not exist..

[12:19:45 PM] Check server log for more details.
[12:19:45 PM] Error deploying archive sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server1 [http://127.0.0.1:8001]
[12:19:45 PM] Deployment cancelled.
[12:19:45 PM] ----  Deployment incomplete  ----.
[12:19:46 PM] Error deploying archive file:/C:/JDeveloper/mywork/12c/JDevSOA/OTMServices/CompuestoCorrupto/deploy/sca_CompuestoCorrupto_rev1.0.jar
 (oracle.tip.tools.ide.fabric.deploy.common.SOARemoteDeployer)


Reiniciar el dominio, no es la solución, por si lo estaban considerando. Este compuesto ya quedó almacenado en el MDS y, además, está corrupto.

Afortunadamente existe una solución, documentada en My Oracle Support (Doc ID 1380835.1), que nos ayudará a solucionar el problema.

Lo primero que debe hacerse, es descargar una aplicación llamada ShareSOAInfraPartition. Esta aplicación está empaquetada en un archivo *.ear y se encuentra disponible en el siguiente enlace:

https://support.oracle.com/epmos/main/downloadattachmentprocessor?attachid=1380835.1%3AEARFILE&docType=HOWTO&action=download

Con ayuda de esta aplicación, vamos a eliminar el despliegue de la infraestructura SOA. Supongamos que la infraestructura está abajo, debido a que no podemos levantar los servidores de SOA por los compuestos corruptos. En este caso, haremos uso de WLST y de la aplicación que acabamos de descargar.

Ubicamos el comando, dentro de nuestro Middleware Home, para ejecutar WLST. Debería estar en la siguiente ruta:

$MIDDLEWARE_HOME/oracle_common/common/bin

Ejecutamos ./wlst.sh

Nos conectamos a nuestro servidor de administración, ejecutando el comando connect de WLST:

connect()

Nos va a pedir usuario, password y URL de conexión. La URL tiene la siguiente forma:

t3://172.17.100.69:7001

El siguiente paso es desplegar la aplicación que hemos descargado (
ShareSOAInfraPartition.ear). Esto lo vamos a hacer, también a través de WLST:

deploy('ShareSoaInfraPartition','ShareSoaInfraPartition.ear',upload='true')

Nota: El archivo ShareSoaInfraPartition.ear, se encuentra también debajo de la ruta donde estamos ejecutando WLST.

A continuación, haremos un export de los compuestos que están desplegados en nuestra infraestructura. Esta información se almacena en el MDS. El resultado del export será un archivo XML con la lista de los compuestos desplegados (incluyendo el compuesto corrupto). Esto lo vamos a hacer ejecutando el siguiente comando de WLST:

exportMetadata(application='ShareSoaInfraPartition',server='AdminServer',toLocation='/fmw11g/u01/tmp',docs='/deployed-composites/deployed-composites.xml')

El resultado de este comando dejará, debajo de la ruta /u01/tmp/deployed-composites, un archivo llamado deployed-composites.xml. Dentro de este archivo veremos algo como lo siguiente:

<?xml version='1.0' encoding='UTF-8'?>
<deployed-composites>
<composite-series name="default/Compuesto1" default="
default/Compuesto1!1.0">
<composite-revision dn="
default/Compuesto1!1.0" state="on" mode="active" location="dc/soa_a00a1072-58a3-4cfa-b66c-01b95c3a79d9">
<composite dn="
default/Compuesto1!1.0*soa_a00a1072-58a3-4cfa-b66c-01b95c3a79d9" scaEntityId="10099" deployedTime="2015-06-26T12:16:06.567-05:00"/>
</composite-revision>
</composite-series>
<composite-series name="default/Compuesto2" default="default/Compuesto2!1.0">
<composite-revision dn="
default/Compuesto2!1.0" state="on" mode="active" location="dc/soa_a00a1072-58a3-4cfa-b66c-01b95c3a79d9">
<composite dn="
default/Compuesto2!1.0*soa_a00a1072-58a3-4cfa-b66c-01b95c3a79d9" scaEntityId="10099" deployedTime="2015-06-26T12:16:06.567-05:00"/>
</composite-revision>
</composite-series>

<composite-series name="default/CompuestoCorrupto" default="default/CompuestoCorrupto!1.0">
<composite-revision dn="
default/CompuestoCorrupto!1.0" state="on" mode="active" location="dc/soa_a00a1072-58a3-4cfa-b66c-01b95c3a79d9">
<composite dn="
default/CompuestoCorrupto!1.0*soa_a00a1072-58a3-4cfa-b66c-01b95c3a79d9" scaEntityId="10099" deployedTime="2015-06-26T12:16:06.567-05:00"/>
</composite-revision>
</composite-series>

</deployed-composites> 

Lo siguiente es eliminar el compuesto corrupto del XML (marcado en rojo), guardar y hacer un import de ese nuevo archivo XML al MDS.

El import, al igual que el export que hicimos, se realiza a través del siguiente comando de WLST:

importMetadata(application='ShareSoaInfraPartition',server='AdminServer',fromLocation='/u01/tmp',docs='/deployed-composites/deployed-composites.xml')

Una vez concluído el import, reiniciamos el servidor de SOA (soa_server) y el compuesto ya no se encontrará desplegado. Si intentamos nuevamente el despliegue, este es el resultado:

[01:37:07 PM] ----  Deployment started.  ----
[01:37:07 PM] Target platform is  (Weblogic 12.x).
[01:37:07 PM] Running dependency analysis...
[01:37:07 PM] Building...
[01:37:44 PM] Deploying profile...
[01:37:44 PM] Wrote Archive Module to C:\JDeveloper\mywork\12c\JDevSOA\OTMServices\CompuestoCorrupto\deploy\sca_CompuestoCorrupto_rev1.0.jar
[01:37:45 PM] Deploying sca_CompuestoCorrupto_rev1.0.jar to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[01:37:45 PM] Processing sar=/C:/JDeveloper/mywork/Comex/12c/JDevSOA/OTMServices/CompuestoCorrupto/deploy/sca_CompuestoCorrupto_rev1.0.jar
[01:37:45 PM] Adding sar file - C:\JDeveloper\mywork\12c\JDevSOA\OTMServices\CompuestoCorrupto\deploy\sca_CompuestoCorrupto_rev1.0.jar
[01:37:45 PM] Preparing to send HTTP request for deployment
[01:37:45 PM] Creating HTTP connection to host:127.0.0.1, port:8001
[01:37:45 PM] Sending internal deployment descriptor
[01:37:45 PM] Sending archive - sca_CompuestoCorrupto_rev1.0.jar
[01:37:52 PM] Received HTTP response from the server, response code=200
[01:37:52 PM] Successfully deployed archive sca_CompuestoCorrupto_rev1.0.jar with 0 warning/severe messages to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[01:37:52 PM] Elapsed time for deployment:  46 seconds
[01:37:52 PM] ----  Deployment finished.  ----


Es todo, tendremos nuestro compuesto desplegado nuevamente. O bien, nuestros servidores de SOA levantarán sin problema alguno.

No hay comentarios.:

Publicar un comentario