Download - JBoss Wise: breaking barriers to WS testing
JBoss Wise: breaking barriers to WS testingJBoss Wise: breaking barriers to WS testing
Alessio [email protected]
Principal Software Eng.JBoss - Red Hat
October 22nd, 2013Milan JBoss User Group
Let's invoke a WS in Java...● You've been given a WSDL (reference)...
● ...so you start by generating the stubs (JAXWS tools)
Let's invoke a WS in Java...● Then you import the sources in your IDE...
● ... finally you code against them an invoke the endpoint
Perhaps you automate the process a bit...● Maven plugins for generating the stubs automatically
... but ...
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
JBoss Wise● Java library for easily invoking webservices
● Built on top of JBossWS stack
● Goals
‣Effective client/server decoupling
‣Easy browsing of WSDL models
‣(nearly)zero-code invocation of WS operations
‣Lowering the technical entry level to WS testing
Dynamic client API● Get a dynamic client for a WSDL operation and invoke...
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...
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.
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
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) !
Smooks mapper● Define the request and response mappings..
● ... and invoke providing the user model
Tree modelSo 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
Tree model usage● Get tree view model and populate it...
● Invoke the endpoint and convert the result in another tree...
Tree model advantages● Detyped model... but stil l compliant to the WSDL/schema
● Simple and generic...
enough to build a GUI !
Demo Time :-)
Wise GUI● Web based
‣ no need for Eclipse / IDE
‣ usable everywhere (even on mobile...)
‣ 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
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? ;-)
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 !
Links● Project homepage: www.jboss.org/wise
● Blog: jbosswise.blogspot.com
● Code for this presentation: https://github.com/asoldano/demo
Write us! Contribution is more the welcome!