Friday, December 17, 2010

Enterprise Service Bus [ESB] Comparison: Poll a directory for a file and upload it with an ...

Enterprise Service Bus [ESB] Comparison: Poll a directory for a file and upload it with a HTTP PUT: "Here is an example of a File polling service, which then sends the file to an authenticated HTTP service as a PUT request"

Monday, December 6, 2010

What happened to the Cat set amongst the Pigeons? - ESB Performance comparison

WSO2 Published an article titled "WSO2 ESB Performance (New)" today, after 2 and a half years since the last article on ESB performance - published in June 2008.

What's interesting to note is that unlike in the last three rounds of performance testing since June 2007, WSO2 does not compare its numbers against those of any other ESB.

The last time WSO2 published performance numbers, its CTO Paul Fremantle wrote the blog post Setting the Cat amongst the Pigeons stating "Now, I'm hoping the Mule guys will get their act together and provide a decent contest, because we couldn't get Mule to do HTTP KeepAlive without failing"

Previously WSO2 compared its performance against a proprietary ESB, Mule, and ServiceMix. A complete list of resources, and tools were shared under an Apache License to encourage other ESB vendors to run the same tests which were "fair" and open.

The folks at Mule did take the challenge, and published an article that showed performance of the Mule ESB, although it was not a true apples-to-apples comparison.

This time, WSO2 has not shared the configurations or the resources either, and for some unknown reason, have explicitly turned off HTTP keep-alives which generally improves performance. They compare against the WSO2 ESB v2.1.3 - which incidentally was not benchmarked publicly at any point in the past. Hence a 'comparison' becomes meaningless, irrespective of the fact that in quite many scenarios, the performance of the v3.0.1 has indeed decreased!

Note that on earlier occasions concurrency levels from 20, 40, 80, 160, 320, 640, 1280, 2560 were run, with each selected message size. However, deviating from this "fair" and "open" norm, this time a different approach was taken: "For each scenario each message size load is generated with concurrency varying from 20 to 300(increasing by 40 at each stage). Then the maximum transactions per second(TPS) achieved during this concurrency range is recorded as the Transactions per second(TPS) for the corresponding scenarios message size."

This begs the question - did the WSO2 ESB v3.0.1 crash after 300 concurrent users? when previous versions could handle up-to 2560 concurrent users??


I guess like some "other" companies that grows too large these days, WSO2 has finally closed its openness on the performance benchmarking as well. Its refraining from publishing any comparisons, as it cannot compare against the Free and Open Source UltraESB from AdroitLogic, which introduced Zero-copy proxying coupled with Java NIO for extreme performance levels, not yet achieved by others - although some have tried to.

AdroitLogic published performance metrics of the UltraESB in February 2010, and launched the ESB Performance site http://esbperformance.org to ensure that a "open" and "free" ESB Performance Benchmark will be available for anyone. The UltraESB "ships" this complete benchmark in its 30MB download - and makes it easy for anyone to compare the performance of the UltraESB with any other ESB - on any selected hardware and environment under "identical conditions"!

Finally, I know that WSO2 ran these tests over 4 months back, and since then they have possibly been busy to find a way to publish these results with minimum damage..

But I guess the Cat set amongst the Pigeons - is now no more! ..
and now, I'm expecting some fireworks!!

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!


Thursday, July 8, 2010

Invoking a Web service and receiving its response via email

I've written a simple example that shows how a Gmail account could be polled by the UltraESB and then forward them to a Web service. The example invokes the SimpleStockQuoteService hosted via the test ToolBox.

The UltraESB makes it easy to strip all unwanted email headers, and then send the request as a SOAP request by updating the content type to text/xml. The response is then sent back to the original client using Gmail SMTP

Read the full example and download the sample configuration files from here

Sunday, May 30, 2010

HTTP Basic, Digest and Amazon S3 REST authentication

