Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton.

Slides:



Advertisements
Similar presentations
1/7 ITApplications XML Module Session 8: Introduction to Programming with XML.
Advertisements

Raptor Technical Details. Outline Workshop structured by Raptor workflow – Raptor Event model. – ICA log file parsing – ICA/MUA event storage – ICA event.
Francisco Gonzalez Mario Rincon.  Apache CXF is an open source services framework.  CXF helps you build and develop services using frontend programming.
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
Web Services (Nuts and Bolts) ITEC 625 Web Development Fall 2006 Reference: Building Web Services with Java (Making sense of XML, SOAP, WSDL, and UDDI),
Web Services with Apache CXF
Web Services with Apache CXF
Open-DIS and XML DIS in Other Formats. Distributed Interactive Simulation DIS is an IEEE standard for simulations, primarily virtual worlds Binary protocol:
JAXB Java Architecture for XML Binding Andy Fanton Khalid AlBayat.
Web Services with Apache CXF
XML Parsing Using Java APIs AIP Independence project Fall 2010.
CS 571. Web services Web service: "a software system designed to support interoperable machine-to-machine interaction over a network“ – W3C In short,
6/11/2015Page 1 Web Services-based Distributed System B. Ramamurthy.
Fonts and colors Times New Roman “quotes” Trebuchet "quotes" yellow blue pink green violet.
MC365 XML Parsers. Today We Will Cover: An overview of the Java API’s used for XML processing Creating an XML document in Java Parsing an XML document.
29-Jun-15 JAXB Java Architecture for XML Binding.
JAXB Java Architecture for XML Bindings. What is JAXB? JAXB defines the behavior of a standard set of tools and interfaces that automatically generate.
Peoplesoft: Building and Consuming Web Services
1 WS Technologies II API Roberto Bruni Dipartimento di Informatica Università di Pisa Models and Languages for Coordination and Orchestration IMT- Institutions.
XML: Java Dr Andy Evans. Java and XML Couple of things we might want to do: Parse/write data as XML. Load and save objects as XML. We’ll mainly discuss.
Web Service Implementation Maitreya, Kishore, Jeff.
Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton.
Struts 2.0 an Overview ( )
AIXM Viewer Implementation Presentation to AIXM Users’ Conference, Federal Aviation Administration, Washington D.C., Feb 27-March 1, By: Mark Austin,
1 Lecture 22 George Koutsogiannakis Summer 2011 CS441 CURRENT TOPICS IN PROGRAMMING LANGUAGES.
A Cross-Platform Component Based Ecommerce Framework in.NET Vishwak Rajgopalan Under the guidance of Dr. Daniel Andresen (Major Professor) Dr. Mitchell.
1 3. Implementing Web Services 1.Create SOAP proxy interfaces and WSDL based service descriptions 2.Register/publish services 3.Stores service descriptions.
JAXB Java API for XML Binding. The Objective JAXB is concerned with the translation process between Java objects and XML documents You have a Java object.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
WSDL Kanda Runapongsa Dept. of Computer Engineering Khon Kaen University.
Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II.
WSDL: Web Services Definition Language CS 795/895.
Introducing Axis2 Eran Chinthaka. Agenda  Introduction and Motivation  The “big picture”  Key Features of Axis2 High Performance XML Processing Model.
CS 157B: Database Management Systems II May 8 Class Meeting Department of Computer Science San Jose State University Spring 2013 Instructor: Ron Mak
COP 4991 Component Based Software Development Lecture #4 Java Web Services Onyeka Ezenwoye.
Sheet 1XML Technology in E-Commerce 2001Lecture 7 XML Technology in E-Commerce Lecture 7 XSL Formatting Objects, Java Data Binding.
What is XML?  XML stands for EXtensible Markup Language  XML is a markup language much like HTML  XML was designed to carry data, not to display data.
Electronic Commerce COMP3210 Session 4: Designing, Building and Evaluating e-Commerce Initiatives – Part II Dr. Paul Walcott Department of Computer Science,
Or, Hey can’t we just do it using HTTP for the envelope?
© Drexel University Software Engineering Research Group (SERG) 1 An Introduction to Web Services.
XML Grammar and Parser for WSOL Kruti Patel, Vladimir Tosic, Bernard Pagurek Network Management & Artificial Intelligence Lab Department of Systems & Computer.
Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton.
XML Study-Session: Part III
COSC617 Project XML Tools Mark Liu Sanjay Srivastava Junping Zhang.
User Profiling using Semantic Web Group members: Ashwin Somaiah Asha Stephen Charlie Sudharshan Reddy.
INT-9: Implementing ESB Processes with OpenEdge ® and Sonic ™ David Cleary Principal Software Engineer.
6/2/2003O.Balsoy et al. Automating Metadata Services Ozgur Balsoy Community Grids Lab, Indiana University Marlon Pierce, Presenting.
1 Introduction JAXP. Objectives  XML Parser  Parsing and Parsers  JAXP interfaces  Workshops 2.
Web Services from 10,000 feet Part I Tom Perkins NTPCUG CertSIG XML Web Services.
J2EE Chris Hundersmarck Maria Baron Jeff Webb.  Java 2 Platform, Micro Edition (J2ME)  Java 2 Platform, Standard Edition (J2SE)  Java 2 Platform, Enterprise.
Web services. DOM parsing and SOAP.. Summary. ● Exercise: SAX-Based checkInvoice(), ● push parsing, ● event-based parsing, ● traversal order is depth-first.
Martin Kruliš by Martin Kruliš (v1.1)1.
Nishen Naidoo, Senior Systems Analyst Macquarie University Library Alma APIs using Java, Maven, JAXB and Jersey IGeLU 2015 Developers Day.
Lecture VI: SOAP-based Web Service CS 4593 Cloud-Oriented Big Data and Software Engineering.
Design Overview. Generated Packages ► fUML.Library.* - generated ► fUML.Semantics.* - generated ► fUML.Syntax.* - generated ► fUML.Test.* - generated.
1 Example Uses of Java Reflection Explained Simply.
Net-centric Computing Web Services. Lecture Outline  What is Web Service  Web Service Architecture  Creating and using Java Web Services  Apache Axis.
XML & JSON. Background XML and JSON are to standard, textual data formats for representing arbitrary data – XML stands for “eXtensible Markup Language”
Java High level programming language ◦ Sun Microsystems ◦ ORACLE acquired Java Development Kit – JDK Java Runtime Environment – JRE Java Virtual Machine.
Lecture Transforming Data: Using Apache Xalan to apply XSLT transformations Marc Dumontier Blueprint Initiative Samuel Lunenfeld Research Institute.
I Copyright © 2004, Oracle. All rights reserved. Introduction.
The Java API for XML Binding. The Need for Data Binding To support unmarshlling to convert XML data into Java objects. To support marshalling to convert.
Unit 4 Representing Web Data: XML
An Introduction to Web Services
WEB SERVICES.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Web Services-JAX-RPC JAX-RPC enables a Web Service endpoint to be developed using either a Java Servlet or Enterprise JavaBeans (EJB) component model.
XML in Web Technologies
Data Modeling II XML Schema & JAXB Marc Dumontier May 4, 2004
Enterprise Web Services
Presentation transcript:

