1 / 22

Robert Thornton

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 https://tech.lds.org/wiki/Java_Stack_Training Prerequisites Maven, Spring, and Web Application Development

rimona
Download Presentation

Robert Thornton

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Notes • This is a training, NOT a presentation • Please ask questions • This is being recorded • https://tech.lds.org/wiki/Java_Stack_Training • Prerequisites • Maven, Spring, and Web Application Development • Web Services, Part I: SOAP • A general familiarity with XML simple and complex schema types.

  3. 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 a generated WSDL2Java client proxy . • Be able to use JAXB as the data binding solution in a Java Stack application.

  4. 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.

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

  6. 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. • XML-to-Object Binding • XML types and elements are bound to Java types and fields. • SAX (Simple API for XML) • An event-based API for operating on each piece of the XML document individually and in sequence. Most often used to parse DOM trees or construct XML Object bindings. In practice, most solutions use some combination of these.

  7. 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 SAX event-based 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. • The Schemagen tool (also included in the JDK) can generate an XML schema from JAXB annotated classes.

  8. 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. * Note that the CXF web service framework automatically handles the marshalling and unmarshalling of XML data to and from JAXB annotated Java classes.

  9. JAXB: Marshalling and Unmarshalling Although CXF handles the marshalling and unmarshalling of serviced XML, it can be helpful to know how it 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 incompletely.

  10. 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 = jaxb.createUnmarshaller().unmarshall(xml) The Unmarshaller can accept XML input as a character stream, a file, a DOM node, or several other input types.

  11. 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.

  12. 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.

  13. JAXB: Annotations Although JAXB can bind almost any 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.

  14. JAXB: Common Annotations JAXB defines many annotations to customize Java XML data binding. Here are just a few: • @XmlType • @XmlRootElement • @XmlElement • @XmlAttribute • @XmlID • @XmlElementWrapper • @XmlElementRef • @XmlElementRefs • @XmlList • @XmlTransient These and more can be found in the following package: • javax.xml.bind.annotation

  15. JAXB: Limitations XML elements are instances of XML types, hence the following limitations apply due to the dissimilarities between types in XML and Java: • JAXB cannot bind Java interfaces to XML types, elements, or attributes. • JAXB can bind abstract classes to XML types but notto elements or attributes. • JAXB can bind concrete classes to XML types, elements, and attributes.

  16. 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 more @XmlElementRef 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. • Annotate setters if the property is not backed by a field or if custom logic is required to set the property. • Properties not bound to XML values must be annotated with @XmlTransient.

  17. Apache CXF: SOAP: Lab 1 Lab 1: JAXB Data Binding http://tech.lds.org/wiki/Web_Services_with_Apache_CXF_-_Part_2

  18. Consuming 3rd Party Web Services 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 service proxies to access the web service. • Using a WSDL-to-Java tool to automatically generate a web service proxy from a published WSDL.

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

  20. Apache CXF: SOAP: Lab 2 Lab 2: Using WSDL 2 Java http://tech.lds.org/wiki/Web_Services_with_Apache_CXF_-_Part_2

  21. Apache CXF: SOAP: Lab 3 Lab 3: Consuming a WSDL to Java Client in Spring http://tech.lds.org/wiki/Web_Services_with_Apache_CXF_-_Part_2

  22. Resources On the web: • http://cxf.apache.org • http://www.w3.org/TR/soap/ • http://en.wikipedia.org/wiki/Cxf • http://en.wikipedia.org/wiki/SOAP • http://ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest In Print: • Developing Web Services with Apache CXF and Axis 2, Kent Kai Iok Tong, TipTech Development, 2005-2010. ISBN: 978-0-557-25432-3

More Related