Tuesday, October 26, 2010

"The UltraESB environment was a much cleaner solution for putting together the mock services, particularly with the IntelliJ IDE for writing the code"

Read the Original Comment from Jim

"Note that the leading tool for Web Services testing is SoapUI. While this product provides some powerful support for Soap based mock services, its support for REST based mock services is almost non-existent (basically, just setting up a separate test case for each endpoint and sending a file). The UltraESB environment was a much cleaner solution for putting together the mock services, particularly with the IntelliJ IDE for writing the code. I could load the payload, read it into a string, manipulate it, the write it back out to the payload. The learning curve was very minimal. Great job!"

The UltraESB recently started supporting RESTful JSON Data Services more information on the JSON support is available from http://jsonesb.org

Sunday, October 24, 2010

JSON Data Services

Want to specify an SQL statement and a corresponding URI pattern, and create a RESTful JSON Data Service with just one line of configuration?

The Free and Open Source UltraESB v1.3.0 introduces JSON Data Services which does exactly this! Create data services by specifying a SQL file and a URI pattern. The URI patterns allows you to specify variables, that correspond to the SQL statement as shown in the following example.

For example, say that you would like to expose the result of the SQL query:
SELECT * from employee where permanent = 1
and would like the Data Service to be available at URI:
/getPermanentEmployees

Or to consider a more advanced example, say that you wish to expose the results of the SQL:
SELECT * from employee where
    division = :division and department = :department 
    and sex = :sex and age > :age
and expose the Data Service with a URI as follows:
/byDeptAndDivision/<department>/<division>?age=<age>&sex=<sex>

See how easily you could create RESTful JSON Data Services using the UltraESB and a couple of lines of configuration in "JSON Data Services" published on the AdroitLogic web site.

Tuesday, October 19, 2010

Transactions spanning multiple resources - an Example with JMS, JDBC and File systems with JTA

We've written a sample that shows use of multiple JTA transactions spanning JMS, JDBC and File system resources. The sample is a solution in reply to a real user question as presented here.



The solution is presented using the Atomikos JTA libraries that allows the execution of the sample without deploying the UltraESB on a JEE application server such as JBoss. The original post requested for a sample using WebSphere MQ, and Oracle as the database, on top of JBoss.

The sample we've implemented uses an "embedded" ActiveMQ JMS server - started with just a couple of lines of Spring configuration within the UltraESB. The complete mediation is just a few lines of extremely powerful code - using the robust Spring framework JDBCTemplates. This coupled with the use of Java allows one to write powerful integration scripts, with the full power of the Java programming language or any other JSR 223 scripting language such as Ruby, Groovy, Javascript etc., without learning vendor or product specific configuration languages based on XML.

The sample shows the happy day scenarios as well as rollback of transactions, using the SOA ToolBox to fire sample JMS messages for testing.

Wednesday, October 13, 2010

Download Email and save attachments into the file system - Compare the UltraESB with Mule

For over two weeks, a user on the Mule mailing list has been looking for a way to download Email messages over POP3/IMAP and save attachments into the file system. However, as of today, the last post indicates a blocker issue MULE-5138 which needs a solution before IMAP maybe used..

I've written a simple solution over the Free and Open Source UltraESB to do the same, and it works well, and easily, with only a few lines of configuration as presented in the new ESB Comparison blog article titled "Download Email and save attachments into the file system". This example will be available as Sample #503 with future versions of the UltraESB

Monday, October 11, 2010

Web Service Proxy that emails a copy of the response passing through, using an intermediate JMS Queue

I've written an article that describes how an UltraESB Proxy Service for a SOAP service could be deployed on the Free and Open Source UltraESB, to respond back to the client immediately once the response becomes available, but then post a copy of the response via an asynchronous email - without affecting the performance of the main message flow.

This was a request for an initial proof-of-concept for a large Telecom company in the US, and shows how an embedded ActiveMQ JMS server could be started within the UltraESB using the native support for the Spring Framework

Read about it at DZone http://soa.dzone.com/news/web-service-proxy-emails-copy

This sample is now included as sample #502 with the UltraESB 1.2.0 or later

Tuesday, September 14, 2010

WSO2 falsely claims support for Zero copy