Web Services with Apache CXF Part 2: JAXB and WSDL to Java Robert Thornton

Notes This is a training, NOT a presentation Please ask questions This is being recorded Prerequisites – Maven, Spring, and Web Application Development – Web Services, Part I: SOAP – A general familiarity with XML simple and complex schema types.

Objectives At the end of this presentation, the participant will be able to: Understand the role of JAXB as a web service data binding solution. Model data entities using JAXB annotations. Understand the purpose and usage of the CXF WSDL2Java tool. Be able to use WSDL2Java to generate a client proxy in a stand- alone Java application. Be able to configure Spring to manage and consume a generated WSDL2Java client proxy.

Web Services with Apache CXF Java XML Binding Modeling Web Service Messages with JAXB

Java and XML The Marriage of XML and Java: XML is a data markup language. – Used for long or short-term data storage. – Useful for data transfer between vastly different architectures. – Particularly useful for web service architectures. Java is an object-oriented programming language. – Unmarshalls (reads) data from existing XML into Java data objects. – Performs manipulations on Java objects via services. – Marshalls (writes) Java objects into a new XML representation.

Java and XML: Choices, choices…. The marriage of Java and XML has produced a large family of technologies, strategies, and libraries: DOM StAX JAXP DOM4J JAXB XML Beans JDOM XStream and many more….

Java and XML: Overview Most Java XML strategies fall into three spaces: DOM (Document Object Model) – Entire document model is held in memory as nodes in a document tree. Streaming – An event-based API for operating on each piece of the XML document individually and in sequence. Often used to stream XML for building DOM trees or construct XML Object bindings. XML-to-Object Binding – XML types and elements are bound to Java types and fields. In practice, most solutions use some combination of these.

