2013-04-08 10 views
6

Come posso impostare l'indirizzo endpoint dinamicoWSO2 ESB: Cambiare dinamicamente ENDPOINT INDIRIZZO

ho impostato l'indirizzo endpoint per una proprietà in fase di esecuzione e la necessità di sostituire URI di indirizzo endpoint con il suo valore.

Come posso impostare il valore URI dell'indirizzo con questo valore?

risposta

1

Utilizzare header mediator per impostare l'intestazione "A" indirizzo con il valore estratto dalla proprietà assegnata.

+0

Grazie Mr ** Shelan Perera ** per la vostra rapida risposta. Ho usato il mediatore di intestazione per questo problema, ma voglio usare l'artefatto di End Point in modo da avere più flessibilità se richiesto. come posso usare l'espressione xpath nell'endpoint? ho usato il modello dell'endpoint ma quando creo l'endpoint dal modello in console, posso solo impostare il campo Valore non Espressione nel suo parametro. inoltre creo l'indirizzo ciao di endpoint e imposta Expression con get-property ('EPadd') ma non funziona. non so cosa dovrebbe essere scritto nel campo Xpath quando si crea un EndPopint! –

2

Utilizzare il pulsante di intestazione per impostare l'intestazione "su" e utilizzare l'endpoint predefinito. Controllare this post per il campione.

+0

Questo campione ha funzionato per me! L'unico cambiamento che ho fatto per farlo funzionare era rimuovere i tag e dall'alto e aggiungerli all'interno di un tag nella parte inferiore. Sarebbe come questo:

lsantsan

0

Quando il server non pubblica il proprio WSDL, vedere Commento Myobis here. Provato addPort senza successo.

3

È possibile creare il punto finale come

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="MyEndpoint"> 
    <http uri-template="{uri.var.full}?f={uri.var.f}{+uri.var.extra}" method="put"> 
    </http> 
</endpoint> 

Quindi prima di chiamare l'endpoint 'MyEndpoint' impostare le proprietà .. le proprietà, per essere analizzato per un endpoint deve iniziare con URI.

Ho anche scoperto che se si mette un + davanti al nome della proprietà, non URI codificare esso, quindi è utile per creare i parametri al volo .. altrimenti per i parametri noti, si può fare come sopra per paramameter f

così .. qualcosa di simile

<property name="uri.var.full" value="http://jarhedz.com/viewtopic.php"/> 
<property name="url.var.f" value="2"/> 
<property name="uri.var.extra" value="&t=39"/> 
<send> 
    <endpoint key="MyEndpoint"></endpoint> 
</send> 

dovrebbe portare alla url http://jarhedz.com/viewtopic.php?f=2&t=39

(btw proprio come una nota, se si sta utilizzando l'editor web, sarà lamentano il & .. il suo buggy a s inferno .. salvarlo come

&amp; 

.. e che lo salva come & o impostare la proprietà utilizzando JavaScript)

+0

Se l'URI non è http? –

0

Questo metodo è lavorato per me in modo corretto.

Ho bisogno di creare soffietto URL dinamico

http://localhost:8787/ {parametro dinamico}

All'interno del punto finale url è come questo

http://localhost:8787/ {uri.var. servicepath}

Set "prova" variabile come il mio parametro dinamico (Se è necessario impostare il valore di Espressione impostarlo). Impostare il valore "test" all'interno del mediatore di proprietà.(Ho fatto questo servizio insideproxy)

<property name="uri.var.servicepath" scope="default" type="STRING" value="test"/> 

creare endpoint

Qui ho creato HTTP Punto finale

<endpoint name="ServiceEP" xmlns="http://ws.apache.org/ns/synapse"> 
    <http method="post" uri-template="http://localhost:8787/{uri.var.servicepath}"/> 
</endpoint> 

Quindi aggiungere questo endpoint all'interno del vostro servizio proxy o API

<send> 
    <endpoint key="ServiceEP"/> 
</send> 

Infine il tuo proxy assomiglia a questo

<inSequence> 
    <property name="uri.var.servicepath" scope="default" type="STRING" 
    value="test"/> 

    <send> 
     <endpoint key="SurepayVASAppsEP"/> 
    </send> 
</inSequence> 

come non si può cambiare ogni url parameter.Ex-:

http: // {} uri.var.hostname: {uri.var.port}/{uri.var.servicepath }