Secure your backend services using Basic Authentication or Digest Authentication over HTTP or HTTPS with a Proxy service deployed on the UltraESB. The credentials are verified using any Spring Security based authentication providers - including in-memory, Database, LDAP etc. The article presents the ready-to-run Sample #110 of the UltraESB that demonstrates many scenarios to secure, and to invoke secured services! The highlight of the article is a proxy service that could be used to authenticate into Amazon S3 using its REST API. A follow up article will soon demonstrate how a fixed-length COBOL file is polled from a directory or sftp, ftp/s, converted into XML and uploaded into a S3 location.. keep tuned!

HTTP Basic, Digest and Amazon S3 REST authentication

Tuesday, May 18, 2010

Enterprise Service Bus UltraESB challenges open source and commercial equivalents on performance and ease of use

Singapore - May 17, 2010 - AdroitLogic Private Ltd. announced today the general availability of its high performance Enterprise Service Bus (ESB) UltraESB, available free of charge for perpetual and unlimited production use. AdroitLogic also launched a website dedicated to ESB performance testing - http://esbperformance.org, that hosts a benchmark used by multiple ESB vendors since June 2007.

The UltraESB utilizes Zero-copy proxying of messages using Non-Blocking IO, to scale and support extremely high numbers of concurrent connections over HTTP/S. By moving away from a canonical message format, the UltraESB natively supports multiple types of payloads over transports such as HTTP/S, JMS, File, S/FTP, FTPS, MLLP/S, TCP/S and Email (POP,IMAP,SMTP). In addition, it can act as a B2B AS2 (Applicability Statement 2) connector to integrate backend systems securely with trading partners over the Internet, and as a Health Level 7 (HL7) systems integrator over multiple transports. By developing a custom WS-Security implementation, it offers much better performance when used as a WS-Security gateway than solutions based on the WSS4J/Rampart libraries. Fully supporting REST, SOAP, JSON, XML, Binary, Hessian, EDI, Text, HTML etc as payloads, the UltraESB ships with a load of ready-to-run samples, tools & documentation and bundles everything into a download of 30MB. The UltraESB can be deployed standalone or over a JEE application server, and supports both JTA XA and local transactions - including suspend and resume - even asynchronously.

The UltraESB is configured with an XML file that allows mediation code to be written as Java or [JSR 233] scripting language (e.g. Javascript, Groovy, Ruby..) snippets. Mediation can also be written as Java classes, or POJOs without depending on any specific interfaces. The UltraESB does not require the user to learn a new programming or configuration language; or compile-bundle-and-deploy artifacts for configuration changes. The configuration could be performed with an IDE of the users' choice that supports intelligent context aware auto completion, and allows step-through-debugging and unit testing to ensure quality. The UltraESB supports JMX management and reporting with any JMX console, and could even be used as a high performance load balancer in front of Tomcat instances etc to provide sticky loadbalancing and failover.

About AdroitLogic

AdroitLogic Private Ltd. is a privately owned, innovative technology company based in Singapore. AdroitLogic believes in working closely with real enterprise users of its software, and thus invites them to participate in defining its road map, schedule, features & releases. Becoming a parter with AdroitLogic, offers users access to its source code.

Saturday, May 15, 2010

ESB Performance site http://esbperformance.org launched..

The Enterprise Service Bus [ESB] Performance site is now live, and hosts information about the ESB Performance Test Framework and the ESB Performance Test Suite available free of charge to benchmark the performance of different ESBs.

Along with this launch, AdroitLogic also released the Amazon EC2 AMI "ami-8bb158e2", which includes the UltraESB distribution that includes the ESB Performance Test Suite ready-to-run on the cloud.

By running the benchmark locally, or on an EC2 node, one can easily compare ESBs from many vendors. Since the ESB Performance Test Framework is configured to run on the local interfaces, network isolation will not affect the results, and one can be certain that each ESB benchmarked was tested under identical conditions on the exact same hardware - for a true apples-to-apples comparison.

AdroitLogic will be happy to provide support free of charge on using the test framework and suite, and would welcome suggestions for improvement.

Monday, May 3, 2010

Transactional ESB use cases made simple with the UltraESB

