Anda di halaman 1dari 14

Endpoints

Define un destino externo de un mensaje sali

ente.
Un elemento <end
point> define un 'punto final' en la configuracion.
Un endpoint pued
e ser comprendido como un punto final de la direccion, basado en
WSDL
<endpoint [name="string"] [key="string"]>
address-endpoint | default-endpoint | wsdl-endpoint | load-balanced-endp
oint | fail-over-endpoint
</endpoint>
**********------------------------**********
Todos los endpoint pueden tener un atributo 'name' which especifica el n
ombre del endpoint y puede ser referenciado
por otros endpoint utilizando el atributo 'key'.
-> Por ejemplo si hay un endpoint llamado 'foo' se puede utilizar en cu
alquier lugar donde se llame a foo
<endpoint key="foo">
*DATO: Esto permite la reutilizacion de endpoints definidos
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Mediators - Catalogo de Mediadores
-----------------------------------Send mediator
|
Enviar mensajes fuera de Synpase con un en
dpoint
<send>
(endpointref | endpoint)+
</send>
-----------------------------------Ex. <definitions xmlns="http://ws.apache.org/ns/synapse">
<in> <!-- in-path -->
<send>
<endpoint>
<address uri="http://localhost:9
000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
<drop/>
</in>
<out> <!-- out-path -->
<send/>
</out>
</definitions>
------------------------------------------------------------------------

El <send> es utilizado dentro del mediador '<in>', tanto la solicitud y


la
respuesta pasarn por la secuencia principal.
-> Solo los mensajes de solicitud pasarn por el mediador <in>.
-> Solo los mensajes de respuesta pasarn por el mediador <out>.
La solicitud ser enviada al endpoint con la uri indicada y la respuesta
ser enviada al 2do mediador <send> el cual lo devolver al solicitante.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Log mediator
|
Registra mensajes mediados
<log [level="string"] [separator="string"]>
<property name="string" (value="literal" | expression="xpath"
)/>*
</log>
-----------------------------------Ex.
<log level="custom" xmlns=http://ws.apache.org/ns/synapse>
<property name="text"
expression="fn:concat('Stock price - ',
get-property('stock_price'))"/>*
</log>
-----------------------------------------------------------------------El level de <log> se establece en "custom". Se registra la propi
edad 'stock_price'
establecida previamente en la mediacion del mensaje.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Property Mediator
|
Establece o elimina propiedades asociadas
CON el mensaje
|
(las propiedades estab
lecidas en el mensaje pueden ser recuperadas con
|
s
ynapse:get-property(nombre-prop), funcion de Xpath)
<property name="string" [action=set|remove] (value="literal" | e
xpression="xpath") [scope=transport|axis2|axis2-client]/>
-----------------------------------Ex. <property name="symbol"
expression="fn:concat('Normal Stock ', //m0:getQuote/m0:request/m0:symbol)"
xmlns:m0="http://services.samples/xsd
"/>
<log level="custom">
<property name="symbol" expression="get-property('symbol
')"/>
<log/>
-----------------------------------------------------------------------Se establece la propiedad "symbol" y luego se puede registrar u
tilizando el
mediador <log>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Sequence Mediator
|
Se refiere a un elemento de sequencia defini
do,

que se utilizada para llamar una sequendia d

e mediacion
<sequence key="name"/>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Event Mediator
|
Envia notificaciones de eventos a un origen
de eventos, publica mensajes a temas predefinidos
<event xmlns="http://ws.apache.org/ns/synapse" topic="" [express
ion=""] />
-----------------------------------Ex. <definitions xmlns="http://ws.apache.org/ns/synapse">
<sequence name="PublicEventSource" >
<log level="full"/>
<event topic="SampleEventSource"/>
</sequence>
<proxy name="EventingProxy">
<target inSequence="PublicEventSource" />
</proxy>
</definitions>
-----------------------------------------------------------------------Se define en el <event topic> como "SampleEventSource". Cuando u
na notificacion
de eventos viene al <proxy name="EventingProxy"> los mensajes pa
san a ser registrados
y enviados a SampleEventSource
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Drop Mediation
|
El Drop Mediator detiene el procesamiento
del mensaje actual
<drop/> <!-- Es como un break; -->
-----------------------------------<definitions xmlns="http://ws.apache.org/ns/synapse">
<filter source="get-property('To')" regex=".*/StockQuote
.*">
<send>
<endpoint>
<address uri="http://localhost:9
000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
<drop/>
</filter>
<send/>
</definitions>
-----------------------------------------------------------------------En este caso el mensaje es botado despues de enviar el <endpoint
>.
Asi se evita que el mensaje sea enviado 2 veces desde la ruta de
l in-path
<in> <!-- in-path -->
<send>
<endpoint>
<address uri="http://localhost:9

