Showing posts with label xacml. Show all posts
Showing posts with label xacml. Show all posts

Friday, May 6, 2011

Thanking great Open Source projects and teams!

Now that the free and open source UltraESB v1.4.0 is out, it is with humbleness that we acknowledge and thank the great open source projects and teams that has brought us where we are!

So if you've ever wondered how we build the worlds best Free and Open Source ESB, in terms of performance, features and ease of use; then read on to learn more!

Apache HttpComponents (Apache License v2.0)
It all started with the Apache HttpComponents project! This is a great project implementing both Java Non-Blocking IO and support for Zero-Copy for HTTP/S, which the UltraESB has been able to fully utilise! Oleg Kalnichevski is the release manager who writes most of the cool code and documents, and is supported by Sebastian, and many others who are always willing to help anyone in a true Apache way! We also use the HttpClient support for NTLM and AWS S3 authentication and the Java-bench code within the SOA ToolBox - now used in the ESB performance benchmark

Spring Framework / Spring Security (Apache License v2.0)
The Spring framework is the basis of our configuration mechanism, and coupled with JDK 6 support for code compilation allowed us to implement a very powerful and limitlessly extensible mediation support, using Java, or any other JSR 223 programming environment such as Javascript, Ruby, Groovy etc.
Spring security is used for HTTP basic and digest authentication, and to tap into any type of user store such as LDAP, databases or hard coded lists.

The Spring framework also powers the JMS transport, and the support for Local or JTA XA transactions of the UltraESB and makes it possible for any transport to process messages in a transactional manner for example SOAP or REST

Apache ZooKeeper (Apache License v2.0)
ZooKeeper is the underlying framework that holds extremely huge clusters of Hadoop together! Its a great framework to work with, and presents a File system like approach to manage complex clustering details. This makes it possible for an UltraESB cluster to be controlled from any node connected to via the UConsole or JMX. I've also been including ZooKeeper as a part of the Distributed Systems module I teach at the University of Colombo, so that both Undergrad and Grad students will have a better appreciation and understanding of this great project.

Jackson JSON Parser (Apache License v2.0) / XML2JSON
Jackson is the fastest JSON parser for Java, and powers the JSON support of the UltraESB, including the Single SQL line REST Data Services with JSON. Jackson also helps in the automatic conversion to/from XML to JSON through the UltraESB which uses the XML2JSON of Paul E. Jones.

PicketBox XACML (LGPL v2.1)
PicketBox is a great XACML engine, and introduced simple and powerful support for fine grained authorisation using XACML. I am yet to write an illustrative sample of this feature, which simplifies using XACML like we simplified using WS-Security an year ago - bypassing performance of WSS4J/Rampart by over 3X. This project was amazingly clean from any JBoss dependencies, and thus has been simple to integrate with the UltraESB in just a couple of days for a POC!

Apache Wink (Apache License v2.0)
Wink is a project still under incubation at Apache, and allows us to write RESTful Web services with JAX-RS to power the front end AJAX UI. Although this is still under incubation, its stable and minimal in size and was ideal for our use.

BeeBole - Pure (MIT License)
Pure is a framework that populates the UConsole UI of HTML5/CSS3 from JSON requests served by Wink. Its a nice library to work with, and a few more examples will make this library a killer.

Apache Shiro (Apache License v2.0)
Shiro secures the UConsole and works great with Wink

JQuery (MIT License) & DataTables (BSD License)

These are two of the best libraries that powers the Ajax UI of the UConsole, and there would be no developer who has not used them in a UI.


Java
Last but not least, Java is the programming language that allowed us to write the UltraESB, and the threading, memory allocation and JMX support, as well as the support for compilation in JDK 6 allowed us to introduce new concepts such as support for mediation fragments in Java, or any JSR 223 scripting language such as Javascript, Ruby, Groovy etc, which other ESBs envies!


VTD XML [Optional end-user downloadable library]
I'd also like to mention an optional library which end users could download themselves and place in the UltraESB library path, that will boost XML processing performance even more. Its VTD XML - licensed under GPL v2 or later. Hence we do not ship it, or link to it directly.


