jueves, 25 de junio de 2015

Error: Unable to find suitable inbound binding.

Estoy participando en un proyecto de migración a la versión 12c de Oracle SOA Suite.

Existen algunos servicios de integración con OTM (Oracle Transportation Management) que se requiere migrar de la versión 10g a 12c.

El requerimiento es NO MODIFICAR estos servicios, debido a que son BPEL proporcionados por Oracle para la integración con OTM. Por lo que sólo los migré.

El procedimiento de migración fue el natural: 10g > 11g > 12c. Tomando en cuenta que de 10g hay que migrar por lo menos a la versión 11.1.1.7, para posteriormente poder saltar a 12c.

La explicación anterior, es para hacer notar que si dejamos que JDeveloper haga el trabajo de migración de los proyectos, podría ser obvio que no deberíamos tener problemas al compilar y desplegar estos servicios. Esto no sucede así de fácil. Si bien es cierto que JDeveloper se encarga de hacer la actualización de los proyectos a la versión 12c, no todo es color de rosa.

Al compilar, no hay ningún problema:

Buildfile: C:\Oracle\Middleware\JDev12c\soa\bin\ant-sca-compile.xml

BUILD SUCCESSFUL
Total time: 35 seconds



Sin embargo, al intentar desplegar (previa configuración en WebLogic de los recursos necesarios: data sources, jndi, etc), me encuentro con el siguiente error:

[12:19:02 PM] Error deploying archive sca_*_rev1.0.jar to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[12:19:02 PM] HTTP error code returned [500]
[12:19:02 PM] Error message from server:
There was an error deploying the composite on soa_server2: Operation failed - Member(Id=1, Timestamp=2015-06-23 17:32:54.86, Address=127.0.0.1:50000, MachineId=54452, Location=site:,machine:SOAMachine1,process:16139,member:soa_server1, Role=WeblogicServer):[JCABinding] [*.WshInboundInterface/1.0]Unable to complete load due to: Generic error.
JCA binding runtime error.
Cause: Unable to find suitable inbound binding.
Please inspect the diagnostic log to determine the reason, and if possible take corrective action.
: Generic error.
JCA binding runtime error.
Cause: Unable to find suitable inbound binding.
Please inspect the diagnostic log to determine the reason, and if possible take corrective action.
; .  Please see the server diagnostic logs on soa_server2 for details.

[12:19:02 PM] Check server log for more details.
[12:19:02 PM] Error deploying archive sca_*_rev1.0.jar to partition "default" on server soa_server2 [http://127.0.0.1:8001] 



La recomendación es verificar el log de diagnóstico de los servidores de SOA. Para determinar la causa del error y poder dar una solución al problema en el despliegue.

En el log de diagnóstico me encuentro con lo siguiente:

[2015-06-25T11:41:44.257-05:00] [soa_server1] [ERROR] [SOA-21537] [oracle.integration.platform.blocks.deploy.servlet] [tid: [ACTIVE].Ex
ecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: weblogic] [ecid: 05a819cc-4238-4247-8353-10636defefa8-000
3b4e4,0] [APP: soa-infra] [DSID: 0000Ksfa8zgFw000jzwkno1LYTuJ000006] Sending back error message: There was an error deploying the compo
site on soa_server1: Operation failed - Member(Id=1, Timestamp=2015-06-23 17:32:54.86, Address=172.17.100.69:50000, MachineId=54452, Lo
cation=site:,machine:SOAMAchine1,process:16139,member:soa_server1, Role=WeblogicServer):[JCABinding] [WshReceivePShipmentFromOtm.WshIn
boundInterface/1.0
]Unable to complete load due to: Generic error.[[
JCA binding runtime error.
Cause: Unable to find suitable inbound binding.
Please inspect the diagnostic log to determine the reason, and if possible take corrective action.
: Generic error.
JCA binding runtime error.
Cause: Unable to find suitable inbound binding.


Lo que realmente está sucediendo, es que el servidor no está logrando resolver una interface de un WSDL del proyecto.

Revisando el composite generado en 12c (en 10g no existía composite), me doy cuenta que tengo únicamente servicios síncronos involucrados en la integración. Sin embargo, en el código del composite, dentro de las referencias, me encuentro con lo siguiente:

<reference ui:wsdlLocation="WshOtmInboundGrp.wsdl" name="WshInboundInterface">
    <!--interface.wsdl callbackInterface="http://xmlns.oracle.com/pcbpel/adapter/db/WshOtmInboundGrp/#wsdl.interface(WshOtmInboundGrp_ptt)"
        interface="http://xmlns.oracle.com/pcbpel/adapter/db/WshOtmInboundGrp/#wsdl.interface(WshOtmInboundGrp_ptt)"/-->

    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/db/WshOtmInboundGrp/#wsdl.interface(WshOtmInboundGrp_ptt)"/>
</reference>


La parte marcada en rojo, es el código originalmente generado por JDeveloper después de realizar el proceso de migración. La parte marcada en verde, es la solución al problema para que el proyecto despliegue correctamente.

Resulta que, por alguna razón desconocida para mi, JDeveloper coloca una interface de callback de forma automática en las referencias del compuesto. A pesar de que los servicios involucrados son todos síncronos. Es decir, no existe un puerto para propósitos de callback definido en ninguno de los WSDL del proyecto. Por esta razón, el servidor no identifica esta interface como una interface de callback y todo resulta en un error al desplegar.

Una vez corregidas todas las referencias del composite, eliminando únicamente el callbackinterface, intentamos desplegar nuevamente el proyecto:

[12:11:06 PM] Creating HTTP connection to host:127.0.0.1, port:8001
[12:11:06 PM] Sending internal deployment descriptor
[12:11:06 PM] Sending archive - sca_*_rev1.0.jar
[12:11:13 PM] Received HTTP response from the server, response code=200
[12:11:13 PM] Successfully deployed archive sca_*_rev1.0.jar with 0 warning/severe messages to partition "default" on server soa_server2 [http://127.0.0.1:8001]
[12:11:14 PM] Elapsed time for deployment:  55 seconds
[12:11:14 PM] ----  Deployment finished.  ----


Espero que les sea de utilidad.

No hay comentarios.:

Publicar un comentario