000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
<drop/>
</in> <!-- in-path -->
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Enrich Mediator
|
Enriquece un mensaje
<enrich>
<source \[clone=true\|false\] \[type=custom\|envelope\|b
ody\|property\|inline\] xpath="" property="" />
<target \[action=replace\|child\|sibiling\] \[type=custo
m\|envelope\|body\|property\|inline\] xpath="" property="" />
</enrich>
-----------------------------------<enrich> xmlns="http://ws.apache.org/ns/synapse"
<source clone="false" type="envelope" xpath="" proper
ty="" />
<target action="replace" type="body" xpath="" propert
y="" />
</enrich>
-----------------------------------------------------------------------Se establece el simbolo de propiedad
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Filter Mediator
| Puede ser utilizado con el filto XPath de m
ensajes.
| Hay 2 mododos de ut
ilizarlo
<filter (source="xpath" regex="string") | xpath="xpath">
mediator+
</filter>
-----------------------------------*Se puede utilizar para manejar escenarios de trabajo
-----------------------------------<filter (source="xpath" regex="string") | xpath="xpath">
<then [sequence="string"]>
| los mensajes
que tengan exito son mediados por el 'then'
mediator+
</then>
<else [sequence="string"]>
| los mensajes
que fallen seran mediados por el 'else'
mediator+
</else>
</filter>
-----------------------------------Ex. <filter source="get-property('To')" regex=".*/StockQuote.*">
<then>
<send/>
| send mediator
</then>
<else>
<drop/>
| drop mediator
</else>
</filter>
------------------------------------------------------------------------

En este ejemplo el filtro de 'source' obtiene el valor de ('To'), donde


al devolver true hace uso del <send/> el mensaje,
pero si es false bota el mensaje con el </drop>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------In & Out Mediators
|
Actuan como filtros predefinidos
-----------------------------------------------------------------------<in>
| Los mensajes que estan en camino a
entrar recorren el <in/>
mediator+
</in>
<out>
| Los mensajes que estan en camino a
salir recorren el <out/>
mediator+
</out>
-----------------------------------Ex. <syn:sequence name="main" xmlns:syn="http://ws.apache.org/ns/synapse
">
<syn:in>
<syn:log level="full"/>
<syn:filter source="get-property('To')" regex="http:
//localhost:9000.*">
<syn:send/>
</syn:filter>
</syn:in>
<syn:out>
<syn:send/>
</syn:out>
</syn:sequence>
-----------------------------------------------------------------------Los mensajes que llegan al ESB se envan utilizando wsa:to a la direccion
otorgada
y las respuestas se enviarn al solicitante.
----------------------------------------------------------------------------------------------------------------------------------------------*DATO Estos mediadiores son inutiles para ser utilizados en sequencias P
roxy Services, pero
Proxy Services tiene sequencias predefinidas para mensajes de entrada(in
) y salida(out)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Switch Mediator
|
Es un filtro XPath. El xpath se evalua y
devuelve un String, este String se compara
|
con la exprecion regu
lar (regex) en cada declaracion <case />. Si se encuentra una
|
coincidencia de <case
/> esta se ejecuta. Si ninguno de los <case/> se ejecuta se
|
especifica un valor <
default/> que se ejecutar
-----------------------------------------------------------------------<switch source="xpath">
<case regex="string">
mediator+
</case>+
<default>

mediator+
</default>?
</switch>
*El "Switch Mediator" evaluar el 'source="xpath" expresion' entregado en
<switch source="xpath"/> y lo har conicidir con el <regex="string"/>
en donde si los casos especificados no coinciden y existe un <default/>
este se ejecutar.
-----------------------------------Ex. <switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http:/
/services.samples/xsd">
<case regex="IBM">
<!-- El Property Mediator establece una propie
dad local en el mensaje actual -->
<property name="symbol" value="Great stock - I
BM"/>
</case>
<case regex="MSFT">
<property name="symbol" value="Are you sure? MSFT"/>
</case>
<default>
<!-- Existe la posibilidad de asignar el resul
tado de una expresion Xpath, as -->
<property name="symbol"
expression="fn:concat('Normal St
ock - ', //m0:getQuote/m0:request/m0:symbol)"
xmlns:m0="http://services.sample
s/xsd"/>
</default>
</switch>
-----------------------------------------------------------------------Aqui se obtiene texto del simbolo(elemento) y se coincide con lso valore
s MSFT e IBM de <case regex="IBM"/><case regex="MSFT"/>
----------------------------------------------------------------------------------------------------------------------------------------------*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Router Mediator
|
Ruta de mensajes basados en el filtrado
Xpath -> ya obsoleta, pero s epuede utilizar
|
"Filter Mediator" o "Conditional Router
Mediator"
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *** Filter Mediator
o por el XPath filtrando mensajes.

