I'm afraid not... sorry. You could easily implement one... or modify the existing one, if you want.
Ooops... sorry.... sounds like Kev is saying that HttpRouter already behaves in the way you describe i.e. does not terminate the pipeline... I thought it terminated the pipeline like the other routers.
It certainly seems to be terminating the pipeline when I use it.
We currently have two HttpRouters, an old deprecated one (which does terminate), and a newer, more functional one, which doesn't.
Which are you using? Also, which version of ESB?
org.jboss.soa.esb.actions.routing.http.HttpRouter and JBoss ESB Server 4.7. I follow the HttpRouter action with a action using org.jboss.soa.esb.actions.SystemPrintln, which is not run. Instead, the response from the remote web service is routed back to the original http connection that was made to _my_ service.
1 of 1 people found this helpful
This is definitely the right version and does return the message at the end, continuing the pipeline.
Do you have DEBUG enabled? Can you send us the log and a small example of what you are doing?
OK, you are correct. Looking at the log file again, I do see the SystemPrintln action being run. I will go now.
No worries, thanks for letting us know.
I would expect actions to continue.
FYI - Take a look at the asynchronous continuation sample, it may provide an interesting way to process your requests.
I did a quick re-factor for ESB 5.0 so it uses a http gateway, it worked, latency went up, however it may allow you to do other things.
(Link to downloadable zipfile is at the bottom)
BTW - The httprouter (new) has a few problems:
1) Using this router one must specify the method (get,post,delete, etc) in the configuration tree. If you route to an external server that supports both GET and POST you are stuck because the method factory is created at init time forcing you to use only one.
2) Say you point the router to a web server that serves up a page. This page contains relative links to images. The text/html content comes back however the images do not. As a matter of fact you can't specify anything after the base url, its ignored.
And my router as such:
<property name="endpointUrl" value="http://localhost">
<http-client-property name="max-total-connections" value="100" />
<http-client-property name="max-connections-per-host" value="50" />
<property name="method" value="GET" />
<property name="responseType" value="STRING" />
Urls like this succeed (partially):
- http://localhost:8080/Quickstart_async/http/test (returns text/html only).
Urls like this fail:
I changed the httprouter source:
1) I added support for comma separated method value (GET,POST,DELETE).
2) I changed the code in the process method adding a call to method.setPath to initialize the path and all is good.
AsyncContinuation.pdf 7.7 KB
Thanks, I'll give this a try.