The UltraESB provides excellent support for JTA XA transactions as well as JMS/Database local transactions, and this example shows a JTA XA transaction and a local transaction being used in the same message flow, with a JTA suspend and resume - from a different thread! The article can be compared with similar examples from JBoss ESB and the WSO2 ESB, and the ease of use and the flexibility of the UltraESB clearly seen.

The complete  configuration required for this example, is less than a page of text, and does not contain hidden source code, classes, or bundles to build and deploy etc.. just edit the configuration and run!

Transactional ESB use cases made simple with the UltraESB






Monday, April 26, 2010

Message aggregation with Streaming!

We've just published an article about two of the samples that ships with the UltraESB on advanced message cloning and aggregation with streaming. This was triggered by a real user who was attempting to write this logic on their own, as most - if not all - ESBs did not support it a month back!

We've taken the challenge and delivered the first results within a few days, supporting streaming. Then we developed support for timeouts and completion of partial responses as well all within a couple of weeks.

Read the complete article here

The complete samples (i.e. sample #211 and #212) now ships with the UltraESB, and the ToolBox GUI can be used easily to test these in 5 minutes. The UltraESB also ships JUnitPerf unit tests to load test these examples along with the source for users to play and extend them.

Brief introduction to the scenario
The scenario simulates multiple concurrent users issuing JSON requests of the form given below, with a request to multiply two variables v1 and v2, along with a text message:

{ "message" : "hello world, I am client N!", "v1" : 100, "v2" : 300}

There are three backend service endpoints servicing such JSON requests, but each expecting a slightly different message format. Thus each such message by a user must be cloned and transformed into a format suitable to each destination backend systems In this example, the format expected by the backend services are:

{ "prefix_for_Server " : "Hello Server  - hello world, I am client N!", "v1" : 100, "v2" : 300}

Each backend JSON service responds to such a request within a random delay of 1200ms as follows, adding a "result" as v1 * v2:
 
{ "prefix_for_Server " : "Welcome to Server ", "v1" : 100, "v2" : 300, "result", 30000}

These responses now needs to be aggregated and sent back to the client as one single message, where each <part i> for i=1,2,3 denotes a response as shown above.

{ "merged": [ <part 1>, <part 2>, <part 3> ]}

I would like to challenge any other Open source or Commercial ESB vendor to try to simulate this scenario too and share a link!

Monday, April 19, 2010

Using the UltraESB to proxy and load balance requests to Tomcat

Here is a complete article that describes how the UltraESB can be used to proxy requests between multiple Tomcat instances with load balancing and fail-over using sticky sessions. The mediation.getJvmRoute() API call makes it simple to query the Tomcat jvmRoute when using a JSESSIONID cookie or a jsessionid path segment. This value can then be used to load balance with fail-over between multiple instances of Tomcat.

http://bit.ly/aZL4sU

Wednesday, April 7, 2010

Replacing an F5 and its iRules with the UltraESB

A user will soon be replacing an F5 Big IP with the UltraESB by re-writing the iRules as mediation logic. This creates a proxy service that will intercept all requests using the url pattern "*", and then use cookies for routing into two backend server pools where the load is split between two federated groups. This incidentally allows them to also replace Apache servers used to front the Tomcat servers.

The complete configuration used is along the lines of the following;

<u:proxy id="web-proxy">
    <u:transport id="http-8280">
        <u:property name="url" value="*"/>
    </u:transport>
<u:target>
    <u:inSequence>
        <u:java><![CDATA[
            String pool = mediation.getCookie(msg, "POOL");
            if ("TWO".equals(pool)) {
                mediation.sendToEndpoint(msg, "ep2");
            } else {
                mediation.sendToEndpoint(msg, "ep1");
            }
        ]]></u:java>
    </u:inSequence>
    <u:outDestination>
        <u:address type="response"/>
    </u:outDestination>
</u:target>
</u:proxy>

Saturday, March 13, 2010

Tricked by 'open source' ?

This is a re-post of my reply to "C Curl":

AdroitLogic already shares the code of the UltraESB with real users! .. and I do come from a history of over 4 years of contribution to the open source Apache Synapse ESB, where I contributed over 70% of its last released codebase.

I truly believe what my company offers is better - as we share the 'real code' with 'real users' who are interested, and not using the term 'open source' for marketing reasons to bait customers. The software we provide is offered free of charge for unlimited and perpetual use.

Many companies that have 'open source' products, swiftly switch over enterprise customers to the 'commercial version's that are .. of course 'much better' ;)! .. the reality is this code is not shared with the customers in almost all instances. The customers then run versions from vendors' internal 'support branches' they have never seen or heard of!