However, once placed along with a binary of VTDFastXML, the UltraESB is able to use the extreme performance of VTD XML to improve its XML performance - especially for XPath evaluation. This was the only area where we had to improve from the ESB performance testing round 4. Just wait for the next round of ESB Performance testing coming up soon, to learn what we mean :)

Monday, May 2, 2011

AdroitLogic announces v1.4.0 of the UltraESB

The latest version brings support for clustering using ZooKeeper, and introduces a web based administration console, and support for Caching, XACML and JSON among many other features.

Singapore - May 2, 2011 - AdroitLogic Private Ltd. announced today the release v1.4.0 of its free and open source Enterprise Service Bus, the UltraESB. The UltraESB is released under the OSI approved GNU Affero General Public License; as well as a zero-dollar non-GPL commercial license which allows unlimited and perpetual use free of charge. First released in January 2010, the UltraESB was the first ESB to utilize memory mapped files and zero-copy, coupled with non-blocking IO to provide extreme levels of performance.

Version v1.4.0 released today offers support for clustering and management of cluster nodes through the new Web based administration console based on JMX. Clustering support is built over Apache ZooKeeper, which is used to manage extremely large clusters of Hadoop nodes. Advanced features such as automatic restart of a complete cluster of nodes - with round-robin processing, or management of a service, or endpoint across a cluster have been made trivial operations. The new version also supports caching, and the current release ships support for ehCache. The new release also ships support for high performance XML processing, utilizing FastXML. This allows end users to integrate third party libraries such as VTD XML with the UltraESB for extremely fast XPath processing, without parsing XML payloads. XACML is supported for fine grained authorization using the PicketBox  XACML library, and automatic conversion to/from JSON to XML makes processing JSON payloads even simpler.

In addition to supporting many transports and message formats, the UltraESB also offers support to easily develop JSON based data services with just a single line of configuration, and provides full support for the HTTP transport, including true REST support, basic, digest, NTLM and Amazon S3 authentication using pre-emptive authentication or challenge response mechanisms as applicable. The UltraESB also ships a very high performance WS-Security library that allows it to perform WS-Security operations over 3X faster than solutions based on the WSS4J/Rampart libraries used by other ESBs.

JMX support has been thoroughly improved to utilize MXBeans, and allows detailed monitoring and management of a runtime using JMX consoles such as Zabbix. The UltraESB now ships with a native Zabbix agent for even easier monitoring. As the UltraESB integrates with the Spring framework and supports Java as well as JSR 223 scripting languages, integration with third party libraries and extension is simple and powerful.

Wednesday, April 6, 2011

UltraESB v1.4.0 development builds are available for feedback!

Good cooking takes time. If you are made to wait, it is to serve you better, and to please you.
- MENU OF RESTAURANT ANTOINE. NEW ORLEANS

Anyone who has read the Mythical Man Month by Brooks will remember the famous statement on the menu of Restaurant Antoine. Likewise, we've taken a bit of time, to do a great release of the UltraESB v1.4.0, to please you better! The release is expected later this month, but we've started releasing public development builds for user feedback.

Some of the highlights of the new release are:
  • Support for clustered deployment and management of a cluster (based on Apache ZooKeeper)
  • Configuration updates, includes and removals at runtime including a "prepare" phase that detects possible issues before a configuration switch
  • An extremely lightweight Web based console for management of the UltraESB and basic monitoring
  • Complete revamp of JMX functionality to use MXBeans, and including a built-in Zabbix monitoring agent
  • Support for local and distributed caching via ehCache (expect support for memcached soon!)
  • XACML support using PicketBox XACML
  • Support for save/restore of test setup from the ToolBox
  • Many more enhancements and rectification of issues

Here is a brief screenshot from the web console


And here is a view of a proxy service shutdown command on a cluster, where one can see the list of nodes where the command completed successfully, or failed

The console also allows one to quickly load new configuration fragments, or unload or update loaded fragments


  • To checkout the source code, use Mercurial as follows:hg clone https://bitbucket.org/adroitlogic/ultraesb

Note: Some of the pages/parts of the pages of the Web console are still under construction