El "Filter Mediatior" puede ser usad


|

Hay dos modo

s de funcion.
1.- Si el usuario especifica el Xpath, se evalua como 'true' o '
false'.
2.- Si el usuario especifica una 'regex' el String retorna de ev
aluar el Xpath y se compar con el regex
* En ambos casos si la evaluacion de la expresion devuelve 'true
' se ejecutan los child Mediators.

***** El Filter Mediator es similar a la estructura if - else


-----------------------------------------------------------------------<filter (source="xpath" regex="string") | xpath="xpath">
mediator+
</filter>
El Filter Mediator prueba la expresion Xpath entregada como bool
ean expression, o compara el resultado
de una expression Xpath como un String.
Si la prueba tiene exito, el Filter Mediator ejecutar los Enclose
d Mediator en secuencia.
Tambien se puede utilizar el Filter Mediator para manejar escena
rios de fracaso.
<filter (source="xpath" regex="string") | xpath="xpath">
<then [sequence="string"]>
mediator+
</then>
<else [sequence="string"]>
mediator+
</else>
</filter>
En este caso la condicion de filtro sigue siendo lo mismo y los
mensajes exitosos sern mediados
utilizando el <then/> en secuencia, mientras que los fallidos so
n mediados con el <else/>
-----------------------------------Ex. <filter source="get-property('To')" regex=".*/StockQuote.*">
<then>
<send/>
</then>
<else>
<drop/>
</else>
</filter>
-----------------------------------------------------------------------En este ejemplo el <filter/> obtiene el valor 'To' y lo hace coincidir c
on la regex.
Si el valor devuelve True se envia el mensaje.
Si el valor devuelvee False botar el mensaje.
----------------------------------------------------------------------------------------------------------------------------------------------*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Conditional Router Mediator
|
Se puede utilizar para especific
ar el enrutamiento
|
del mensaje segun las condiciones dadas.
|
Este mediador comprueba si el <condition /> es True e interfiere
|
en el uso de la secuencia <target />. Una <route/> podria romper la <route/> si
el

|
breakRoute es true.
-----------------------------------------------------------------------<conditionalRouter continueAfter="(true|false)">
<route breakRoute="(true|false)">
<condition ../>
<target ../>
</route>+
</conditionalRouter>
-----------------------------------Ex.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------XSLT Mediator
|
El XSLT Mediator aplica un XSLT Trans
formation en un elemento del mensaje actual.
|
El atributo d
e origen especifica el elemento que se ha seleccionado para aplicar el XSLT Tran
sformation.
|
En el caso do
nde no se especifica el elemento de origen, se utiliza el primer hijo de SOAP co
mo elemento seleccionado.
|
Ocionalmente,
los parametros pueden pasar en las transformacions a traves de los elementos de
propiedad. Estas propiedades
|
corresponden
al XSL parameters y pueden ser pueden acceder durante la transformacion por
|
<xsl:param na
me="the name of the property"/>. El elemento define algunas funciones que deben
ser explicitamente establecidos
|
a la Transfor
merFactory.
----------------------------------------------------------------------------------------------------------Ex.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*DATO
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------URLRewrite Mediator
|
El URLRewrite Mediator es usado para mod
ificar y
| transformar la URL disponible en el Mensaje
Ex.
<rewrite>
<rewriterule>

<action type="replace" regex="soap" value="servi


ces" fragment="path" />
</rewriterule>
</rewrite>
Por ejemplo, si nuestra solicitud es la siguiente:
>ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy1
-----------------------------------------------------------------------La direccion URL de la solicitud contiene el contexto SOAP. En el ESB se
rver, todos los servicios se implementan bajo
un contexto llamao "services" de forma predeterminada. Entonces, el enca
bezado "To" es reescrito remplazando el contexto SOAP con "services".
Por lo tatno, las solicitudes se entregaran en el servidor correctamente
.
----------------------------------------------------------------------------------------------------------------------------------------------*DATO
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Ex.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*DATO
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Ex.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*DATO
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Ex.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*DATO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Mediation Sequences
-> Pueden contener otros mediadores y ejecutarlos
-> Cuando un mensaje entra en la secuencia se enva por todos sus
mediadores
_______________
|
Sequence
|
||
| Mediator 1 |
| Mediator 2 |
| Mediator 3 |
| Mediator X |
| Mediator .. |