Although the 'open source' version of the code may be available, even that may not be build-able, or understandable for an average user that easily. In 2-5 years time the open source companies maybe gone too; and along with it, the open source code repository, bug tracking and maven repositories and wikis etc holding critical artifacts.. It would certainly be an interesting situation for a customer to be in, when they finally find that they have been living on a 'support branch' of an open source project, for which they have no access anymore!

The Apache Software Foundation tries to overcome this issue by creating an open and diverse community:

"The project is considered to have a diverse community when it is not highly dependent on any single contributor (there are at least 3 legally independent committers and there is no single company or entity that is vital to the success of the project)" [1]

I'll leave the rest upto you to decide...

[1] http://incubator.apache.org/guides/graduation.html#community

Tuesday, March 2, 2010

Use the UltraESB as a Security Gateway for HTTP/S, REST, SOAP, Hessian, Text etc

I've written an article that explains how the UltraESB could be used as a HTTP/S or SOAP Security gateway, to front internally deployed services of an organization in a SOA.

The UltraESB allows SSL termination, WS-Security validation/termination, HTTP Basic/Digest authentication enforcement, Client SSL certificate validation etc, from a security point of view. Additionally it provides validation and transformation capabilities - and supports secure XML processing which safeguards the infrastructure from XML based attacks.

Read about it here: http://soa.dzone.com/articles/use-ultraesb-security-gateway

Friday, February 12, 2010

The ESB Performance Testing Framework and Execution Round 4 - explained in detail

I've just published an article that explains the ESB Performance Test Framework in detail, and how an end user could compare an ESB of his choice to any other ESB.

http://adroitlogic.org/samples-articles-and-tutorials/16-articles/50-the-esb-performance-testing-framework-and-execution-round-4-explained-in-detail.html

PS: I was also able to resurrect this blog post of the Product Manager of the BEA AquaLogic ESB - Dain Hansen - from June 2008, which states that even BEA ran the ESB Performance Test Framework back then..

Thursday, February 11, 2010

The ESB Performance Testing Framework & Results of Round 4

I developed the original ESB Performance Test Framework - in June 2007 while actively working on the Apache Synapse and the WSO2 ESBs. Since then, we've run three rounds of testing, comparing both Proprietary and Open Source ESBs - including Mule, Apache ServiceMix, Apache Synapse/WSO2 ESB, a leading proprietary ESB and the proprietary version of an open source ESB.

It was interesting to see other vendors such as Mule and BEA picking up this test framework in addition to WSO2, in publishing results. However, due to different hardware configurations being used, and other advanced tuning or optimizations performed by vendors - the results were left a bit questionable and could not be compared in a fair manner.

This latest round - Round 4 - takes this framework to the Amazon EC2 - and is designed to let end-users run the tests on an EC2 node for less than $2 of computing time! This will allow differences in hardware to not make any difference, and allow the users to see how exactly the tests have been configured, tuned and run.

I hope Mule, ServiceMix, JBoss, OpenESB, Petals, BEA/Oracle, IBM, WSO2 and any other ESB vendors I've missed will make use of this opportunity and publicly share the necessary configurations so that we could all rely on an accurate and fair benchmark - which can be verified independently on demand by any end-user!

Hence - unlike in the past, I will refrain from naming any competitor - unless its vendor or the open source project team requests that it be included and the results publicly shared. Thus it is now left to the users of ESBs - to demand the configurations necessary for them to run these tests from vendors - and themselves decide which one to select after executing the test on Amazon EC2. I hope to make this process even simpler at the next round - with a custom AMI and more automation

