JBoss Wise [1] is a library for simplifying webservices invocation and testing. It provides solutions for easy browsing of WSDL models, zero-code invocation of WS operations and for lowering the technical entry level to WS testing. The presentation will go through the recently added functionalities; the focus will then shift to WS testing, with a demo of the available GUI and an overview of the future enhancement efforts.
[1] http://www.jboss.org/wise
How to Troubleshoot Apps for the Modern Connected Worker
JBoss Wise: breaking barriers to WS testing
1. JBoss Wise: breaking barriers to WS testing
Alessio Soldano
alessio.soldano@jboss.com
Principal Software Eng.
JBoss - Red Hat
October 22nd, 2013
Milan JBoss User Group
2. Let's invoke a WS in Java...
●
You've been given a WSDL (reference)...
●
...so you start by generating the stubs (JAXWS tools)
3. Let's invoke a WS in Java...
●
Then you import the sources in your IDE...
●
... finally you code against them an invoke the endpoint
4. Perhaps you automate the process a bit...
●
Maven plugins for generating the stubs automatically
... but ...
5. Pros / Cons
●
Your code is actually bound to the generated classes
(client – server coupling)
●
Good solution for clients of stable endpoints
●
Not suitable to quick testing of multiple/different endpoints
6. JBoss Wise
●
Java library for easily invoking webservices
●
Built on top of JBossWS stack
●
Goals
‣Effective
‣Easy
client/server decoupling
browsing of WSDL models
‣(nearly)zero-code
‣Lowering
invocation of WS operations
the technical entry level to WS testing
8. Dynamic client API
●
or browse the model to choose the method to call
●
What about parameters?
‣
non-trivial endpoints get and return structured data...
‣
we need Object instances to put in the invocation
Map...
9. WebParameter inspection + reflection
●
Get Java type from WebParameter instances
●
Use reflection to build up the desired data
●
... working on classes generated on-the-fly by Wise ...
●
ugly, unpractical, etc.
10. Wise mappers
●
Allow users to invoke endpoints using their own model
●
Map user model to internally generated client classes
●
Any custom mapper can be implemented
●
... moving the problem to defining the proper vehicle and
transformation of user data into target endpoint
parameters
11. Smooks mapper
●
“Smooks is an extensible framework for building
applications for processing XML and non XML data (CSV,
Java, ...) using Java”
with proper Smooks mappers, Wise can invoke a WS
endpoint given any model (even in different formats) !
13. Tree model
So the request / response model is really the core
concept here... what about something very simple yet
generic, with String only values?
●
Tree-like view model
●
kind of a DOM tree built on the
valid WS req/res space
14. Tree model usage
●
Get tree view model and populate it...
●
Invoke the endpoint and convert the result in another tree...
15. Tree model advantages
●
Detyped model... but still compliant to the WSDL/schema
●
Simple and generic...
enough to build a GUI !
Demo Time :-)
16. Wise GUI
●
Web based
‣
‣
usable everywhere (even on mobile...)
‣
●
no need for Eclipse / IDE
deployed on JBoss (even on Openshift...)
Focus on the data, not on the technology
‣
No WS, XML or Java knowledge required
‣
Fast / agile WS testing
‣
Enable business acceptance tests from analysts
17. Wise Invokes Services Easily
●
Wise is built on top of a JavaEE certified stack (JBossWS)
... this ensures core correctness and interoperability.
●
You're consuming WS services (based on WSDL / XSD)
‣
you're granted compliance with the contract
‣
... but you don't get your hands dirty with SOAP ;-)
Is it really that complex and inconvenient to call one of
those dreaded WSDL based WS services? ;-)
18. Future features (maybe...)
●
GUI user management
●
Import / export GUI environment
●
Multiple authentication options
●
Explicit WS-Policy support
●
Smooks Eclipse plugin for Wise mappers generation?
●
...
... but we need help from YOU !