A few minutes ago, Asanka Abeysinghe the Director of Solutions Architecture of WSO2 claimed that the WSO2 ESB supports "Zero Copy", at the WSO2Con held in Colombo, 14th September 2010



However, this statement is false, and can be easily proved by just looking at the implementation source code of the BinaryRelayBuilder, which copies the complete input stream into a byte[] in Heap memory via traditional CPU copying into user space.

In-fact, when WSO2 announced this "Binary Relay" in December 2009, even the author of this "feature" did not state that its anything near "Zero Copy". Even a search on Google for WSO2 and Zero copy returns no results!

"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another." - Wikipedia

The AdroitLogic UltraESB is the FIRST and still the ONLY Open Source ESB (or most possibly "the only ESB") that supports True Zero-Copy proxying.

Thats why its the fastest ESB out there!

Tuesday, August 24, 2010

AdroitLogic Open Sources the High Performance and Lightweight Enterprise Service Bus - UltraESB

UltraESB is the first Open Source Enterprise Service Bus (ESB) to utilize Zero-copy proxying with Memory Mapped files and Java Non-Blocking IO for extreme performance. 

AdroitLogic Private Ltd. announced today that it is open sourcing the code of its Enterprise Service Bus the UltraESB, under the GNU Affero General Public License. The UltraESB first announced in January, becomes the first Open Source ESB to claim support for Zero-copy proxying of requests with Java Non-blocking IO and Memory Mapped files to support extreme levels of performance. AdroitLogic also released the code of a Web Services Security library 'SoapBox', that was custom built by them for use by the UltraESB, which performs about 4 times faster than solutions based on the Apache WSS4J/Rampart frameworks. This support combined with SSL, HTTP Basic/Digest and other authentication methods makes the UltraESB an ideal platform to implement a Security Gateway for hosted services.

The UltraESB supports legacy transports such as JMS, File, S/FTP, FTPS, Email(POP3/IMAP/SMTP), Database, B2B AS2 (Applicability Statement 2), MLLP/S and TCP/S in addition to HTTP/S, and handles messages in their native formats without any conversions into an intermediate format. It supports REST, EDI, SOAP 1.1/1.2, POX/XML, Hessian, JSON, Health Level 7 (HL7), Binary, Text, CSV, HTML and many other message formats. The UltraESB supports JTA XA transactions, including asynchronous suspend and resume, and can be deployed standalone or within a JEE Servlet container such as Tomcat.


"The UltraESB is a complete new ESB written from scratch. Thus we were able to improve the performance and ease of use phenomenally by using techniques such as Java 6 support for compilation, NIO and Zero-copy proxying with Memory Mapped files. We base the core engine on a very few and stable libraries, and are extremely careful about good design and coding practices” said Asankha Perera the founder of AdroitLogic. Asankha earlier contributed most of the code of the Apache Synapse ESB which formed a basis for other open source ESBs as well as Security Appliances.

The UltraESB includes a Performance Benchmarking Framework to compare its performance against other ESBs on identical conditions. More information about this framework can be found at the ESB Performance website.
The UltraESB is configured with one or more XML files that allows mediation code to be written as fragments of Java, or JSR 223 Scripting languages - such as Javascript, Groovy, Ruby etc. Mediation logic can also be written as Java classes or POJOs, without depending on any specific interfaces. This ensures that the users do not have to learn yet another programming or XML configuration language; or compile-bundle-and-deploy artifacts for configuration changes to take effect.

"The UltraESB is very easy to use. The learning curve is minimal since it's based on Java and Scripting languages. The support is great, and the performance, exceptional!" said Shalinda Ranasinghe, Chief Software Architect of ShipXPress Inc. The configuration could be performed within an IDE of the users' choice that supports intelligent context aware auto completion, and step-through debugging. The UltraESB supports JMX management and reporting with standard JMX consoles, and is about 30MB to download inclusive of many samples.

Availability and Support
The UltraESB is available for download under the GNU Affero General Public License (AGPL); and under a Free Commercial License allowing unlimited and perpetual use. Custom paid licensing options are available for users who wish to embed the UltraESB into proprietary applications. AdroitLogic offers world-wide production support, consultancy, training, development support and custom development for the UltraESB.

A 5 Minute Screencast to get Started!