The Round 4 results includes the three test cases conducted earlier (i.e. Direct Proxy, Content Based Routing [CBR] Proxy, and XSLT Proxy), and adds a new scenario for WS-Security processing.

http://adroitlogic.org/samples-articles-and-tutorials/15-tutorials/48-esb-performance.html

Thursday, January 21, 2010

HTTP client supporting REST, SOAP, Hessian etc for testing and Load testing!

The AdroitLogic UltraESB includes the ESB and SOA ToolBox - that can be used to test any payload over HTTP/S. Supporting all methods over HTTP such as GET, POST, PUT, DELETE, HEAD and OPTIONS, it allows a payload pasted into a text area, or read as a file to be sent to any HTTP/S endpoint, optionally authenticating the request with HTTP basic or digest authentication.


The user can select if the request should use HTTP 1.0 or 1.1, or send the entity as chunked or using 'Content-Length' encoding, if the '100-Continue' expect handshake should be used-or-not, if HTTP KeepAlive should be used or not, and if response  compression (i.e. GZip) is requested. If the request is over SSL, you could also turn off SSL Trust and Hostname verification for testing purposes - such as when using test certificates. Additionally, it can also use an identity certificate if 2-way SSL is requested.

To make this even better, the ToolBox also offers a HTTP/S Load test version of this same utility - that can be used to load test REST, SOAP, Hessian or any kind of payload over HTTP/S. This Load Test utility is a clone of the popular Apache Bench load test client - but much more advanced and stable!


The ToolBox also includes a TCP Dump utility - that can be used to view requests over the wire - in both HEX and Text formats. It additionally introduces support to capture a request into a file - which allows one to capture any kind of request message - even WS-Secured messages, Hessian binary messages etc, which can then be used with the JavaBench - to run a load test against your services.

For those who really knows what they are doing, and for example if you would like to test your ESB or SOA server for its support against malicious or malformed requests - there is a Raw socket client.


This allows one to hand-craft a HTTP request as you wish! The ToolBox also hosts a module that will start one or more Jetty servers with sample applications, which could then be used to test your ESB or SOA services. Starting multiple instances over different ports allows one to easily test load balancing and fail-over options of your ESB.

Finally the ToolBox allows you to start an instance of the UltraESB - the ultimate ESB that is simple to use, but supports ultra performance! Do read the full article "Getting started with the AdroitLogic ToolBox for the UltraESB" and follow through the end-to-end sample to get started.

Wednesday, January 20, 2010

Mock Services - be it either REST, SOAP or even any other!

The UltraESB allows the creation of Mock Services for almost any protocol over multiple transports. Thus you can mock REST, SOAP, Hessian, or even JMS, Email or File/FTP related services, or even other such services easily.

The article "Mock RESTfully with the UltraESB" shows how one may write Mock services for REST methods GET, POST, PUT and DELETE.. The mock service implementation can be written as Java as a class, code fragment or a Spring bean, or as any JSR 233 Scripting language code. However, you do NOT need to compile, bundle, deploy any of these - as the UltraESB does all that automatically! Just checkout the sample and see how a dozen lines of configuration can simplify your tasks!

The AdroitLogic ToolBox will allow one to test the mock services, as well as any other backend services. It includes sample RESTservices, a RFC 2616 compliant HTTP/S client that supports basic and digest authentication and 2-way SSL in addition to supporting GET, PUT, DELETE, POST, HEAD and OPTIONS for REST.

Proxy REST through the UltraESB

The UltraESB from AdroitLogic fully supports REST! Thus you can use it to proxy GET, POST, PUT, DELETE, HEAD, OPTIONS and TRACE compliant with the HTTP spec RFC 2616!

For an example on the configuration, refer to this article "RESTful Proxy Services with the UltraESB" which describes how a JBoss RESTEasy service can be proxied via the UltraESB - and demonstrates the above REST methods, and the automatic 'Location' header re-writing etc, which allows the Proxy service to fully hide the real service.