JAXB: A Data Binding Solution The JAXB API is the standard solution provided by the JDK for Java XML data binding: Java classes are bound to XML types, elements, and attributes through Java annotations. A XML streaming event-based (StAX) parser is used to parse XML documents and construct Java objects as well as to write Java objects back to XML. The XJC tool (included in the JDK) can generate JAXB annotated classes from an existing XML Schema. The Schemagen tool (also included in the JDK) can generate an XML schema from JAXB annotated classes.

JAXB and Web Services As a data modeling API, JAXB is particularly useful to web services, because: XML is the most common form of data transport. Annotated Java classes can be made to represent XML schema types. JAXB APIs can unmarshall XML into Java data objects and back again. Fits into an RPC-style of service method invocation with POJO parameters and results. * Note that the CXF web service framework automatically handles the marshalling and unmarshalling of XML data to and from JAXB annotated Java classes.

JAXB: Marshalling and Unmarshalling Although CXF handles the marshalling and unmarshalling of serviced XML, it can be helpful to know how CXF does it. A web service developer occasionally needs to experiment with how JAXB annotations affect the parsing and rendering of XML. A web service developer often needs to debug issues that arise from data being marshalled or unmarshalled incorrectly. The JAXB Marshalling/Unmarshalling APIs can be used to apply additional validation or to generate a schema.

JAXB: Unmarshalling JAXB makes unmarshalling from XML easy: // Just create a JAXB context for your Java data classes JAXBContext jaxb = JAXBContext.newInstance(myClasses); // Then unmarshall the XML document into instances of // those classes. MyClass obj = (MyClass) jaxb.createUnmarshaller().unmarshall(xml) The Unmarshaller can accept XML input as a character stream, a file, a DOM node, or several other input types.

JAXB: Marshalling Marshalling objects into XML is just as easy: // Create a JAXB context for your Java data classes JAXBContext jaxb = JAXBContext.newInstance(myClasses); // Marshall your Java object hierarchy into an XML document. jaxb.createMarshaller().marshall(myObject, output); The Marshaller can serialize the XML to a character stream, a file, a DOM node, or several other output types.

JAXB: The Context Instances of the JAXBContext class effectively represent an “in-memory” schema of your data: It is a registry of all the classes that can be bound to XML types. It is a factory for Marshaller and Unmarshaller instances. It can be supplied listeners and a Schema for additional validation. It can be used to generate an XML Schema from your JAXB annotated classes.

JAXB: Non-annotated Class Demo

JAXB: Annotations Although JAXB can bind almost any Java data object with little or no annotations, annotations are typically desirable, for example: They can tell JAXB whether to unmarshal a field into an attribute or an element. They can inform JAXB of ID fields, element order, and other schema constraints. They can be used to identify or customize schema types, element names, attribute names, element wrapping, etc.

JAXB: Common Annotations JAXB defines many annotations to customize Java XML data binding. Here are just @XmlElementRef These and more can be found in the following package: javax.xml.bind.annotation

JAXB: Annotated Class Demo

JAXB: Rules and Conventions Some general rules about JAXB annotations: Concrete classes must have a public default no-arg constructor. Properties that reference interfaces must be annotated with one or annotations that identify the possible concrete types. Annotations may be placed on the fields or on the setters but not on both. By convention, annotating fields is preferable for simple POJOs. Properties not bound to XML values must be annotated

Apache CXF: SOAP: Lab 1 Lab 1: JAXB Data Binding

Web Services with Apache CXF WSDL to Java Consuming 3 rd Party Web Services

WSDL 2 Java Third-party SOAP web services are typically consumed in one of the following ways: Using a client JAR that contains the necessary Java classes and stubs to access the web service. Using a WSDL-to-Java tool to automatically generate the necessary web service stubs from a published WSDL.

WSDL to Java: Code Generation What is generated? How do use what is generated? – Service client – Endpoint interface – JAXB annotated model classes

WSDL to Java: Code Generation IDE Demo

WSDL 2 Java: Code Generation

WSDL to Java CXF provides the wsdl2java tool to consume third- party SOAP services: wsdl2Java

WSDL to Java: Lab 2 Lab 2: Using WSDL to Java

WSDL to Java: Spring Integration When the generated stubs aren’t enough. – Need to apply security (WSS4J/Spring Security) – Need to apply addition in/out interceptors

WSDL to Java: Spring Integration Demo Using an endpoint interface generated by WSDL to Java in a Spring integration test.

Conclusion The standard Java APIs can be used to model your data for use by web services. The JDK, CXF, and the Java Stack provide code generation and configuration utilities to make it easier to consume third-party web services. For more information about JAXB and CXF, please visit the links on the following page.

Resources On the web: rest rest In Print: Developing Web Services with Apache CXF and Axis 2, Kent Kai Iok Tong, TipTech Development, ISBN: