Frequently asked Questions
Q: Where do I find the source code of the ESB?
A: The router is the core project of the monitor. It is an Eclipse RCP plugin named com.predic8.membrane.core. The project is built using Maven 3. (Install Maven and execute mvn package)
You'll find the source code via git on the Download page.
Q: Does Membrane ESB support Hot Deployment?
A:Yes. You can add and modify service proxies during the execution of Membrane ESB. Just modify the proxies.xml file and save it. An instant later the new configuration should be deployed. To activate or deactivate hotdeployment edit the monitor-beans.xml in the conf directory.
<?xml version="1.0" encoding="UTF-8"?> <spring:beans xmlns="http://membrane-soa.org/router/beans/1/" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://membrane-soa.org/router/beans/1/ http:/www.predic8.com/schema/router/conf/router-conf.xsd"> <router/> <transport coreThreadPoolSize="5" socketTimeout="30000" tcpNoDelay="true" httpClientRetries="5" autoContinue100Expected="true"> <ruleMatching /> <dispatching /> <userFeature /> <httpClient /> </transport> </spring:beans>
Q: Could Membrane be used in the Cloud?
A: Yes. It is build with the cloud in mind:
- Membrane supports REST and uses REST as protocol for remote administration and the management of clusters.
- Membrane can make applications ready for the cloud, e.g. you can restify SOAP services.
- You can run Membrane in the cloud.
Q: Can Membrane manipulate intercepted request and response message?
A: Membrane is made to be used for such tasks as intercepting and then manipulating messages. Membrane provides several interceptors for the manipulation of messages that you can put into the message flow:
- xmlContentFilter removes XML Content from a message
- With the Groovy Feature you can do everything using a small script
- handerFilter removes HTTP header fields
- soapStackTraceFilter removes stacktraces from SOAP messages
- regExReplacer uses a regular expression pattern to find and replace text
- rest2soap transforms a SOAP message into a REST message
- wsdlRewriter rewrites enpoint addresses in WSDL documents
Q: What Message Exchange Patterns are supported by Membrane ESB?
A: The synchronous Request/Response message exchange pattern over HTTP is supported. One way HTTP invocations using the 201 and 202 status codes are also supported.
Q: Why does Membrane ESB only support the HTTP protocol?
A: Because HTTP is the protocol for REST resources and is the main protocol for SOAP based Web Services. The focus on HTTP allows to use optimizations that gives Membrane ESB an outstanding performance.
Q: Is Membrane ESB really an ESB?
A: An ESB typically provides a reliable bus and provides adaptors for a buch of protokolls. Membrane ESB has no reliable bus and the only supported protocol is HTTP. By these criteria Membrane is not an ESB. During ESB consulting we worked in a lot of projects where HTTP was used in more than 90% of the time and most services invocations were synchronous. So we developed an ESB that provides only HTTP transport but all the other features of an ESB like support for EAI patterns, service monitoring and provisioning. So a better name would be Membrane (E)SB or synchronous ESB or Highspeed ESB.
Q: Can Membrane ESB be used as SOAP Firewall?
A: Yes. Place Membrane inside your DMZ. Then configure a service proxy to forward HTTP and SOAP requests from the outside to an internal server. How to do that is described in the firewall tutorial.
Q: How big is the Time Delay caused by the ESB?
A: It depends on the configuration and what the ESB should do with the messages. Used as a simple Router, Membrane has a latency that is lower than 1 ms (3 KByte message size on a Pentium Centrino Notebook).
Q: When I start using the <accessControl />-Interceptor, my HTTP requests suddenly take several
seconds (compared to milliseconds) to complete. Where is the problem?
A: The cause are (reverse) DNS lookups. Up to version 3.5.2 the <accessControl />-Interceptor always performs reverse DNS lookups for the source IP of the request, even if you do not use a <hostname /> element in the ACL file. These DNS lookups are cached by the Java Virtual Machine, but since JDK version 1.6 only for 30 seconds by default. This means that during manual testing you will almost always experience the lag of a full reverse DNS lookup. You can change the default timeout using the networkaddress.cache.ttl (or sun.net.inetaddr.ttl) and networkaddress.cache.negative.ttl (or sun.net.inetaddr.negative.ttl) properties. Reading the guide is highly advised, as this is a balance between performance and security.
Q: Where do I find the source code?
A: On github.
Q: The ESB keeps crashing after consuming all available memory. Is this a bug?
A: Membrane ESB cannot detect circular requests. The ESB calling itself over and over again floods the memory with requests that cannot be completed. Make sure that no service proxy accidentally routes calls to itself.