The UltraESB also includes a very useful utility - the ToolBox! It allows one to play with all the above HTTP methods with an easy to use and intiutive graphical user interface. Read this article on how to use the ToolBox as an ESB and SOA test toolkit - "Getting started with the AdroitLogic ToolBox for the UltraESB"

As the UltraESB ships ready-to-run samples, you do not need anything other than the 25MB download available from http://adroitlogic.org/download.html And this includes ALL thats required to test this sample, including a sample RESTful service, and the HTTP/S client from the ToolBox

Tuesday, January 19, 2010

AdroitLogic Announces the Availability of a Simple to Use - High Performance Enterprise Service Bus [ESB], UltraESB

Introduces Zero-Copy Proxying with Non-Blocking IO and a Custom WS-Security Implementation, to Act as a High Performance Intelligent Layer 7 Router and Load Balancer

Singapore - January 19, 2010 - AdroitLogic Private Ltd. announced today the availability of the first public beta release of its Enterprise Service Bus (ESB), UltraESB. The UltraESB allows Zero-copy proxying of messages using Non-Blocking IO, to scale and support extremely high numbers of concurrent connections over HTTP/S. In addition, it includes support for B2B integration with AS2, and a custom WS-Security implementation, designed to yield better performance when used as a corporate security gateway.

By moving away from a canonical message format, the UltraESB natively supports multiple types of payloads over transports such as HTTP/S, JMS, File, FTP/S, SFTP and Email (POP,IMAP,SMTP). In addition, it can act as a B2B AS2 (Applicability Statement 2) connector to integrate backend systems, securely with trading partners over the Internet. Fully supporting REST, SOAP, XML, Binary, Hessian, EDI, Text, HTML etc as payloads, the UltraESB ships with a load of ready-to-run samples and documentation. A graphical test utility 'ToolBox' bundled with the UltraESB, contains a HTTP/S client for REST/SOAP/Hessian etc, a TCP dump and capture utility, a load generator, and other useful utilities for testing and experimentation.

The UltraESB has been designed and developed from scratch by its architect, using the knowledge gained by contributing over 70% of the original codebase of the Apache Synapse ESB, as well as supporting its users for almost 4 years. Without requiring the users to learn a new XML configuration language, or write-compile-and-deploy code, the UltraESB is configured with a Spring configuration, and allows mediation to be specified as Java code right within the configuration, separately or as compiled byte code. By supporting JSR 233 scripting languages, it allows the user to use languages such as Groovy, Javascript, Ruby etc. for mediation as well. The UltraESB allows intelligent IDE integration with auto completion and validation, Java mediation editing, and debugging right from within the IDE. Its dependencies have been kept to a minimum set of stable libraries, to enable regular release cycles and quick builds. With JUnit tests currently covering half of the codebase, the UltraESB makes it easier for end users to write unit tests to automate most types of end user testing. The UltraESB is easily managed, monitored and controlled via JMX, and provides advanced support for JTA or local transactions, including suspension and resuming of transactions by different threads of execution.

AdroitLogic offers a range of service and support options for the UltraESB. These include consulting, custom development, sponsorship of feature development, development & production support and training. Additionally, AdroitLogic hosts public user forums, articles, samples and other material on the use of the UltraESB at its website http://adroitlogic.org

The UltraESB is offered free of charge for unlimited production deployment. AdroitLogic believes in working closely with real enterprise users of its software, and thus invites them to participate in defining its road map, schedule and features for releases. Becoming a parter with AdroitLogic, offers users access to its source code.

About AdroitLogic
AdroitLogic Private Ltd. is a young and innovative technology company based in Singapore, that believes in, and proves that better design and clever code yields much better software. Being a self-funded startup, AdroitLogic is driven by entrepreneurial spirit, personal dedication and commitment of its founders, who are personally involved with its design, development and support.

Contact Information
Asankha Perera
Email: info@adroitlogic.com
Tel: +94 722 805724
http://adroitlogic.org