Vista Pilot Project Charter - Kuali Wiki

advertisement
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
December 31 2007
Kuali Student Technical Team
Technical Architecture Phase 1 deliverables
3/7/2016
1
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Table of Contents
1
OVERVIEW ........................................................................................................................ 4
1.1
1.2
1.3
1.4
1.5
2
REASON FOR THE INVESTIGATION ................................................................................... 4
SCOPE OF THE INVESTIGATION ....................................................................................... 4
METHODOLOGY OF THE INVESTIGATION .......................................................................... 4
CONCLUSIONS ............................................................................................................... 5
DECISIONS THAT HAVE BEEN DELAYED ............................................................................ 6
STANDARDS ..................................................................................................................... 7
2.1
INTRODUCTION .............................................................................................................. 7
2.2
W3C STANDARDS .......................................................................................................... 7
2.3
OASIS STANDARDS ....................................................................................................... 7
2.4
JAVA COMMUNITY STANDARDS ........................................................................................ 8
2.4.1
Java web services: JSR 222 and JSR 224............................................................ 8
2.4.2
JBI: JSR 208 ......................................................................................................... 8
2.4.3
Rules engine: JSR 94 ........................................................................................... 8
2.4.4
Portlets: JSR 286 .................................................................................................. 8
3
THE PORTAL ..................................................................................................................... 9
3.1
COMMENTS ON SELECTION ............................................................................................ 9
3.2
SELECTION CRITERIA AND EVALUATION .......................................................................... 9
3.2.1
Widespread adoption ............................................................................................ 9
3.2.2
Community of interest ........................................................................................... 9
3.2.3
Standards compliance .........................................................................................10
3.3
ISSUES.........................................................................................................................10
4
THE DATABASE ...............................................................................................................11
4.1
4.2
4.3
5
SERVLET ENGINES .........................................................................................................13
5.1
6
COMMENTS ON SELECTION ...........................................................................................11
SELECTION CRITERIA AND EVALUATION .........................................................................11
ISSUES.........................................................................................................................12
COMMENTS ON SELECTION ...........................................................................................13
XML-JAVA BINDING.........................................................................................................14
6.1
COMMENTS ON SELECTION ...........................................................................................14
6.2
SELECTION CRITERIA AND EVALUATION .........................................................................14
6.3
ISSUES.........................................................................................................................14
6.3.1
Performance concerns .........................................................................................14
7
WEB-SERVICE ENGINES .................................................................................................16
7.1
7.2
8
REASONS FOR THE SELECTION ......................................................................................16
ISSUES.........................................................................................................................16
RULES ENGINES..............................................................................................................17
8.1
COMMENTS ON SELECTION ...........................................................................................17
Technical Architecture Phase 1 deliverables
3/7/2016
1
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
8.2
8.3
8.4
9
SELECTION CRITERIA AND EVALUATION .........................................................................17
ISSUES.........................................................................................................................18
FIGURE 1 – KS BRMS ..................................................................................................19
BPEL .................................................................................................................................20
9.1
SELECTION CRITERIA AND EVALUATION .........................................................................20
9.1.1
Potential Uses......................................................................................................21
9.2
ISSUES.........................................................................................................................21
10
ESB................................................................................................................................22
10.1
SELECTION CRITERIA AND EVALUATION ......................................................................22
10.1.1 Criteria .................................................................................................................22
10.1.2 Product Space .....................................................................................................22
10.1.3 WS-* Compatibility ...............................................................................................23
10.2
COMMENTS ON SELECTION ........................................................................................24
10.3
ISSUES .....................................................................................................................24
11
TRANSACTIONS ...........................................................................................................25
11.1
COMMENTS ON SELECTION ........................................................................................25
11.2
ISSUES .....................................................................................................................25
11.2.1 Mitigation .............................................................................................................25
11.2.2 Next Steps ...........................................................................................................26
12
12.1
12.2
12.3
13
WORKFLOW .................................................................................................................27
POSSIBLE INTEGRATION ISSUES .................................................................................27
INTEGRATION APPROACH ...........................................................................................27
POSSIBLE FURTHER ENHANCEMENTS..........................................................................28
SWAPPABLE INFRASTRUCTURE ...............................................................................29
WHAT DO WE MEAN BY “SWAPPABLE INFRASTRUCTURE”? ............................................29
WHAT ARE THE MAIN DRIVERS BEHIND THE CONCEPT OF SWAPPABLE INFRASTRUCTURE?
31
13.3
WHAT ARE THE CONSTRAINTS AROUND SWAPPING OUT DIFFERENT LAYERS OF THE
INFRASTRUCTURE? .................................................................................................................31
13.3.1 Operating system .................................................................................................31
13.3.2 Portal ...................................................................................................................32
13.3.3 Database .............................................................................................................32
13.3.4 Service engine layer ............................................................................................32
13.3.5 ESB .....................................................................................................................32
13.3.6 Workflow ..............................................................................................................33
13.3.7 Rules engine ........................................................................................................33
13.4
WHERE DOES RESPONSIBILITY LIE FOR TESTING ASSUMPTIONS ABOUT SWAPPABLE
INFRASTRUCTURE? .................................................................................................................34
13.4.1 Database .............................................................................................................34
13.4.2 Operating system .................................................................................................34
13.4.3 Portal ...................................................................................................................34
13.4.4 Service engine layer ............................................................................................34
13.1
13.2
14
APPENDIX A STANDARDS ..........................................................................................35
Technical Architecture Phase 1 deliverables
3/7/2016
2
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
15
APPENDIX B DATABASES .........................................................................................36
15.1
15.2
15.3
15.4
15.5
16
DATABASE PERFORMANCE STATISTICS .......................................................................36
PRODUCT COMPARISON MATRIX ................................................................................37
APPENDIX C SERVLET ENGINES .................................................................................38
SERVLET ENGINES PERFORMANCE ............................................................................38
PRODUCT DATA MATRIX ............................................................................................39
APPENDIX D XML BINDING FRAMEWORK ...............................................................40
16.1
16.2
17
XML BINDING PERFORMANCE ....................................................................................40
PRODUCT DATA MATRIX ............................................................................................41
APPENDIX E WEB SERVICE ENGINES .......................................................................43
17.1
17.2
18
ENGINE PERFORMANCE .............................................................................................43
PRODUCT COMPARISON MATRIX .................................................................................45
APPENDIX F RULES ENGINES ....................................................................................47
18.1
PRODUCT COMPARISON MATRIX .................................................................................47
18.2
RULES ENGINE PERFORMANCE ..................................................................................50
18.2.1 Setup ...................................................................................................................50
18.2.2 Test Searching Through an ArrayList..............................................................50
18.2.3 Stateless vs. Stateful Session ..............................................................................51
18.2.4 Test Number of Session Invocations....................................................................52
18.2.5 Test Number of Rule Package Invocations for One Session ................................53
18.2.6 Test Stateful Sessions in Parallel Threads ...........................................................55
18.2.7 Test Stateless Session in Parallel Threads ..........................................................56
18.2.8 Test Rule Package Execution Time .....................................................................57
18.2.9 Test Rule Package Compilation Time ..................................................................58
18.2.10
Test Rule Package Memory Usage ..................................................................58
18.2.11
Test Rule Package Serialization and Deserialization ........................................59
19
APPENDIX G BPEL ENGINES ......................................................................................60
19.1
19.2
20
BPEL TESTS ............................................................................................................60
APACHE ODE INITIALIZATION PROBLEM......................................................................64
APPENDIX H ESB .........................................................................................................65
Technical Architecture Phase 1 deliverables
3/7/2016
3
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
1 Overview
1.1
Reason for the Investigation
As the Kuali Student Technical Guiding Principles states, Kuali Student is committed to a
Service Oriented Architecture (SOA) built entirely on an open-source Web Service technology
stack. There are several reasons for this:
1) The Web Service technology stack is currently the only practical open source
implementation of SOA in that it addresses fundamental issues of enterprise computing
such as: reliability, transactional consistency and security.
2) Web Services technology allows applications to be decoupled from the technical
infrastructure. Technology will change during the life of Kuali Student and we cannot
afford to be tied to a specific infrastructure implementation. Web Services standards
(WS*) should give us this loose coupling.
3) The student domain extends beyond what is traditionally considered as the Student
System into housing, athletics, student clubs etc. Kuali Student encourages third party
solutions in these areas without mandating any specific technology (for example, Web
Services works with .NET, PHP, Java, CFM etc.).
1.2
Scope of the Investigation
The purpose of the investigation was to choose core Web service technologies. The key piece
here is a Web service engine and an XML-Java binding framework. Orchestration is also
considered a core part of the SOA built on web-services, and so BPEL engines and Enterprise
Service Buses (ESBs) were also investigated. Other technologies that are not strictly speaking
“Web Services” but are critical to the technical vision of Kuali Student, were investigated:
1. Rules engines
2. Relational database engines
3. Portals
WS-Security was investigated to the degree necessary to perform a proper evaluation of the
related stack components. The full implementation of a security framework will be completed by
the Identity Team in Phase 2.
The selection and implementation of development frameworks (UI MVC framework, ORM
framework, build framework, etc.) will take place in Phase 2.
1.3
Methodology of the Investigation
Each product was examined from a number of perspectives:
1) Global criteria such as product adoption and size of the product’s development team
2) Standards compliance
3) Licensing
4) Product specific criteria (such as clustering and federation in the case of ESB)
5) Performance metrics
Technical Architecture Phase 1 deliverables
3/7/2016
4
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
However, this was not a paper based exercise. All technologies were downloaded and tested,
and these tests were used to determine product capabilities (which often differed from the
capabilities published on the Web) and to get a solid sense of the performance of the products.
The products that were selected have been bundled in a simple Proof-of-Concept application
which is available for download. The Proof-of-Concept is described in a separate document.
See http://www.kuali.org/communities/ks/poc for more information.
1.4
Conclusions
Our investigations revealed that open source offerings are not as mature as we would have
liked. This was particularly evident in the lack of an implementation of WS-Transaction.
Nonetheless, the investigating teams did not find anything that contradicted our original
assumption: namely that web services are replacing J2EE as the dominant paradigm of
enterprise computing.
.
The reasoning behind our choices can be summarized very briefly:
1. The Portal: uPortal was selected, partly because of a community of interest and partly
because it is the most successful portal product in the open source community.
2. The database: Although the project started with MySQL as a choice, this was changed
to Apache Derby. Derby can be embedded, it is under the Apache license and, in some
tests, it outperforms MySQL.
3. Web service engines: In the Java world, Java annotations and JAX-WS have become
the de-facto standard and this limits the choice of quality web service engines to CXF
and Metro.
4. Rules engines: Only Drools met both our basic functional requirements and licensing
requirements.
5. BPEL engine: The choice was limited to ODE and OpenBPEL (Sun). Some core BPEL
functionality was missing from ODE.
6. ESB: There is no clear industry standard for ESB’s. The closest thing to a standard is
JBI and that limits the choice to OpenESB (Sun) and ServiceMix. ServiceMix was
chosen partly because of our commitment of a component based infrastructure (we
know our proof-of-concept will run on Glassfish).
7. Workflow: There does not appear to be any fully WS* enabled workflow engine.
Consequently, the fact that Kuali Enterprise Workflow is not web service enabled is not a
meaningful objection. And there is an obvious community of interest with Kuali
Workflow.
To summarize current choices:
1. Portal:
uPortal (v2.6.1)
2. Database:
Derby (v10.3)
3. Rules engine:
Drools (v4.0)
4. Web service engine: CXF (v2.0.2) or Metro (v1.0FCS)
5. Web Container:
Tomcat (v6.x)
6. BPEL engine:
Open BPEL (from Sun)
7. ESB:
Apache ServiceMix (v3.2.1)
8. Workflow:
Kuali Enterprise Workflow
Technical Architecture Phase 1 deliverables
3/7/2016
5
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
This remainder of this document describes the details of the decisions. Performance metrics
and comparison tables can be found in the various appendices.
1.5
Decisions that have been delayed
There are two areas in which we did not complete our decision-making process:
1. Transactions
2. Workflow
Both are key to meeting the technical vision for Kuali Student.
Transactions (more in Section 11)
Without a proper implementation of WS-Transaction we cannot build a truly interoperable set of
Web services. The specification for WS-AT is still quite new, having been approved in April
2007; there are still questions over its adoption (e.g., how widespread will adoption be?). Once
these hurdles have been overcome, implementations should follow.
The Kuali Student decision strategy will be to monitor the open source WS* offerings over the
next 6 months for new developments in WS-AT. If nothing solid emerges by May 2008, a
decision will be made as outlined in Section 11.1 (which include creation of an in-house
implementation, extension of an open source solution, vendor assistance, etc.).
Workflow (more in Section 12)
1. Workflow is central to the vision of Kuali Student as a highly configurable set of
applications. Because there are no fully WS* compliant workflow engines, the current
recommended approach for KS is to modify Kuali Enterprise Workflow.
Both these approaches are discussed in greater detail below.
Technical Architecture Phase 1 deliverables
3/7/2016
6
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
2
2.1
Standards
Introduction
In order to meet the both the Kuali Student technical guiding principles and SOA architecture
guidelines such as component abstraction, reusability, loose coupling, and autonomy, widely
accepted industry standards must be used to guide the choice of components and the
development of the system. An example of how this benefits is abstraction of the database
component. It is possible to swap databases if:
1. The database is ANSI SQL compliant;
2. There are JDBC compliant drivers for it;
3. The code underneath doesn’t incorporate any proprietary functionality.
As stated in the Kuali Student guiding principles, we want this ability to ‘plug in’ and ‘plug out’
infrastructure pieces (component abstraction) for all infrastructure components. Kuali Student is
a five to seven year effort. We do not want to be saddled with our initial technology choices for
the remainder of the project and beyond. So, an important part of the effort in Phase 1 has
been to understand available standards in greater detail.
SOA architecture guidelines affect a wide array of elements in evaluating a Web Service stack.
For example, we estimate that the Kuali Student core system will be delivered through about 50
services (possibly a bit more). This is an order-of-magnitude estimate that is important in
several areas such as performance and registry complexity.
.
2.2
W3C standards
XML schema, SOAP and WSDL are the core standards of web services. They are all mature
standards developed and supported by W3C. Kuali Student’s Web Services will be published
as WSDL’s and the domain models as schemas. It’s worth noting here that the Web Service
engine CXF support SOAP 1.2 and WSDL 2.0.
2.3
OASIS standards
Two OASIS standards are of particular importance to Kuali Student: WS-Security and WSTransaction (WS-TX).
In J2EE, transactional contexts and security contexts are managed by the container. In Web
services the transactional context and the security context can span across multiple services
deployed on different machines and the contexts are themselves managed by Web services.
The standards that define how this works are WS-Security and WS-Transaction (and these
build on more basic standards like WS-Policy). It is these WS* standards that make Webservices a viable platform for SOA (SOAP and WSDL provide a general messaging
framework; security and transaction capabilities provide the framework for conducting
business).
The realization of Web services security and transaction capabilities is limited. CXF supports
WS-Security but it does not support WS-Transaction. Metro appears to support both (and
Technical Architecture Phase 1 deliverables
3/7/2016
7
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
does to the degree tested) but the implementation of WS-AT does not work with Tomcat. This
clearly poses a dilemma at this point in time.
As a result, the implementation of security across Web services will be one of the projects of
Phase II of the Kuali Student Technical Architecture project. Kuali Student recognizes that
the lack of a working implementation of WS-Transaction is a serious problem and our strategy
for dealing with it is outlined in Section 11.
2.4
Java community standards
Although Kuali Student encourages third party contributions that may utilize non-Java
technologies (such as .NET), as long as the technology is WS* compliant, core Kuali Student
applications are developed in Java (this is a Kuali Student Technical Guiding Principle). For
that reason it is important that infrastructure components implement the appropriate Java
standards.
2.4.1 Java web services: JSR 222 and JSR 224
The two key standards that govern the implementation of web services in Java are:
1. JSR 222: Java Architecture for XML Binding (JAXB) 2.0
2. JSR 224 Java API for XML-Based Web Services 2.0
Kuali Student’s decision to follow the JSR 224 standard (JAX-WS) narrows the Web Services
engine field to Sun Metro and CXF and the the XML-Java Binding Framework to Sun’s JAXB
reference implementation. Axis 2.0 does not implement JAX-WS and that is one key reason it
was not selected.
2.4.2 JBI: JSR 208
There is no industry standard covering ESB’s. The closest to a general standard is the JBI
standard covered by JSR 208: Java Business Integration. This standard is problematical in
two respects:
1. It is directed at the Java world
2. IBM and BEA declined to sign the spec.
Still, JBI is the closest thing there is to a standard and it it supported by both ServiceMix and
OpenESB. This lack of standards suggests that if Kuali Student is deployed on an ESB, the
ESB must be loosely coupled from the rest of the infrastructure. This strategy will be spelled
out in detail in Phase 2.
2.4.3 Rules engine: JSR 94
The invocation of an abstract rules engine is covered by JSR 94. However, the abstract rules
engine will be deployed sparingly throughout Kuali Student (in about half a dozen Decision
Services: Academic Decision Service, Authorization Decision Service etc). Because of this,
unplugging the rules engine will not be a serious issue. (Note: Drools is JSR 94 compliant).
2.4.4 Portlets: JSR 286
The applicability of this standard falls within the scope of the Phase 2 User Interface project.
Technical Architecture Phase 1 deliverables
3/7/2016
8
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
3 The Portal
Selection: uPortal
Contenders
o uPortal
Primary reasons for selection
o Widespread adoption of uPortal in the higher education community
o An obvious community of interest between uPortal and Kuali Student
o Standards compliance
3.1
Comments on Selection
Kauli Student is committed to delivering the user interface through a portal. The exact manner
in which this is achieved is part of the Phase 2 User Interface project. In Phase 1 the technical
team did not do a comparative study of open source portal projects. Rather, we started on the
assumption that uPortal would meet our needs (and investigations in Phase 2 will reveal
whether this assumption is justified). There are three compelling reasons for this initial choice:
widespread adoption of uPortal in the higher education community; an obvious community of
interest between uPortal and Kuali Student; and standards compliance.
3.2
Selection Criteria and Evaluation
3.2.1 Widespread adoption
uPortal has seen wide acceptance and deployment in higher education. Some examples:
1. The uPortal site references 95 production implementations (see
http://www.uportal.org/who-prod.html)
2. In addition to the 95 implementations referred to above, uPortal is used throughout
France as a standard portal for institutions of higher education (see http://www.esupportail.org/communaute/). This is also evidence that uPortal successfully supports
internationalization.
3. It has been re-packaged in the SunGuard SCT Luminis product.
3.2.2 Community of interest
There are common interests between the uPortal community and the Kuali Student community
1. uPortal is a target product for the Fluid project. KS may be able to meet some
accessibility and usability requirements, simply by employing uPortal.
2. The Kuali Student project is in a position to influence uPortal directions.
3. Deficiencies in uPortal can be addressed through contributions from Kuali Student
developers
4. The uPortal community has an active set of contributors addressing internationalization
issues, in both Europe and Asia
Technical Architecture Phase 1 deliverables
3/7/2016
9
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
3.2.3 Standards compliance
uPortal supports the JSR-168 portlet specification, and will soon support JSR-286 (and may be
the first to do so)..
3.3
Issues
As mentioned above, Phase 2 will reveal the pros and cons of using uPortal. One issue of
interest is determining how easy it will be to swap portals.
Technical Architecture Phase 1 deliverables
3/7/2016
10
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
4 The database
Selection: Apache Derby
Contenders
o Derby
o MySQL
Primary reasons for selection
o Pure Java
o Embeddable
o Performance containers
4.1
Comments on Selection
Database selection focused on both development phase and deployment phase concerns.
While Kuali Student cannot require a specific database for deployment, we do need to provide
one with our "Test Drive" version. Following is a list of requirements and how Derby and
MySQL each fit with the requirements.
4.2
Selection Criteria and Evaluation
Development phase
Easy setup, teardown, cloning, etc of development databases. This is important for unit testing
as well as ease of change management.
o Derby
o No installation required. Derby is included by default with Java 6, or can be
bundled within the Kuali Student application itself.
o Databases can be dynamically created or recreated even at runtime if necessary
o Databases can be started and stopped by the program itself
o MySQL
o Requires installation
o Cloning can be done via MySQL, but is far more complicated than with Derby
o Starting and stopping MySQL requires calls outside of Java
Deployment phase
A key requirement is bundled redistribution
o Derby
o Can be easily bundled either within the Java application itself, or bundled with the
distribution package and launched via the same startup scripts as the "Test
Drive" bundle.
o License allows for redistribution
o MySQL
o Requires installation
o License allows for redistribution
Technical Architecture Phase 1 deliverables
3/7/2016
11
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Database performance should not present an issue due to limited data set sizes and minimal
load during development, nor in a "Test Drive" phase. Both Derby and MySQL should scale well
for small to medium installations, though, given the performance metrics shown in Appendix B.
4.3
Issues
The usability of Derby in a highly intensive production environment is not known. To address
this issue, we intend to deliver Kuali Student Test Drive as “certified” in Oracle, MySQL, and
Derby. The Development Team will address this in Phase 2.
Technical Architecture Phase 1 deliverables
3/7/2016
12
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
5 Servlet engines
Selection: Tomcat
Contenders
o Tomcat
o Glassfish
o Jetty
Primary reasons for selection
o Popularity
o Standards compliance
o Tomcat is the reference implementation for servlet containers
o Ease of configuration
o Tomcat is simply an "unzip" installation, although more configuration options are
available such as a windows service, etc.
5.1
Comments on Selection
Kuali Student aims for a standardized deployment without any dependencies on a specific
application server or servlet container. As such we are recommending the use of Tomcat, which
is the reference implementation for the servlet and JSP specifications. Tomcat is easily
redistributed, and as the performance metrics indicate, fast.
Tomcat is not a complete J2EE application server like Glassfish. However, many of the J2EE
features that Glassfish provides, such as a web service engine (Metro) and a JMS queue, can
be added onto Tomcat.
Technical Architecture Phase 1 deliverables
3/7/2016
13
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
6 XML-Java binding
Selection: JAXB (Sun’s reference implementation)
Contenders
o Sun’s JAXB Reference Implementation
o JiBX
o Castor
o XMLBeans
Primary reasons for selection
o JAXB is a JSR specification (JSR 222)
o Based on XML schema
o Multiple implementations available
o Backwards compatible from current (2.1) to original 1.0
o Excellent tool support as well as Eclipse plug-ins
o Included in Java 6
o Reference implementation outperformed other contenders
6.1
Comments on Selection
XML binding simply refers to converting Java data structures to XML, and XML to Java data
structures. JAXB is a specification that uses Java annotations and XML schema to define types
and type conversions. JAXB goes hand-in-hand with JAX-WS (see the Web Service Engine
summary for more information on the choice of JAX-WS as one of the core technology
standards chosen by Kuali Student).
6.2
Selection Criteria and Evaluation
JAXB supports round-trip generation of XML schema from Java code, and Java code from XML
schema
By adopting the JAXB/Java-annotations (JAX-WS) standard, Kuali student effectively eliminated
two other contenders: Castor and JiBX. Both these products rely on a different binding
mechanism: namely an external binding file. JiBX raises a further concern in that it postprocess byte code. This can cause complications in the build and deployment environments.
XMLbeans was slower than the Sun JAXB reference implementation and it did not produce
clean stubs. Also it does not appear to support JSR222.
6.3
Issues
6.3.1 Performance concerns
If there are still lingering concerns that marshalling and un marshalling XML is a performance
issue nearly all of the investigations of Phase 1 of Kuali Student indicate that this is not the
case:
Technical Architecture Phase 1 deliverables
3/7/2016
14
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
1. The performance metrics of various frameworks for XML binding show that
performance in this area is a trivial concern.
2. Kuali Student will be delivered as a set of about 50 services. These services will be
coarsely-grained thereby minimizing the amount of latency due to traffic
Technical Architecture Phase 1 deliverables
3/7/2016
15
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
7 Web-service engines
Selection: CXF, Metro
Contenders
o Axis 2
o CXF
o Metro
Primary reasons for selection
o At this point, the selection of either CXF or Metro is relegated to Phase 2.
7.1
Reasons for the Selection
Standards compliance became the primary focus of the web service engine evaluation. The
core standard required is JAX-WS. The JAX-WS specification is a JSR standard that defines a
set of annotations used to “mark up” Java code with metadata relating to XML and Web
Services. Using these annotations, Java code can be reliably translated to XML and XML
reliably translated to Java code. Web Service-specific information can also be annotated, such
as service endpoints, etc. Taking advantage of "round trip" generation of either Java code from
WSDL, or WSDL from Java code will allow developers to use a wide range of XML and Java
development tools. In addition, as previously mentioned in section 1.4, JAX-WS and JAXB
(which are closely related) have become de facto standards in the Java community. Axis2 is
not a viable option due to lack of support for JAX-WS.
Other important standards are the WS-* specifications, such as WS-Security and WSTransaction. The technical teams determined that WS-AtomicTransaction will be required as an
integral piece of the Kuali Student stack. Unfortunately, the only functioning implementation of
WS-AtomicTransaction that has a license compatible with the Kuali Student project requires use
of the full Glassfish J2EE application server. The Apache CXF team is currently working to
implement core WS-* standards, and there is also a chance that WS-AtomicTransaction will be
supported by Metro on Tomcat in the future. Due to this issue, the decision was made to
postpone the final decision until later in the project.
7.2
Issues
The postponed decision does not present as large of a problem as it may seem. Replacing one
JAX-WS compliant service engine with another one does not require any significant changes to
the underlying Java code, nor should it require any changes to the service consumer, provided
the system is properly implemented. In addition, it will not be until later phases of the project
that we will have any significant number of services requiring conversion, if we do decide to
select a different JAX-WS compliant service engine.
For now we will defer the decision until later in Phase 2 and will make a more educated
selection once other factors (such as a final service bus and architecture) have been settled.
Technical Architecture Phase 1 deliverables
3/7/2016
16
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
8 Rules engines
Selection: Drools (JBoss/Redhat)
Contenders
o Drools
o SweetRules
o OpenRules
Primary reasons for selection
o Licensing
o IDE integration
o XML support
o domain-specific language support
o repository support.
8.1
Comments on Selection
Rule engine triage was basically driven by licensing considerations. Most of the open-source
offerings are encumbered by GPL/LGPL restrictions. One fairly promising offering, OpenRules
stated that its licensing was based on a "modified Mozilla license." A cursory reading of this
modified license revealed that it was even more restrictive than GPL, with specific restrictions as
to RDBMS platforms and the like. Outreach to another offering was also unproductive.
8.2
Selection Criteria and Evaluation
Rule engine evaluation was of course driven by more detailed technical considerations including
but not limited to IDE integration, XML support, domain-specific language support, repository
support, as well as "mindshare" and "half-life" considerations.
Happily and serendipitously, triage and evaluation efforts arrived at the same
conclusion/selection for "declarative rule engine" -- drools from JBoss/Redhat. Major positive
features include:
o Robust plug-in for the eclipse IDE
o Multiple authoring modes.
o Java-friendly
o xml
o decision-table in excel
o graphical rule-flow editor
o guided wizard-style
o Rudimentary repository support based on java content management standard
(implemented via apache JackRabbit).
The team was able to make contact with the drools project lead at the RuleML conference in
Orlando in October, and is active on the project mailing list. Also a test-driven development
environment and methodology base on FitNesse is under development.
Technical Architecture Phase 1 deliverables
3/7/2016
17
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Subsequent research and discussions at the November FSU workshop has led to thinking about
"Enterprise Decision Management" -- a rules engine is one (albeit major) piece of plumbing in
decision management.
8.3
Issues
Drools is an abstract rules engine. By itself it does not supply the full set of capabilities
described in the Kuali vision. For this we need a set of capabilities built on top of the abstract
rules engine. We call these capabilities the Business Rules Management System (BRMS). The
core of the BRMS is a database that:
1. Contains all the rules and
2. Indexes and classifies all the facts and actions of all the rules.
The capabilities of the BRMS support:
1. A set of user interfaces that allow end-users to define academic regulations and other
business rules;
2. Enterprise reporting on the rules base;
3. A set of decision services that implement rules engine capabilities in the different
functional domains (such as an Academic Decision Service that could support different
applications such as Enrolment, Degree Audit and Admissions);
4. Running what-if scenarios
Building the BRMS is scheduled for January-May 2008. The user interfaces should be built as
part of the Configuration Application in the June – October 2008 timeframe.
The illustration below (Figure 1 – KS BRMS) is a schematic representation of the BRMS as an
application that sits between the abstract rules engine (Drools) and the various KS functional
applications
Technical Architecture Phase 1 deliverables
3/7/2016
18
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
8.4
Figure 1 – KS BRMS
Technical Architecture Phase 1 deliverables
3/7/2016
19
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
9 BPEL
Selection: Sun OpenESB BPEL
Contenders
o Apache ODE
o Sun OpenESB BPEL
o JBoss
Primary reasons for selection
Open Source BPEL technology is not ready for a highly reliable and scalable enterprise
system. However, we will revisit the question of BPEL and workflow in the KEW POC
project (see Section 12.3).
9.1
Selection Criteria and Evaluation
The two engines evaluated were Apache ODE and Sun OpenESB BPEL, with the Sun engine
selected as our choice. We also looked at JBoss, but did not perform a full evaluation because
it was labeled experimental at the time and the samples bundled with the product would not
work.
In our tests BPEL was portable between the two engines (with the exception of one test case
and as long as the engine supported the tags), requiring only modifications to deployment
descriptors external to the BPEL itself. We intentionally avoided the use of any extensions or
custom tags.
The Sun engine supports most BPEL tags and features a fully functional graphical editor and
test environment bundled with NetBeans. It is only available as a service engine deployable on
a JBI bus. We were able to deploy onto the Apache ServiceMix JBI bus, though there are
unresolved issues using the newest release of each.
The Apache engine is deployable in a servlet container or on a JBI bus. It supported similar tags
to the Sun engine with the exception of forEach. The issue has been fixed in the ODE code
repository, but it has not been released for us to test.
Neither engine supported parallel forEach, which limits us to serially processing a list of similar
elements and to hard coding the number of threads. Another feature both engines lacked was
support for compensating transactions, which would be essential for long running processes.
The main difference in functionality is that the Apache engine requires initialization of all
variables not received from a service call with a hard coded XML message skeleton. This
makes it impossible to create a dynamic sized list of elements or add to an existing message.
We feel this does not follow our interpretation of the BPEL 2.0 specification, and will limit the
possible applications of BPEL using the Apache Engine. See Appendix G for an example of the
variable initialization problem in Apache ODE.
Technical Architecture Phase 1 deliverables
3/7/2016
20
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
While both engines have similar support for the BPEL specification, we feel the variable
initialization issue with Apache ODE outweighs the limited deployment options of the Sun
engine. The Sun engine seems to be more actively developed than Apache, and looks like it is
the cornerstone component of OpenESB as most of the ESB samples and tutorials use it.
These factors and the integrated graphical environment are the reasons why we chose the Sun
engine.
9.1.1
Potential Uses
Persistent, stateful processes led us to believe that workflow might be one such use for BPEL.
We found that BPEL did not contain any high level constructs targeted towards workflow and
while a workflow system could be built using BPEL, the bulk of the work is left to be
implemented. We did not find any BPEL based workflow products, but noted some extensions
and helper components were under development (BPEL4People, WLMSE - http://wiki.openesb.java.net/Wiki.jsp?page=WLMSE). It is also useful to note that BPEL is not very well suited
to represent a specific workflow instance, but rather a workflow pattern. For example, routing a
document would not show the list of people in BPEL, but rather a loop calling a “getNextPerson”
service.
BPEL seems best suited for service integration and can quickly be configured to provide content
based routing, message transformation/splitting/aggregation, and content enrichment (similar
features are also provided by some ESBs). This would allow institutions to customize Kuali
Student without modifying code. Use cases from the function teams should be individually
evaluated to determine if it is best to use BPEL instead of code.
Although BPEL was considered for use by the functional users, it is still too much of a low level
language for general functional user consumption. Sun’s Netbeans editor is the most complete
graphical BPEL designer, including the ability to fluidly switch between graphical and XML entry,
but even with the graphical interface it still requires knowledge of WSDL, XML Schema, and
debugging. The graphical display would make an excellent way for technical developers to
demonstrate and develop processes with the functional users.
9.2
Issues
Open Source BPEL technology is not ready for a highly reliable and scalable enterprise system.
However, we will revisit the question of BPEL and workflow in the KEW POC project (see
Section 12.3).
Technical Architecture Phase 1 deliverables
3/7/2016
21
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
10 ESB
Selection: Apache ServiceMix
Contenders
o Apache ServiceMix
o Sun OpenESB
o Apache Synapse
o Mule
o Kuali Service Bus
Primary reasons for selection
Kuali Student will need an ESB infrastructure to provide real time location of its services in
order to avoid hard coded service URLs or complex configuration files requiring
customization for each institution. We are hoping to leverage the capabilities to allow
institutions to replace or modify standard Kuali Student components without having to
modify the code base. Legacy integration is often associated with ESBs, but we did not
evaluate any features intended for that sole purpose (although many features useful to
Kuali Student will also aid with legacy integration).
10.1 Selection Criteria and Evaluation
10.1.1 Criteria
Our evaluation focused on the following key areas: service registry, routing and transformation,
configuration (clustering, federation, deployment options), and WS-* compatibility. In our testing
we intentionally avoided functionality that would introduce dependencies in our service code.
Benchmarking was performed to test performance and scalability.
10.1.2 Product Space
Evaluations were performed on Apache ServiceMix, Sun OpenESB, and Apache Synapse.
Mule and Kuali Service Bus were looked at, but full evaluations were not performed.
10.1.2.1 ServiceMix
The registry is internal and automatically updated when services are deployed; this eliminates
the need for custom configuration files. ServiceMix offers the most routing and transformation
options of all the buses evaluated. Clustering, with load balancing of services, is supported, but
services must be manually deployed to each instance. Federation is also supported, enabling
an environment where services hot deployed on any bus are instantly recognized by each bus.
ServiceMix leverages the Apache CXF web service engine, adding to it the capability to hot
deploy individual services and providing a lightweight service packaging option. Fewer
configurations are required to get a web service running on ServiceMix than CXF running on
Tomcat.
The documentation does not contain complete examples and often test cases from the code
repository must be referenced. This is not surprising since ServiceMix offers a vast amount of
Technical Architecture Phase 1 deliverables
3/7/2016
22
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
configuration options and features. The benchmark tests revealed ServiceMix to have the most
latency of all the buses, but this is most likely due to the SEDA flow which allows it to have more
constant response time as load increases.
10.1.2.2 OpenESB
The registry is internal and automatically updated when services are deployed (similar to
ServiceMix). An XSLT engine is provided to perform message transformation. OpenESB
supports clustering and deployment of services will propagate to all clustered servers.
OpenESB performed the best in our benchmark testing.
OpenESB relies on BPEL to provide routing capabilities, this requires a larger amount of
configuration than the options provided by the other buses. Federation is not supported which
requires services on other buses to be manually added to the registry. The documentation
contains complete examples, but these all require the use of the Netbeans IDE. Some of the
capabilities we tested could not be configured in Netbeans and this greatly hindered our
progress. We were unable to deploy some services built outside of the IDE and found
inconsistent results when trying to deploy JAX-WS services to the bus.
10.1.2.3 Synapse
Synapse is more an HTTP/Soap router than an ESB. It provides all but one of the routing
capabilities we were looking for as well as message transformation. Synapse supports
federation with the capability to share registry information across multiple instances.
Configuration was straight forward and numerous examples were provided in the
documentation.
Deployment of services is not supported by Synapse so all registry information must be
manually entered. Synapse is the only bus evaluated that does not support load balancing of
services. Performance degraded as load increased during benchmark testing until it began to
produce errors.
10.1.2.4 Other Products
We investigated Mule, but found it necessary to write code in order to proxy a service and
decided that this was undesirable. The Kuali Service Bus came close to meeting our needs, but
it did not include support for JAX-WS, was tightly coupled with the other RICE products, and
some code dependencies were introduced when using the bus to call other services. The KSB
was the only bus to provide an HTTP display of its complete service registry. If these issues are
addressed in a future release of the KSB then it would be a viable solution.
10.1.3 WS-* Compatibility
The purpose of this evaluation was to determine how SOAP headers were processed by the
bus. We found very little documentation in this area and resorted to working with the web
service engines that each bus was based on and then trying to port those settings to the ESB.
We concentrated on WS-Security as WS-Reliable Messaging only applies to messages external
to the bus and WS-Atomic Transaction is only implemented on one Web service engine when
deployed to one specific J2EE container.
Technical Architecture Phase 1 deliverables
3/7/2016
23
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
All three ESBs supported the username, certificate signing, and encrypting security
mechanisms. The standard for each bus was to remove the header before sending the
message to the destination service. In ServiceMix the security context is not provided to the
Web service and according to IONA developers this is intentional (they did suggest a
workaround). According to the documentation for OpenESB security context should be
available to the service, but we did not find this to be the case. Synapse can be configured so
the security header is passed through without being processed (this is not standard protocol for
SOAP nodes).
At this time we do not know if this will be an issue or not. It will depend on the direction taken by
the Identity Team in Phase 2.
10.2 Comments on Selection
Apache ServiceMix is the ESB that best meets the needs for Kuali Student. It can run on a
servlet container or standalone, provides the most functionality, and is highly configurable
without depending on an IDE. We found the ServiceMix forums to be responsive to our
inquiries and the product is commercially supported by IONA.
It’s very much worth noting that The Mellon Foundation-sponsored ESB exploratory committee
also selected Apache ServiceMix as their top-rated open source ESB. Their findings can be
found at:
http://tid.ithaka.org/enterprise-service-bus/mellon-esb-final-pres-v17.pdf
http://tid.ithaka.org/enterprise-service-bus/esb-narrative-rc-4.pdf
10.3 Issues
The Kuali Service Bus was currently unable to meet the needs of Kuali Student in three areas:
1. Lack of support for JAX-WS;
2. Its tight coupling with other RICE products;
3. Code dependencies introduced when using the bus to call other services.
Kuali Student looks forward to continued partnership with the RICE team to address these
issues.
Technical Architecture Phase 1 deliverables
3/7/2016
24
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
11 Transactions
Selection: NONE AT THIS TIME
Contenders
o None
11.1 Comments on Selection
Primary reasons for lack of selection
o Unable to find solution that implemented WS-Transaction
o Could not find an Open Source Solution in this product space
The ability to define transactions that span multiple web services is a fundamental requirement
of an enterprise system. Kuali Student has to have a solution before we deliver product.
Unfortunately, we were unable to find a solution that:
o Implemented WS-Transaction and
o Met our general selection criteria for an open source solution
There is a commercial implementation by a company by the name of Atomikos. While they
have open-sourced their implementation of JTA, their implementation of WS-AT remains
proprietary. Sun has an implementation but it appears to be tightly bundled with the Glassfish
suite and the KS technical team was unable to get it to work with Tomcat.
11.2 Issues
11.2.1 Mitigation
We did define a strategy and a set of options to ensure that we arrive at a solution. These are
the choices:
1. Write our own “bare-bones” implementation of WS-AT. We need to determine the effort
required.
2. Modify the Sun implementation (fork the code). We need to determine the effort
required.
3. Collaborate with Sun to modify their implementation.
4. Persuade Atomikos to open-source their implementation (their JTA implementation is
already open source)
5. Hope that an existing open source community implements a solution. There was a
solution for Axis 1.0, but the WS-AT project for Axis 2 does not seem to be moving
forward. For some reason the CXF community do not appear to have WS-AT on their
roadmap. However, the community is continually changing, and what is true today
(December 2007) may not be true in six months time.
Technical Architecture Phase 1 deliverables
3/7/2016
25
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
11.2.2 Next Steps
1. We will designate one technical team lead to research possible developments once a
month between January 2008 and May 2008.
2. We ask the Kuali Student Board to see if we can leverage strategic relationships to get
movement on options 4 and 5.
3. If there is not a solution by May 2008, then we choose between options 1, 2 and 3. The
implementation becomes part of the Phase 3 Technical Architecture project.
Technical Architecture Phase 1 deliverables
3/7/2016
26
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
12 Workflow
The Kuali Student technical team is recommending that Kuali Enterprise Workflow be used as
the workflow engine for Kuali Student. KEW already meets some of the SOA WS* features
including WS-Security and is committed to furthering their support for the WS* specifications as
open source libraries continue to evolve to support these specifications more fully.
Furthermore, KEW is a mature product that has been used in production for several years.
However, there are some possible outstanding issues and we need to consider:
1. An integration strategy
2. Possible enhancements to KEW beyond a “bare-bones” integration
12.1 Possible integration issues
The only way to answer these questions in a detailed manner is to create a POC.
There are still some unanswered questions regarding the integration of KS and KEW. KS
needs to be able to consume and deliver services as web-services. There are three dimensions
to this:
1. Endpoints need to be exposed as SOAP/WSDL endpoints
2. Consumers and providers must implement core WS* standards:
a. WS-Atomic Transaction
b. WS-Security
3. Interface definitions must be optimized for remote access.
There are a range of possible outcomes:
1. The integration may turn out to be trivial because:
a. The interface definitions that KS needs are already available as SOAP/WSDL
endpoints
b. The WS* standards are easy to implement (for example, a simple JTA-WS/AT
bridge)
2. The integration may turn out to be problematical due to some unforeseen technology
mismatch.
12.2 Integration approach
The integration project should be scheduled for the May timeframe. By that time we will have:
1. An strategy for WS Atomic Transaction
2. A set of working services (from identity and rules management) that we can use in a
workflow scenario
The integration project would be considered part of the Kuali Student Configuration application
project and would span the first three weeks of May:
1. Design a POC around a trivial use case (first week of May)
Technical Architecture Phase 1 deliverables
3/7/2016
27
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
2. A KS-KEW team (1 developer from each) can work on the POC for 2 weeks. They may
need to be geographically co-located).
The outcome of this project would either be:
1. A completed integration
2. A recommendation on the amount of work needed to complete the integration
12.3 Possible further enhancements
Once we have answered basic questions about integration (amount of work and resources), we
can consider a number of possible further enhancements to Kew:
1. Integration of the rules engine for routing decisions
2. A graphical user interface for routing (this could come for free as part of the rules engine
technology)
3. The workflow engine calling out to a BPEL engine to execute a set of activities.
Technical Architecture Phase 1 deliverables
3/7/2016
28
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
13 Swappable Infrastructure
A core part of the vision of Kuali Student is to provide a clear separation between the application
layer and the infrastructure layer and to keep components in the infrastructure layer as
independent as possible via standards. The following discussion attempts to put some clearer
focus around what we do understand and to suggest where we will get a better understanding
later in the project.
The following questions will be addressed:
1. What do we mean by “swappable infrastructure”?
2. What are the main drivers behind the concept of swappable infrastructure?
3. What are the constraints around swapping out different layers of the infrastructure?
4. Where does responsibility lie for testing assumptions about swappable infrastructure?
This document, and this section in particular, will change as we progress through the Kuali
Student project: as we better understand the open source technologies we’ve chosen; as
standards are more widely adopted and adhered to; and as the open source landscape itself
changes. In other words, this is a living document that will continually reflect our current
understanding of the technology used in Kuali Student.
13.1 What do we mean by “swappable infrastructure”?
During the technology investigation phase (Technical Architecture Phase I), we have been using
the term “swappable infrastructure” in two different senses:
1. The ability to swap out the entire infrastructure suite (i.e., SOA/Web Services stack)
without worrying about the details of what makes up the stack.
2. The ability to swap out individual infrastructure components of the Kuali Student
reference implementation infrastructure. The Proof-of-Concept (POC) illustrates this in a
limited way:
a. Two different service engines are used:
i. Apache CXF
ii. Sun Metro
In the context of swappability, it is worth noting that the same service
implementation was deployable on both CXF and Metro unchanged. The service
implementations were not complex, and the ability to use the same service
implementation for both engines may change as complexity increases.
b. Some services are run on the bus, others are run off the bus (so the entire bus
can be swapped out of the architecture).
We are looking to Sun and IBM will test the first point. The experiment should give us a clear
definition of what constitutes the “application.” At present we think it consists of a set of
schemas, WSDLs, BPEL scripts and Java code. Figure 1 shows a general view of Kuali
Student running on the Sun Web service stack and the IBM Web service stack.
Technical Architecture Phase 1 deliverables
3/7/2016
29
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Figure 1 - Kuali Student running on two different vendor stacks
a) the Sun Web service stack
b) the IBM Web service stack
Figure 2 shows how the stack selected during Phase 1 of the technology project should allow us
to swap out infrastructure components at a more finely grained level. In this illustration:
1. Components in yellow have been “certified”
2. Components in blue are expected to work because of standards compliance
Figure 2
A Kuali Student reference implementation
Technical Architecture Phase 1 deliverables
3/7/2016
30
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
13.2 What are the main drivers behind the concept of swappable infrastructure?
The drivers can be categorized as:
1. Obvious leapfrog - when it's clear that one product is significantly better and should
replace the one currently in the reference implementation stack. It provides needed or
desired functionality.
2. Stakeholder interest - a founder or partner wants to replace a component for whatever
reason.
3. Continuous research - investigation to stay on top of open source solutions in order to be
aware of products that could/should be replaced in the stack.
These drivers will vary for different layers of the infrastructure. For example:
1. At the service engine level, the key driver may be the volatility of current offerings as
different open source implementations leapfrog each other. Even within the short
timeframe between the creation of Kuali Student and the completion of Phase 1, there
were significant changes in the relative standings of Axis, Metro, and CXF.
2. At the machine/OS level the drivers will probably be institution specific:
a. Price/performance
b. Existing institutional infrastructure
c. Existing expertise and support structures
3. At the database level, the key drivers are expected to be institution specific:
a. Existing institutional infrastructure
b. Existing expertise and support structures
Note that many of the founders will likely continue to run Oracle so there should be
strong support for an Oracle implementation.
13.3 What are the constraints around swapping out different layers of the
infrastructure?
13.3.1 Operating system
Kuali Student should work on any OS for which there is a Java Virtual Machine
implementation. This should include:
1. Solaris
2. Linux
3. Windows server
Two operating systems will be continuously tested by the Kuali Student development team as
most developer sandboxes will be running a Windows OS and Kuali Servers will run Linux.
Kuali Student will also be certified on VMware.
Technical Architecture Phase 1 deliverables
3/7/2016
31
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
13.3.2 Portal
Kuali Student portlets should be deployable on any JSR 168 compliant Portal. This is
currently part of the Team 1 UI investigation.
13.3.3 Database
In Kuali Student a database product can be used (swapped) if it is supported by the JPA
compliant ORM tool Kuali Student selects. We are talking about standards built on standards.
The compliance stack for the Kuali Student database is:
1. JPA – Java Persistence API. This Java toolkit allows data to be represented
equivalently in both Java code and in XML.
2. JDBC – These are the low-level database-specific drivers that allow Java to talk to the
database.
3. ANSI SQL – This is the standard that acts as the lowest common denominator in data
access languages. All large databases support ANSI SQL.
However, there are non-swappable aspects of a database to be considered as well. While
there are several databases that meet the above three standards, there is much more to a
database than simply binding to an application. The physical/logical deployment of a
database on file systems is not covered by standards. Nor is the administration of the
database environment: backup/recovery procedures, optimization etc. Each implementation
team will have to take on this work. Space requirements and physical file structures will vary
from one institution to another and so each database deployment will, to some extent, be
unique.
13.3.4 Service engine layer
Web service technologies that are compliant with JAXB (Sun’s XML binding reference
implementation) and JAX-WS (Java language support for Web services) should work with
Kuali Student. The POC uses two Web service engines:
o Metro
o CXF
Testing out different service engines could be part of the on-going responsibilities of the
architecture team. Or, it could be the responsibility of the implementation teams. The extent
to which swapping Web service engines can be automated will depend on:
o Whether we specify interfaces using WSDL-First or Java-First
o The extent to which we modify generated artifacts such as WSDL and Java interfaces.
The answer to these questions will become clearer in Phase 2 of the project.
By choosing a JAXB-compliant binding framework, we will not have to re-write binding files (as
we would have done had we chosen Castor or JiBX).
13.3.5 ESB
At this time, there are only two implementations of the JBI-specification, Sun Open ESB, and
Apache ServiceMix. These two implementations were not, in their current state, easily
swappable because, for example, Sun’s Integrated Development Environment (IDE) is
required to port projects from Apache ServiceMix. That said, if Sun’s OpenESB can be
configured outside the IDE, swappability will be achievable.
Technical Architecture Phase 1 deliverables
3/7/2016
32
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
There are two categories of ESB configuration that directly affect swappability:
1. Simple Message Registry/Relay – Messages are sent to the ESB over HTTP and then
resent to the destination (and back).
a. Pros – Should be completely swappable
b. Cons – More traffic and less features; need to configure services to know the
URL of the ESB; must configure ESB with URLs of the services.
2. Embedded Web Service Engine – This allows in-JVM (Java Virtual Machine) transport.
a. Pros - Obviates the need to configure URLs between services and the ESB.
b. Cons – Not completely swappable, but can easily be removed.
Ramifications of using a bus
1. Using an ESB requires configuration of the ESB’s URL and loses in-JVM capability.
2. The ESB must be configured to know where the off-bus services are located.
3. Packaging and distribution of the system has a few more steps with the introduction
of an ESB.
4. Adding an ESB after the system is built possibly will require ripping out hard-coded
URLs in services (or changing configuration).
The decisions on whether to use an ESB, and if so, whether to configure it using Simple
Message Registry/Relay (highly swappable) or Embedded Web Service Engine (less
swappable) will be determined in Phase 2. The extent to which the ESB is fully swappable
will be understood at the end of Phase2.
13.3.6 Workflow
The lack of clear and widely adopted standards around workflow means that the workflow
component is not swappable. If an implementer wanted to use a different workflow engine,
they would have to re-write all the calls to the workflow engine (assuming they could be
mapped) and they would have to re-write all the routing rules.
13.3.7 Rules engine
In order to swap rules engine technology, an implementer would need to:
1. Choose one that is JSR-94 compliant (or write a wrapper to make it compliant – a
relatively trivial task). JSR-94 defines only the interface for starting and running a rules
engine, not the syntax of the rules.
2. Convert the rules from one syntax to another – a very serious task
3. Adapt the BRMS (Business Rules Management System) to the new rules engine – a
moderate task
The complexity of these tasks will be known by the end of phase 2.
UBC will need to try the first and second task when its existing rules base is converted from
QuickRules to Drools. These conversion routines will then become a community asset
allowing customers to switch between QuickRules/SAP and KS-Drools.
Technical Architecture Phase 1 deliverables
3/7/2016
33
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
13.4 Where does responsibility lie for testing assumptions about swappable
infrastructure?
13.4.1 Database
The Kuali Student development team will be responsible for ensuring:
o Derby compliance through daily builds
o Oracle compliance through weekly builds.
o MySQL compliance through monthly builds.
Note that the timeframes for Oracle and MySQL compliance testing may change as
experience with Kuali Student is gained.
Institutional implementation teams will be able to contribute their scripts and documentation
for implementations on Oracle, MySQL and any other compliant database platform. These
contributions then become community assets.
13.4.2 Operating system
Configuring and testing an OS/hardware stack other than Linux on VMware (the Kuali
Foundation configuration) is the responsibility of implementation teams at the different
institutions. Again, any solutions can be contributed as community assets. Commercial
affiliates may also play a role in configuring and testing OS/hardware stacks (e.g. Sun
Solaris).
13.4.3 Portal
The responsibility for testing different Portal deployments lies with implementation teams at
institutions that are not using uPortal.
13.4.4 Service engine layer
We are looking to commercial affiliates such as IBM and Sun to take on the work of certifying
the Kuali Application on their respective WS* stacks.
Technical Architecture Phase 1 deliverables
3/7/2016
34
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
14 Appendix A Standards
These summary tables express our findings regarding standards. The numbers are are
intended as a rough guide with the following meanings:
Score
1
2
3
Relevance
Irrelevant
Nice to have
Mandatory
Standard
WS-Policy
Adoption
None
Some
Universal
Relevance
3
Adoption
2
WS-Coordination
WS-Atomic
Transactions
WS-Business
Activity
3
3
2
1
2
1
WS-Security
WS-Reliable
Messaging
3
3
2
3
3
3
WS- Notification
WS-Addressing
Standard
JSR-94
Relevance
1
Adoption
2
JSR-222
JSR-224
3
3
2
2
JSR-286
2
2
JSR-208
1
2
JSR-220
3
2
Technical Architecture Phase 1 deliverables
Comments
WS-Policy is a building block of WS-Transaction
and WS-Security. Policy assertions are used to
indicate that a service belongs to a transactional
or security context.
A basic building block of WS-Transaction.
This is fundamental to SOA built on WS*. Only
Sun Glassfish currently has an implementation.
Not implemented anywhere. Most likely, KSS will
have to implement some kind of compensation
strategies not governed by a standard.
A lot of asynchronous notification likely in KS.
This is even truer if an institution is trying to get
rid of batch processing. Well supported by the
web service engines out there.
Needed if not using JMS, e.g., re: interoperability
at that level with .NET app.
Fundamental
Comments
Defines the interface for starting and running a rules
engine. This is not a huge issue as it is rules syntax that
really matters.
Defines the standard for Java-XML binding. Core to KSS.
Defines handlers and interceptors: critical to interoperability
of KSS services.
Nothing of considerable size is written as a portlet . On the
other hand, failure to deliver UI in portlets becomes an
issue for institutions integrating KSS with their own
systems. This a Phase II discussion.
This is a Sun-led spec. IBM and BEA haven’t signed-on.
Bottom line: there is no universally accepted specification
for what a bus is.
JTA (to discuss in Phase II)
3/7/2016
35
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
15 Appendix B Databases
15.1 Database performance statistics
The following images are excerpted from the Sun benchmarks document for Apache Derby
available at: http://wiki.apache.org/apachecon-data/attachments/Us2005OnlineSessionSlides/
attachments/ApacheCon05usDerbyPerformance.pdf .
Technical Architecture Phase 1 deliverables
3/7/2016
36
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
15.2 Product Comparison Matrix
Product site
Product Version
License
Derby
http://db.apache.org/derby/
10.3.1.4
Apache
Is it "Pure Java"
Required Java
Version(s)
Number of
Releases
Backwards
compatibility
Industry support
Yes
1.4.2
Enterprise
Production
examples
Standards
http://wiki.apache.org/dbderby/UsesOfDerby
Version of
Standard
Significant amount of ANSI:1999 and
ANSI:2003 mandatory features are
supported http://wiki.apache.org/dbderby/SQLvsDerbyFeatures
Good
Community
Support
Availability of
build scripts
Dependencies
Eclipse plug-in
available
Documentation
Books available
Ease of
installation
5 official releases in the 10.x series
Good
Development supported by Sun, IBM, and
Apache OSS group
ANSI SQL, DRDA protocol for drivers
Yes
MySQL
http://www.mysql.com/
5
GPL with FLOSS exception
allowing use with Apache
licensed products
No
n/a
5
Some backwards compatibility
issues
While OSS, the MySQL core
is owned and primarily
maintained by MySQL AB
Many large sites such as
http://www.digg.com/ and
http://slashdot.org/
ANSI SQL mode can be
enabled, disabled by default
Level of ANSI support
depends on which engine is
used
Excellent
Yes
Bundled with Java 6
Yes (both generic DB plugins as well as
derby specific)
Good
Yes (mostly covering using Derby with
other products and servers)
Easy (unzip)
Yes (generic DB plugins)
Good
Yes, many
Easy
In addition to our own evaluation, an excellent comparison of open source databases is available
at:
http://www.encorewiki.org/display/encore/Open+Source+Databases+Comparison
Technical Architecture Phase 1 deliverables
3/7/2016
37
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
15.3 Appendix C Servlet engines
Performance results are based on 10,000 requests against servlet containers running on a dual
processor Xeon 2.8 GHz with 2gb of memory. Client was a 2.16 GHz Core Duo with 2gb of
memory, connected via 100mbps Ethernet. The Apache benchmark tool (“ab”) was used to
perform the benchmark. Neither client processor nor network connection capacity were reached
during the tests, while server processor load was near capacity. Results are in transactions per
second, rounded down to the nearest whole number. Higher numbers represent better
performance.
Benchmark scripts are available at:
https://test.kuali.org/confluence/download/attachments/58456/ServletContainerBenchmark.zip
15.4 Servlet Engines Performance
Resource Type
Client
Threads
Tomcat
Jetty
Glassfish
File
File
File
1
10
50
1029
5339
6439
639
569
2654
783
2495
2820
File
100
6142
2784
2805
File
200
5988
2394
2810
Servlet
Servlet
Servlet
Servlet
Servlet
JSP
JSP
1
10
50
100
200
1
10
1102
5211
6978
6925
6944
957
4526
43
513
2796
2906
2796
44
464
804
2783
2871
2938
2418
662
1987
JSP
50
4393
2329
1967
JSP
100
4595
2491
1727
JSP
200
4670
2394
2097
Technical Architecture Phase 1 deliverables
3/7/2016
38
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
15.5 Product Data Matrix
Tomcat
http://tomcat.apache.org
6
Apache
Yes
J2SE 5
Glassfish
https://glassfish.dev.java.net/
2
CDDL and GPL
Yes
J2SE 5
Number of Releases
4 major release(6.X, 5.5.X,
4.1.x, 3.3.x)
4 major release
Backwards
compatibility
Each version is for different
version of JSP and Servlet,
the configuration path has
some changes as well.
JSP, Servlet
for different version of standard
Very good
Yes
Good
servlet 2.5, JSP 2.1
Not as active as Tomcat
Yes
Yes
https://glassfishplugins.dev.
java.net/
High
Yes
http://eclipse-plugins.2y.net/
eclipse/plugin_details.jsp?id=312
High
Fair
Yes
Moderately complicated
(installer must be run, accounts
set up, etc.)
less than 1 minute
Good
Covered in some books
Easy (unzip and run)
Product site
Product Version
License
Is it "Pure Java"
Required Java
Version(s)
Standards
Version of Standard
Community Support
Availability of build
scripts
Eclipse plug-in
available
Eclipse plug-in
maturity/quality
Documentation
Books available
Ease of installation
High
Startup time
around 2 seconds
Good
Yes
Easy (unzip and run)
Technical Architecture Phase 1 deliverables
3/7/2016
JSP, Servlet, JAXB, J2EE
related
Jetty
http://www.mortbay.org/
6.1
Apache
Yes
Java 1.4, 1.5
(http://docs.codehaus.org/ display/
JETTY/Downloading+and+Installing)
11
(http://docs.codehaus.org/display/JETTY
/Downloading+and+Installing)
For different servlet and JSP version
JSP, Servlet
39
less than 2 seconds
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
16 Appendix D XML binding framework
16.1 XML Binding Performance
As the following performance metrics show, Sun’s JAXB reference implementation performs
well in comparison to the other options. This, in addition to its status as a JSR standard, leads
us to opt for JAXB.
Shorter times indicate better performance.
PC used for this benchmark: Microsoft Windows XP Professional Version 2002 Service Pack 2,
Intel Core 2 CPU, 6420 @ 2.13 GHz, 2 G memory, java version "1.6.0_02".
Benchmark scripts are available at:
https://test.kuali.org/confluence/pages/viewpageattachments.action?pageId=58474
Marshall and
Unmarshall
Simple Binding
1,000,000 loops
Marshall and
Unmarshall
Data Structure
1,000,000 loops
Sun’s JAXB reference
implementation
5 Minutes 22 seconds
5 Minutes 38 Seconds
Technical Architecture Phase 1 deliverables
JiBX
6 minutes
1 seconds
7 minutes
27
seconds
3/7/2016
XML
Beans
6 minutes
36 seconds
7 Minutes
15 seconds
Castor
8 Minutes 58 seconds
9 Minutes 4 second
40
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
16.2 Product Data Matrix
Product site
Product Version
License
Is it "Pure Java"
Required Java
Version(s)
Number of Releases
Backwards
compatibility
Number of
developers
Enterprise
Production
examples
Standards
Version of Standard
Community Support
Availability of build
scripts
Dependencies
Sun’s JAXB reference
implementation
https://jaxb.dev.java.net/
2.1.5
CDDL
Yes
1.3 or better, included in
1.6
Good (The current code
base supports JAXB 1.0,
2.0, and 2.1 but the project
will track future versions of
the JAXB specifications.)
Unknown (Sun
supported)
JiBX
Castor
XMLBeans
http://jibx.sourceforge.net/
1.1.5
BSD
Yes
1.3 or better
http://www.castor.org/
1.1.2.1
Apache
Yes
http://xmlbeans.apache.org
2.3.0
Apache
Yes
1.4 or better
4
Good
4
Has been broken in
recent releases
1
4
http://jibx.sourceforge.net/
sponsors.html
Apache Cocoon
Defined as JSR, JAXB
specification
JSR 222
n/a
supports XML
schema, but uses
Castor specific
mapping file
Active
Yes
Active
Yes
Active
Yes
Active
Yes
No
BCEL.jar, stax-api.jar,
wstx-asl.jar, xmlpull.jar,
xpp3.jar
common-log.jar,
xerces-J_1.4.0.jar
xmlpublic.jar, resolver.jar,
jsr173_1.0_api.jar
Technical Architecture Phase 1 deliverables
3/7/2016
13
41
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Eclipse plug-in
available
Eclipse plug-in
maturity/quality
Documentation
Books available
Ease of installation
Is the binding a
standard, or vendor
specific
Data type binding
support
Supports user
defined types
Quality of the stub
Supported by web
service engines
Generates Java
object model from
XML Schema
Generates clean
Java code
Requires bytecode
modification
Generated Java
objects are easy to
manage
Overall ease of use
JAXB
Yes, multiple. (Example:
https://jaxb-workshop.
dev.java.net/plugins/eclip
se/xjc-plugin.html)
Mature, good.
Castor
Yes, but only certified
to work with Eclipse
3.1.x
XMLBeans
Under development
N/A
Mature
Alpha
Good
Covered in Java/XML
books
Easy. If using JDK6, it is
bundled in.
JSR standard
Good
No
Good
Covered in Java/XML
books
Easy
Good
Covered in Java/XML
books
Vendor specific
Vendor specific, but
using XML schema
W3C standard
Full W3C XML Schema
support
Yes
Java types
Java types
XML schema type
Yes
Yes
Yes
High (Marked with
annotation)
JAS-WS
No stub generated, uses
byte code manipulation
Axis2, XFire
High
Low
Yes
No
Yes
Yes
Yes
n/a (no code generated)
Yes
No
No
Yes
No
No
Yes
N/A (no code generated)
Yes
Easy
Easy
Easy
Somewhat (the generated
source files are stored in a
jar file)
Easy
Technical Architecture Phase 1 deliverables
3/7/2016
JiBX
No
Easy
Axis2
42
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
17 Appendix E Web service engines
17.1 Engine Performance
These benchmarks represent different usages of CXF and Metro with Tomcat and the ServiceMix bus. Apache Axis2 benchmarks
are published in the wiki, but are excluded due to lack of JAX-WS support as previously mentioned.
Performance results are based on 10,000 requests against servlet containers running on a dual processor Xeon 2.8ghz with 2gb of
memory. Benchmark was performed using Apache JMeter.
.
Tomcat/CXF
ServiceMix>Tomcat/CXF
Synapse>Tomcat/CXF
OpenESB>Tomcat/CXF
Tomcat/KSB
ServiceMix>Smix/CXF
Tomcat/Metro
Tomcat/CXF>Tomcat/CXF
2ms av.
( 237/ sec)
1ms av.
(333/ sec)
1ms av.
( 335 / sec )
1ms av.
( 338 / sec )
40ms av.
(24/sec)
41ms av.
( 23 / sec )
41ms av.
( 23 / sec )
41ms av
. ( 23 / sec )
4ms av.
( 158 / sec )
4ms av.
( 174 / sec )
4ms av.
( 166 / sec )
12ms av.
( 71 / sec )
3ms av.
( 188 / sec )
2ms av.
( 238 / sec )
2ms av.
( 240 / sec )
2ms av.
( 239 / sec )
4ms av.
(152/ sec)
3ms av.
(199/ sec)
4ms av.
(188/ sec)
11ms av.
(75/ sec)
3ms av.
( 170 / sec)
20ms av.
( 47 / sec)
20ms av.
( 47 / sec)
20ms av.
( 46 / sec)
3ms av.
(202/ sec)
1ms av.
(321/ sec)
1ms av.
(327/ sec)
1ms av.
(333/ sec)
3ms av.
( 178 / sec )
2ms av.
( 253 / sec )
2ms av.
( 251 / sec )
2ms av.
( 257 / sec )
4ms av.
( 511 / sec )
3ms av.
( 535 / sec )
3ms av.
( 540 / sec )
3ms av.
( 538 / sec )
38ms av.
( 212 / sec )
37ms av.
( 222 / sec )
38ms av.
( 219 / sec )
42ms av.
( 205 / sec )
14ms av.
( 207 / sec )
13ms av.
( 127 / sec )
14ms av.
( 194 / sec )
54ms av.
( 109 / sec )
12ms av.
( 399 / sec )
12ms av.
( 409 / sec )
15ms av.
( 372 / sec )
12ms av.
( 410 / sec )
11ms av.
(357/ sec)
12ms av.
(350/ sec)
14ms av.
(327/ sec)
60ms av.
(139/ sec)
20ms av.
(373 /sec)
17ms av.
(407/ sec)
18ms av.
(404/ sec)
18ms av.
(398/ sec)
5ms av.
(475/ sec)
4ms av.
(522/ sec)
4ms av.
(522/ sec)
4ms av.
(524/ sec)
8ms av.
( 397 / sec )
8ms av.
( 422 / sec )
8ms av.
( 422 / sec )
8ms av.
( 421 / sec )
6ms av.
( 514 / sec )
3ms av.
( 521 / sec )
3ms av.
( 522 / sec )
48ms av.
( 316 / sec )
46ms av.
( 319 / sec )
48ms av.
( 313 / sec )
25ms av.
( 222 / sec )
32ms av.
( 179/ sec )
43ms av.
( 171 / sec )
13ms av.
( 410 / sec )
16ms av.
( 405 / sec )
17ms av.
( 406 / sec )
10ms av.
(375/ sec)
16ms av.
(339 /sec)
15ms av.
(324/ sec)
28ms av.
(419/ sec)
25ms av.
(426/ sec)
28ms av.
(421/ sec)
4ms av.
(511/ sec)
4ms av.
(508/ sec)
4ms av.
(510/ sec)
3ms av.
( 520 / sec )
82ms av.
( 222 / sec )
294ms av.
( 104 / sec )
16ms av.
( 406 / sec )
298ms av.
(125/ sec)
25ms av.
(414/ sec)
4ms av.
(510/ sec)
10ms av.
( 413 / sec )
8ms av.
( 418 / sec )
9ms av.
( 417 / sec )
8ms av.
( 418 / sec )
1 Thread
getCount
getPerson
getPeople 10
getPeople 100
10 Threads
getCount
getPerson
getPeople 10
getPeople 100
50 Threads
getCount
getPerson
getPeople 10
getPeople 100
Technical Architecture Phase 1 deliverables
3/7/2016
43
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Tomcat/CXF
ServiceMix>Tomcat/CXF
Synapse>Tomcat/CXF
OpenESB>Tomcat/CXF
Tomcat/KSB
ServiceMix>Smix/CXF
Tomcat/Metro
Tomcat/CXF>Tomcat/CXF
4ms av.
( 506 / sec )
4ms av.
( 507 / sec )
4ms av.
( 503 / sec )
5ms av.
( 505 / sec )
45ms av.
( 324 / sec )
47ms av.
( 317 / sec )
57ms av.
( 304 / sec )
84ms av.
( 216 / sec )
39ms av.
( 168 / sec )
48ms av.
( 176 / sec )
47ms av.
( 172 / sec )
536ms av.
( 99 / sec )
15ms av.
( 403 / sec )
15ms av.
( 400 / sec )
16ms av.
( 399 / sec )
16ms av.
( 398 / sec )
10ms av.
(373/ sec)
13ms av.
(341/ sec)
15ms av.
(320/ sec)
600ms av.
(120/ sec)
28ms av.
(425/ sec)
40ms av.
(411/ sec)
25ms av.
(424/ sec)
25ms av.
(412/ sec)
7ms av.
(500/ sec)
4ms av.
(502/ sec)
4ms av.
(501/ sec)
4ms av.
(494/ sec)
19ms av.
( 402 / sec )
13ms av.
( 407 / sec )
11ms av.
( 413 / sec )
10ms av.
( 412 / sec )
4ms av.
( 475 / sec )
24ms av.
( 466 / sec )
7ms av.
( 470 / sec )
8ms av.
( 474 / sec )
46ms av.
( 318 / sec )
48ms av.
( 302 / sec )
50ms av.
( 297 / sec )
85ms av.
( 214 / sec )
58ms av.
( 188 / sec )
73ms av.
( 156 / sec )
91ms av.
( 158 / sec )
(incomplete)
66ms av.
( 378 / sec )
15ms av.
( 387 / sec )
16ms av.
( 381 / sec )
15ms av.
( 378 / sec )
10ms av.
(362/ sec)
13ms av.
(331/ sec)
15ms av.
(311/ sec)
728ms av.
(125/ sec)
25ms av.
(411/ sec)
27ms av.
(401/ sec)
58ms av.
(398/ sec)
25ms av.
(405/ sec)
4ms av.
(227/ sec)
4ms av.
(485/ sec)
4ms av.
(475/ sec)
23ms av.
(471/sec)
30ms av.
( 397 / sec )
11ms av.
( 403 / sec )
11ms av.
( 392 / sec )
10ms av.
( 398 / sec )
100 Threads
getCount
getPerson
getPeople 10
getPeople 100
200 Threads
getCount
getPerson
getPeople 10
getPeople 100
Technical Architecture Phase 1 deliverables
3/7/2016
44
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
17.2 Product comparison matrix
Axis 2
CXF
Product site
Product Version
License
http://ws.apache.org/axis2/
1.3
Apache License, Version 2.0
http://incubator.apache.org/cxf/
2.0.3
Apache License
Is it "Pure Java"
Required Java Version(s)
Yes
1.4 or later
Yes
1.5 or later
Number of Releases
8 (Version
1.3/1.2/1.1.1/1.1/1.0/0.95/0.94/0.93
)
Not compatible with Axis 1.x
3 releases in the 2.0.x series
Backwards compatibility
Enterprise Production
examples
Community Support
Availability of build scripts
Eclipse plug-in available
Eclipse plug-in
maturity/quality
Documentation
Books available
Ease of installation
Standards
Data Bindings
Metro
https://metro.dev.java.net/
1.0
Dual license of CDDL and GPLv2
with classpath exception.
Yes
1.5 or later
2 releases in the 1.x series, 2
upcoming releases
Not compatible with XFire
Active
Yes
Active
Yes
GlassFish V2 and Sun Java
System Application Server 9.1
Active
Yes
Yes
(http://ws.apache.org/axis2/tools/in
dex.html), also Eclipse WST
support
Good
Eclipse WST support
Eclipse WST support
Fair
Fair
Inadequate
No
Easy
JSR 181, SOAP 1.1, 1.2, WSDL
1.1, 2.0
ADB, XMLBeans, Jibx, JAXB 1.0
Inadequate
No
Easy
JAX-WS, JSR-181, SOAP 1.2,
WSDL 2.0
JAXB currently, version 2.1 will
support XMLBeans, Castor, and
JiBX as well
Inadequate
No
Easy
JAX-WS 2.0, 2.1RI, JSR 181,
SOAP 1.1, 1.2, WSDL 1.1
JAXB
Technical Architecture Phase 1 deliverables
3/7/2016
45
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Axis 2
CXF
Spring Support
WS-Addressing
Yes
Yes
Yes
Yes
WS-Atomic Transaction
No (The Kandula 2 project which is
meant to support WS-Transaction
on Axis2 has stalled)
No
No
No
No
WS-Business Activity
WS-Coordination
WS-Eventing
WS-Metadata Exchange
WS-Notification
WS-ReliableMessaging
No
Yes
Yes
Yes, seen in SOAP message,
routing not tested
Yes
No
No
No
No
Yes (via ServiceMix)
Yes
WS-Policy
WS-Secure Conversation
WS-Security Policy
WS-Security
Yes
Yes
Yes
Yes
Yes
To be released in 2.1
WS-Trust
Overall ease of use
Yes
Easy
To be released in 2.1
Easy
Technical Architecture Phase 1 deliverables
Partial, based on WSS4J
3/7/2016
Metro
46
No
Yes
No
Yes, Not tested
No
Yes, Partially - killing TCP
connection does not deliver
message
Yes, seen in WSDL
Yes, Not tested
Yes, seen in WSDL and tested
Yes, Tested Encryption and
Signature, not Security Tokens
Yes, Not tested
Easy
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18 Appendix F Rules engines
18.1 Product comparison matrix
Product
Drools 4.0 (JBoss Rules)
SweetRules 2.1
OpenRules 3.0
Rule Engine
JBoss
4
30-Aug-07
Rule Engine
Rule Engine
OpenRules, Inc.
3
September 18,2006
Product Space
Company
Product Version:
Release Date
URL
http://labs.jboss.com/drools/ License
Apache License, Version 2.0
Supported JVM
Number of Release:
Backwards compatibility:
Number of developers:
Number of Downloads:
2.1 Alpha release
25-Apr-05
http://sweetrules.projects.semwebc
entral.org SweetRules=LGPL, IBM
CommonRules has it's own license
which does not allow it in production
systems
JDK 1.4 and up
4
No
13
13,000 downloads for the month of
August, 2007
2
Product
JSR-94
Strong community support via IRC
or mailing lists
No
Yes
drools-core.jar, drools-compiler.jar,
drools-jsr94.jar, droolsdecisiontables.jar
Drools 4.0 (JBoss Rules)
Eclipse plug-in available:
Technical Architecture Phase 1 deliverables
JDK 1.4 and up
4
Yes
Big Faceless Organizations (BFO)
Availability of build scripts:
Dependencies:
GPL
5
Hundreds of downloads in total
Enterprise Production
examples:
Standards:
Version of Standard:
Community Support:
http://openrules.com IBM CommonRules 3.3, JWSDP
1.5, DOM4J 1.5, Log4j 1.2.8, Xalan
2.6.0, Junit 3.8.1
SweetRules 2.1
Yes
3/7/2016
Yes
OpenRules 3.0
Yes
47
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Documentation:
Books available:
Ease of installation:
Tomcat 6/Axis2 1.3 Integration
Pretty good documentation of all
features
Easy (configuration of a production
system is more involved)
Available, but very minimal
Difficult - Must download and install
third party software during the
installation
Difficult - Drools doesn't work with
Tomcat/Axis2 due to class loader
issues. Can somehow be fixed by
creating a new class loader for the
Drools compiler.
No
Very Easy
Tomcat 5.5/Axis2 (should work for
Tomcat 6)
Jetty/Axis2 1.3 Integration
Can be configured for Axis2
Supports linear rule
stereotype?
Yes
Yes, have to write Java functions
in Excel for this
Supports decision table rule
stereotype?
Yes
Yes
Yes, through its rule flow
Yes, but no editor of any kind and
is tricky
Supports flowchart stereotype
(optional)?
Procedural or Rete? If Rete,
does the product support
backward as well as forward
chaining?
Support for natural language
rule composition?
Ability to translate rules into
natural language?
Rete - Forward Chaining only
(backward chaining expected in the
next release)
Supports backward and forward
chaining
Yes
Limited and only in version 4.0
No
No
Yes
Yes
Rules repository
(file/database)?
File system and database (through
JDBC)
Excel files (in 4.0 they can be
stored as clob in DB)
User interface for rule
definition
Eclipse 3.2 - JBoss Rules
Workbench and rules management
(BRMS) web application
Excel files
Supports JSR-94
Product
Technical Architecture Phase 1 deliverables
Drools 4.0 (JBoss Rules)
3/7/2016
SweetRules 2.1
48
OpenRules 3.0
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
IDE support for technical staff
Eclipse 3.2 - JBoss Rules
Workbench, WYSIWYG support for
rules, rule-flows and debugging
Yes, powerful IDE debugger
Rule Debugger
Rule Management System
No. Has a rule tester that non
techies can also use
Yes, web based rule management
(BRMS)
Are rules compiled or
interpreted?
RuleML support
(conversion/translation)
Eclipse plugin but rules are edited
using Excel
Rules are compiled into Java
classes
Interpreted
No but there is a JBoss project in
the works to import/export to ruleML
Yes
No - Maybe in a future release
Rules can directly trigger WSDL
Web Services as actions.
External dependencies?
Web Service Support?
Multi threaded rule execution?
No
None
Yes
Thread safe
No
Demos
http://labs.jboss.com/drools/livetrails
/index.html Open Rules 3.0 HOWTO Setup Other
Notes
Hibernate integration
Business Rules Management
System (BRMS) uses Apache
Jackrabbit which supports JSR-170
Content Repository API
Technical Architecture Phase 1 deliverables
3/7/2016
SweetRules is a pluggable set of
rules tools for RuleML and SWRL
featuring: interoperability between
Prolog, production rules, OWL,
CommonRules, Jena-2, and several
other languages; and inferencing
with negation, priorities, and
procedural attachments.
49
Pros and Cons Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2 Rules Engine Performance
18.2.1 Setup
All performance tests below use the following unless otherwise specified:
1) Java 1.6.0_02
2) JVM Arguments: -Xmx1024m -Xms1024m -XX:PermSize=64m XX:MaxPermSize=256m (Haven't tried -XX:+UseParallelGC or any other optimizations)
3) Hardware: P4 3.0GHz - 2GB RAM
4) Microsoft Windows XP Professional, Version 2002, Service Pack 2
5) Drools 4.0.1
6) Eclipse 3.2
All unit tests use a simple Address object as fact.
All rules are of the form:
Address Rule
package org.kuali.student.address
import java.util.List;
import org.kuali.student.address.schema.address.Address;
rule "AddressToCheck"
salience 50
no-loop true
when
address : Address()
eval( address.getAddressTo() == null ||
address.getAddressTo().trim().length() == 0 )
then
address.addError( "AddressTo is empty" );
end
18.2.2 Test Searching Through an ArrayList
This test searches through an ArrayList of Address Objects and records the time.
JVM Settings: -Xmx1256m -Xms1256m -XX:PermSize=64m -XX:MaxPermSize=256m
Rules:
1.
2.
3.
4.
5.
Get all Address objects where city = 'Seattle' and set region to 'USA West'
Get an ArrayList of Address objects where Address object's city = 'Seattle'
Find maximum id in the collection of Address objects where city = 'Seattle'
Calculate hash code of all Address objects in the collection
Function to calculate hash code
Technical Architecture Phase 1 deliverables
3/7/2016
50
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.3 Stateless vs. Stateful Session
Objects
10
100
1000
5000
10000
50000
100000
200000
300000
400000
500000
1000000
Objects
10
100
1000
10000
50000
100000
200000
300000
400000
500000
1000000
Stateless
Time
0.070 sec
0.020 sec
0.080 sec
0.150 sec
0.221 sec
1.192 sec
2.434 sec
5.179 sec
8.355 sec
10.93 sec
13.836 sec
28.963 sec
Stateful
Time
0.010 sec
0.010 sec
0.050 sec
0.942 sec
28.635 sec
2 min 39 sec
9 min 12 sec
18 min 44 sec
32 min 43 sec
51 min 33 sec
Incomplete
Errors
Errors
Out of
memory
Technical Architecture Phase 1 deliverables
3/7/2016
51
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.4 Test Number of Session Invocations
New Stateless Session per Iteration: This load test creates a new stateless session for each
iteration. No threads are involved here.
New Stateful Session per Iteration: This load test creates a new stateful session for each
iteration. No threads are involved here.
New Stateless Session per Iteration
Sessions
Execution
Invoked
Time
10
0.111 sec
100
0.901 sec
1000
8.8 sec
2500
23.2 sec
5000
49.1 sec
7500
1 min 10 sec
10000
1 min 37 sec
Stateful vs. Stateless Session per Iteration
New Stateful Session per Iteration
Sessions
Execution Time
Invoked
10
0.231 sec
100
0.100 sec
1000
801 sec
2500
2.1 sec
5000
10.6 sec
7500
33.3 sec
10000
1 min 13 sec
Technical Architecture Phase 1 deliverables
3/7/2016
52
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.5 Test Number of Rule Package Invocations for One Session
One Stateless Session for All Iterations: This test creates one stateless session and
executes up to 10000 rules sequentially on the session.
Rule Packages Invoked
10
100
1000
2500
5000
7500
10000
Execution Time
0.100 sec
0.881 sec
8.8 sec
23.6 sec
49.5 sec
1 min 13 sec
1 min 36 sec
One Stateful Session for All Iterations: This test creates one stateful session and executes
up to 100000 rules sequentially on the session.
Rule Packages Invoked
10
100
1000
5000
10000
20000
30000
40000
50000
60000
70000
80000
90000
100000
Execution Time
0.020 sec
0.010 sec
0.110 sec
0.341 sec
0.761 sec
1.2 sec
1.7 sec
2.3 sec
2.8 sec
3.4 sec
4.0 sec
4.5 sec
5.0 sec
5.7 sec
Technical Architecture Phase 1 deliverables
3/7/2016
53
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Stateful vs. Stateless Session for All Iterations
Technical Architecture Phase 1 deliverables
3/7/2016
54
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.6 Test Stateful Sessions in Parallel Threads
One Stateful Session per Thread: This test creates one stateful session for each thread to
execute rules on.
Threads
10
100
1000
5000
10000
50000
Execution Time
0.110 sec
0.200 sec
1 sec
8 sec
42 sec
11 min 51 sec
One Stateful Session for all Threads: This test creates one stateful session for all threads to
use and each thread then executes rules on that session. This test also checks concurrency
and that stateful sessions are thread-safe.
Threads
10
100
1000
5000
10000
50000
100000
200000
300000
400000
500000
Execution Time
0.060 sec
0.060 sec
0.281 sec
1 sec
2 sec
13 sec
28 sec
56 sec
1 min 35 sec
2 min 8 sec
2 min 52 sec
Technical Architecture Phase 1 deliverables
3/7/2016
55
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.7 Test Stateless Session in Parallel Threads
One Stateless Session per Thread: This test creates one stateless session for each thread to
execute rules on.
Threads
10
100
1000
5000
10000
50000
100000
Execution Time
0.120 sec
0.140 sec
1 sec
6 sec
21 sec
4 min 14 sec
9 min 41 sec
One Stateless Session for All Thread: This test creates one stateless session for all threads
to use and each thread then executes rules on that session. This test also checks concurrency
and that Stateless sessions are thread-safe.
Threads
10
100
1000
5000
10000
50000
100000
Execution Time
0.130 sec
0.180 sec
1 sec
6 sec
23 sec
4 min 23 sec
9 min 50 sec
Technical Architecture Phase 1 deliverables
3/7/2016
56
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.8 Test Rule Package Execution Time
Test the time it takes to execute 10, 100, 1000, etc. number of rules in a package.
Stateless Session
Rules
10
100
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
15000
20000
30000
40000
50000
Execution Time
0.10 sec
0.20 sec
0.141 sec
0.261 sec
0.401 sec
0.542 sec
0.692 sec
0.864 sec
1.1 sec
1.2 sec
1.6 sec
1.5 sec
2.6 sec
3.4 sec
5.6 sec
10.1 sec
13.3 sec
Errors
Stateful Session
Rules
10
100
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
15000
20000
30000
40000
50000
Execution Time
0.091 sec
0.0030 sec
0.201 sec
0.341 sec
0.431 sec
0.532 sec
0.683 sec
0.823 sec
1.0 sec
1.2 sec
1.6 sec
1.5 sec
2.3 sec
3.2 sec
6.9 sec
10.1 sec
13.9 sec
Technical Architecture Phase 1 deliverables
Errors
3/7/2016
57
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.9 Test Rule Package Compilation Time
Test how long it takes to compile 10, 100, 1000... number of rules.
Rules
10
100
500
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
15000
20000
30000
40000
50000
Time
0.321 sec
1 sec
3 sec
7 sec
11 sec
17 sec
24 sec
32 sec
47 sec
58 sec
1 min 15 sec
1 min 36 sec
1 min 54 sec
2 min 36 sec
3 min 48 sec
7 min 3 sec
12 min 33 sec
17 min 30 sec
Errors
18.2.10
Test Rule Package Memory Usage
Test approximately how much memory a org.drools.RuleBase uses for 10, 100, 1000...
number of rules.
Rules
Memory
Errors
10
91 KB
100
573 KB
1000
8.8 MB
2000
16.6 MB
3000
22.0 MB
4000
20.2 MB
5000
27.3 MB
6000
37.7 MB
7000
43.0 MB
8000
38.9 MB
9000
47.3 MB
10000
52.5 MB
15000
84.9 MB
20000
107.4 MB
30000
154.2 MB
40000
204.4 MB
50000
268.6 MB
Note: Total memory on Windows for the Javaw.exe process compiling 50000 rules was about
1.2 GB.
Technical Architecture Phase 1 deliverables
3/7/2016
58
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
18.2.11
Test Rule Package Serialization and Deserialization
Java Arguments: -Xmx1024m-Xms1024m-Xss2048k-XX:PermSize=64m-XX:MaxPermSize=256m
Note: Must set the JVM arguments -Xss2048k to avoid java.lang.StackOverflowError errors early on.
Apparently, on Linux you don't get java.lang.StackOverflowError errors or you may get them very late in
the test (over 10000 or 20000 rules).
Serializing Rules (Java Serialization): Test serialization of a org.drools.RuleBase
Rules
Time
Errors
10
0.131 sec
100
0.150 sec
1000
0.993 sec
2000
2.6 sec
3000
5.7 sec
4000
14.0 sec
5000
25.9 sec
6000
StackOverflowError
Deserializing Rule (Java Deserialization); Test deserialization of a org.drools.RuleBase
Rules
10
100
1000
2000
3000
4000
5000
Time
0.161 sec
0.853 sec
9.2 sec
19.3 sec
30.5 sec
48.4 sec
Errors
StackOverflowError
Technical Architecture Phase 1 deliverables
3/7/2016
59
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
19 Appendix G BPEL engines
19.1 BPEL Tests
Tags Tested
Service
EchoService2
CallEchoService2
CorrelationService2
Polymorph
ArrayBPEL
<receive>
<assign>
<reply>
<invoke>
<correlationSets>
<correlationSet>
<correlations>
<correlation>
<if>
<else>
<condition>
<forEach>
<startCounterValue>
<finalCounterValue>
<scope>
<copy>
Technical Architecture Phase 1 deliverables
3/7/2016
Description
Compatibility Issues
Simple BPEL that accepts a message
containing a string and returns a
message containing the input string
prefixed with the BPEL engine name.
ODE does not initialize the XML
skeleton of messages or variables.
This appears to not follow the BPEL
spec.
This BPEL demonstrates invoking
another service (the EchoService2
example).
There were no issues with regards to
invoking other services.
This tests creating and rejoining a
"long running" process. RPC/Lit that
accepts message with first name, uses There were no issues with regards to
a message part to correlate second
correlation.
message with last name and returns
first + last name from second call.
This tests schema with types that
inherit from a base type. Takes a
contact type, casts it to an email,
checks to see if it really is an email (by
testing for the email element), then
assigns the type element to "email" if
it's email, or "other" if not.
This did not work for either engine
when using <extension base="">.
The engines did not correctly
interpret the xsi:type="email" in the
xml messages.
This tests creating a message
containing a node list with a variable
number of elements. Takes a count n
and an email and returns a list of n
emails with unique ids.
ODE can not append nodes in a
standard way. forEach does not
work in ODE. Sun worked by using
the element[$n] xpath notation.
60
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Tags Tested
Service (Con’t)
ConcurrentActivity
AsynchronousExample
fault1
<forEach parallel="yes">
Compatibility Issues
This tests parallel processing using a
dynamic number of threads (this also
provides method-like functionality in
BPEL, without it the number of threads
will have to be hard coded and the
steps in each parallel activity must be
copy and pasted). Takes a list of
addresses and inserts them in 'parallel'
sequence into database.
NetBeans does not support 'parallel'
attribute set to 'yes'. ODE
documentation claims support for the
attribute but a bug prevents
<forEach> loop from running thus
preventing a test of the 'parallel'
attribute.
This tests asynchronous message
exchange patterns. Makes an
asynchronous call to a timed echo
Working in Sun and ODE. In ODE,
service. Pass in an ID for correlation
passing in 0 seconds to wait causes
and the number of seconds to wait
an exception.
before the echo service does a callback
to the main BPEL.
<wait>
<for>
<correlation*>
<invoke>
<receive>
<faultHandlers>
<catch>
<throw>
Technical Architecture Phase 1 deliverables
Description
3/7/2016
This example tests and demonstrates
the error handling features of BPEL. It
test the "throw" operation and Catch
Exception Block.
It is very similar to the echo example.
It takes a string as input. If the string
is less than 10 char long it behaves
like success and returns the length of
ODE needs the Fault variable to be
the string. If String is more than 10
an "element" and not a simple type
char long it behaves like failure.
and wants it initialized first.
Throws an Exception. Exception
Handlers catches the exception and
sets an error message and an error
code(length of string) and returns a
fault.
61
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Tags Tested
Service (Con’t)
SoapHeader
compens2
We found no tags to directly access
SOAP Headers, the WSDL must specify
that the input parameter will come in
the header. We did not test in ODE
because accessing headers not
specified in the operation input is what
we were after. BPEL that reads SOAP
Headers. It's not actually the BPEL so
much as the WSDL that defines them.
Please note: Testing the
SoapHeaderIn operation in NetBean's
internal tester generates a bad stub
with the header element both in the
header and in the body. soapUI
doesn't do this.
<pick>
<onmessage>
<faultHandlers>
<catchAll>
<compensate>
<compensationHandler>
Technical Architecture Phase 1 deliverables
Description
3/7/2016
A simple example to test
"compensation" and registering
compensation handlers. An out scope
"scope1" contains two inter scopes
(scope2 and scope3). In Scope2 we
assign the litteral "Status: Done!" to a
global variable. Scope2 has a
compensation handler that assigns the
string "Status: Undone!" to the same
variable. In scope3 which gets
executed after scope2 we might throw
an exception if the length of the
request is greater than 10. Scope1 has
a fault handler that would catch the
exception and runs a "compensate" on
scope2. then replys with the global
variable.
Compatibility Issues
Not tested in ODE. Sun seems to
require "Document Literal" SOAP
binding to work, not sure if that's
according to spec.
This example does not work in Sun
at all since compensation is not
supported yet. In ODE we can deploy
it but the "compensate" action does
not seem to do anything!!
62
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
Tags Tested
Service (Con’t)
DynamicPartnerlink
<to partnerlink="">
Allows dynamically assigned
partnerlink parameters within BPEL
process (override url parameters for
invoked services. For example: the
ReplyTo in a WS-Addressing header).
Compatibility Issues
Dynamic partnerlink is not yet
implemented in Sun. ODE has
implementation but since they do not
support WS-Addressing we cannot
easily test that. One would have to
create a web service that returns
partnerlink parameters to be
assigned dynamically within BPEL
process.
Receives an email address, sends a
Works in Sun but not ODE since it
verification request to that address and
needs SMTP binding components.
waits for a response. When a response
arrives, writes the message into a file.
SMTPVerifyEMail
Technical Architecture Phase 1 deliverables
Description
3/7/2016
63
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
19.2 Apache ODE Initialization Problem
In ODE you must first initialize a message/variable with <literal> xml skeleton. This must be written by
hand.
<assign name="InitUpdateEmailIn1">
<copy>
<from>
<literal>
<ns3:UpdateEmail>
<Email xmlns="">
<ns0:id>1</ns0:id>
<ns0:personID>1</ns0:personID>
<ns0:address>init_address</ns0:address>
<ns0:confirmed>false</ns0:confirmed>
<ns0:modDate>2007-12-20T12:00:00</ns0:modDate>
</Email>
</ns3:UpdateEmail>
</literal>
</from>
<to variable="UpdateEmailIn1" part="part1"></to>
</copy>
</assign>
After you have initialized the variable/message in ODE you can proceed to copy data into it. In Sun BPEL you
need only do this step.
<assign name="CopyEmailUnverified">
<copy>
<from>false()</from>
<to>$UpdateEmailIn1.part1/Email/ns0:confirmed</to>
</copy>
<copy>
<from>$OtherMessage.part1/Email/ns0:address</from>
<to>$UpdateEmailIn1.part1/Email/ns0:address</to>
</copy>
<copy>
<from>$OtherMessage.part1/Email/ns0:personID</from>
<to>$UpdateEmailIn1.part1/Email/ns0:personID</to>
</copy>
<copy>
<from>$OtherMessage.part1/Email/ns0:id</from>
<to>$UpdateEmailIn1.part1/Email/ns0:id</to>
</copy>
</assign>
The "variable initialization" in ODE contradicts our interpretation of the BPEL 2.0 specification (section 8.4,
http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html#_Toc164738498)
There were no similar "variable initializations" in the examples included in the specification (section 15,
http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html#_Toc164738537)
Technical Architecture Phase 1 deliverables
3/7/2016
64
Kuali Student Service System
Technical Architecture Phase 1 Recommendations
20 Appendix H ESB
See http://www.enterpriseintegrationpatterns.com/toc.html for routing pattern definitions.
Registry
Routing and
Transformation
Configuration
ServiceMix
OpenESB
Synapse
Runtime location
of services
Services are automatically
added to registry upon
deployment.
Services can be called by
service name, endpoint or
interface.
Services are automatically added to
registry upon deployment.
Registry is an xml file which must be
hand edited. Can map services
individually or use pattern matching.
human readable
directory
HTML page of WSDL links for
services exposed over http.
JMX access shows all
deployed endpoints, statistics
and provides startup/shutdown
capability.
JMX access shows all deployed
enpoints, statistics and provides
startup/shutdown capability.
HTML page showing services that are
individually mapped (can’t show
pattern matched services).
General
Deployment descriptor for a
service provides ability to
override services being
consumed (this occurs before
other bus routing).
Deployment descriptor for a service
provides ability to override services
being consumed (this occurs before
other bus routing).
Services are not deployed to Synapse.
Content Based
Available with EIP or
Camel Components.
No specific support, would have to use
a BPEL engine.
Wire-Tap
Available with EIP or
Camel Components.
No specific support, would have to use
a BPEL engine.
Content based routing can be
achieved by XPATH evaluation using
filter/switch mediators.
Messages can be sent to multiple
endpoints.
Routing Slip
Available with EIP or
Camel Components.
No specific support, would have to use
a BPEL engine.
Not Supported.
Transformation
Available with SAXON or
Camel Components.
An XSLT component is provided.
Messages can be transformed using
XSLT mediator.
Clustering and
Load Balancing
Supported. Services must be
manually deployed to each
clustered instance.
Supported through GlassFish
Application Server. Deployment of
service propagates to all machines in
cluster.
Not supported.
Federation
Supported. Registry
information is shared between
distinct instances.
Not Supported. Services must be
individually exposed to and consumed
by distinct instances.
Supported. Registry information is
merged from all instances.
Technical Architecture Phase 1 deliverables
3/7/2016
65
Download