In the existing Open-Source ESB bus, since the emergence of the first open-source bus mule in 2003, it is now a scene of great competition. Now, I am focusing on the existing Open-Source ESB bus in terms of performance, scalability, completeness of documents, and difficulty of integration.
I. Cxf
The positioning of cxf is not an ESB bus, but a service framework. It mainly provides API support or context management for service applications.
However, one of its predecessor's celtix is the ESB bus donated by Iona to the open-source community. Therefore, it can still provide the ESB bus function (depending on other containers ). The bus in cxf only serves as a provider that shares resources. These contributed resources are equivalent to binding components (BC) or service engines (SE) in jbi specifications ). Even so, cxf does not provide complete implementation of jbi specifications. It can be said that it is just a similar jbi container.
Cxf supports communication binding with other protocols except HTTP, such as rest, JSON, and CORBA, so it has strong compatibility with Ajax. This is a big advantage compared with other ESB bus.
However, cxf's ESB bus is implemented based on the Spring framework, and spring manages various components in the bus. Spring manages various beans or components through a context configuration file. Compared with other ESB bus (such as JMX), this method does not support dynamic hot deployment. In other words, cxf is not a jbi container and must be attached to other containers for execution. According to the existing data, cxf can be deployed in JBoss and BEA WebLogic. Because Tomcat server does not support complete J2EE specifications, especially JCA-based ejbs, the degree of support for cxf is not ideal. Although the document does not involve Geronimo, it can be based on the degree of compatibility of Geronimo with J2EE specifications, especially the support of the ear document, there should be no major obstacle to deploying cxf in Geronimo.
Similarly, you can embed cxf in applications using spring. You only need to fill in the corresponding configuration information in the spring configuration file.
Cxf provides a wide range of documents, because it integrates the xfire and celtix open-source projects. In addition, it depends heavily on the Spring framework. Therefore, if you are familiar with spring, there is generally no major obstacle in use.
II. Open ESB
Openesb is an open-source ESB project proposed by Sun, so we don't need to talk about the degree of support for jbi specifications. Glassfish ESB is an ESB project that integrates the core execution environment of openesb with the integrated development environment of glassfish application server and netbean, of course, some existing components (subsets) in openesb are also included ).
Openesb provides an engine that supports WS-BPEL2.0. However, this component currently supports wsdl1.1 and does not support wsdl2.0. In addition, this engine depends on the integrated development platform with netbean. At least the corresponding development kit and component package based on netbean can be obtained. However, this component provides powerful support for BPEL, it includes monitoring of endpoint status, multi-thread running, debugging of business processes, database persistence of various business process instances in reliability recovery of system errors, and load balancing.
There is only one demonstration video in terms of materials, mainly based on the use of the netbean platform. Other released materials are relatively small, especially in terms of API. Therefore, it is difficult to expand openesb according to its own requirements unless the source code of openesb is comprehensively analyzed.
III. ServiceMix
ServiceMix is an ESB bus under the Apache Foundation, and is also an independent jbi container at the same time (that is, it supports the complete jbi specifications ). It is an independent jbi container because it has its own independent execution environment, can be started like an application server, and supports dynamic hot deployment, etc, this is different from cxf.
ServiceMix's container execution environment uses the kernel architecture and is based on the implementation of Geronimo on J2EE (of course, it also supports various J2EE specifications, such as JAAS for security ), therefore, the performance is superior. Activemq is integrated in communication and supports multiple communication protocols, such as HTTP and JMS. At the same time, the pipeline uses the JMX management architecture on the management components to dynamically configure and manage various components deployed on the bus, or through the Web, or you can use the JMX remote issue. The ServiceMix kernel can be integrated into the operating system to serve as the external service provided by the OS. What's different from other bus is that ServiceMix also provides its own script command console and uses some simple commands to manage application components and ServiceMix kernel instances.
The ServiceMix information is also relatively complete, including some simple examples. Detailed information on Component scaling and process engine integration is not specific enough. If we want to further expand the bus, we need to conduct more in-depth study and research on the source code and samples. Of course, all these are based on a more comprehensive understanding of the jbi specifications.
4. JBoss ESB
JBoss ESB is an EAI system platform proposed by the JBoss community for SOA. It provides many functions that EAI should possess, such as business process monitoring, integrated development environment, workflow user interface, business process management, distributed computing architecture, and functions as application containers. It can be said that jbossesb is more powerful in functionality. However, compared with the above bus, its technical architecture solution is the most independent. In addition to supporting the J2EE standard, the jbi specification is independent of each other. Of course, there is no standardized message routing, service engine, and binding component in the jbi specification. In addition to Web Services, jbossesb also supports multiple remote call protocols, such as JMS. Compared with ServiceMix and cxf, it may take a lot of time and effort to expand jbossesb.
Compared with the above open-source project, jbossesb has a great advantage in that the documentation is the most abundant and complete. Therefore, it reduces the resistance of development and expansion. Relying on the mature JBoss community and comprehensive open-source project support, JBoss provides a wide range of options for later platform expansion.
Comparison between some Open-Source ESB Bus