Hay 2 tipos de sequencias(Mediation Sequences = Sequence)


*In-line Sequences
<sequence name="string">other mediators</sequence>
La secuencia in-line tiene sus child mediators dentro de la secuencia
*Named Sequences
<sequence key="name"/>
Refiere a otra secuencia usando una 'key'. Esto permite la reutilizacion
de seucencias
-> Pueden ser definidas dentro de la configuracion de synpase.xml o en e
l registro
Existen 2 secuencias especiales
-> * Main
Envia un mensaje sin mediacion
<syn:sequence name="main" xmlns:syn="http://ws.apache.org/ns/syn
apse">
<syn:log/>
<syn:drop/>
</syn:sequence>
****------------------------------------****
-> * Fault
https://docs.wso2.com/display
/ESB403/Generic+Properties
Registra el mensaje incluyendo
la capacidad de carga y cualquier error u excepcion enco
ntrado
y detiene su procesamiento posterior.
<syn:sequence name="fault" xmlns:syn="http://ws.apache.org/ns/sy
napse">
<syn:log level="full">
<syn:property name="MESSAGE" value="Executing de
fault&quot;fault&quot; sequence"/>
<syn:property name="ERROR_CODE" expression="getproperty('ERROR_CODE')"/>
<syn:property name="ERROR_MESSAGE" expression="g

et-property('ERROR_MESSAGE')"/>
</syn:log>
<syn:drop/>
</syn:sequence>
****------------------------------------****
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Proxys Services
"Pueden" definir los transportes sobre los cuales se expone el servicio,
y apuntan
a las "Mediation Sequences" que se deben utilizar para procesar los mens
ajes de peticion y respuesta
a traves del "Proxy Service".
*DATO -> Un Proxy Service tal vez SOAP o un servicio REST/POX sobre(a tr
avs) de HTTPs o SOAP, POX, texto plano
o un servicio Binary/Legacy para otros medios de transporte, tales como
los sistemas de archivos JMS y VFS
El elemento <proxy> es usado para definir un "Synapse Proxy Service"
<proxy name="string" [transports="(http |https |jms |.. )+|all"] [pinned
Servers="(serverName )+"] [serviceGroup="string"]>
<description>...</description>?
<target [inSequence="name"] [outSequence="name"] [faultSequence=
"name"] [endpoint="name"]>
<inSequence>...</inSequence>?
inSquenc
e o enpoint para la configuracion de un proxy
<outSequence>...</outSequence>?
define como se manejan las respuestas
<faultSequence>...</faultSequence>?
<endpoint>...</endpoint>?
enpoint o inSquence para la configuracion de un proxy
</target>?
<publishWSDL key="string" uri="string">
puede cargar
un documento WSDL desde el atributo "key" o desde otro lugar con el atribuo uri
,
( <wsdl:definition>...</wsdl:definition> | <wsdl20:des
cription>...</wsdl20:description> )?
<resource location="..." key="..."/>*
</publishWSDL>?
<enableAddressing/>?
<enableSec/>?
<enableRM/>?
<policy key="string" [type="(in | out)"]/>?
// Politicas d
e servicio o niveles de mensajes opcionales, talezs como 'WS-Security y/o Politic
as WS-RM'
<parameter name="string">
// Parametros opcional
es de servicio como 'transport.jms.ConnectionFactory'
string | xml
</parameter>

</proxy>
--------------------------------------------------------------------------------------------------------------Ex. <publishWSDL key="my.wsdl">
<resource location="http://www.standards.org/standard.ws
dl" key="standard.wsdl"/>
</publishWSDL>
--------------------------------------------------------------------------------------------------------------Ejemplos ESB Proxy Services
-> Muestra 150 - Introduccion a Proxy Services
***********************************************
<definitions xmlns="http://ws.apache.org/ns/synapse">
<proxy name="StockQuoteProxy">
<target>
<endpoint>
<address uri="http://localhost:9000/serv
ices/SimpleStockQuoteService"/>
</endpoint>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL uri="file:repository/samples/resources/prox
y/sample_proxy_1.wsdl"/>
</proxy>
</definitions>

Anda mungkin juga menyukai