heartin's blog

Using DOM, SAX and StaX APIs for XML processing

Document Object Model (DOM), Simple API for XML (SAX) and Streaming API for XML (StAX) are populat APIs for processing XML documents.

 

Document Object Model (DOM)

  1. The Document Object Model (DOM) is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML, and XML documents.

JAX-WS and XML

JAX-WS is mainly used for working with SOAP based web services and SOAP based web services are primarily based on XML: SOAP message (which is the format for message exchange in SOAP web services ) itself is XML and WSDL (which is the description of a SOAP web service) is also XML based. So we will discuss few important points about JAX-WS and XML.

Introduction to XSD

XSD (XML Schema Definition), a recommendation of the World Wide Web Consortium (W3C), specifies how to formally describe the elements in an Extensible Markup Language (XML) document.

XSD can be used by programmers to verify each piece of item content in a document. They can check if it adheres to the description of the element it is placed in.

 

Example

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

Introduction to XML

Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format which is both human-readable and machine-readable

 

Example:

<?xml version="1.0" encoding="UTF-8"?>
<Employee>
  <id>001</id>
  <name>Jacob</name>
  <age>31</age>
  <salary>1000000</salary>
</Employee>

 

Dynamic Lock-ordering Deadlock Solution

We have seen a dynamic lock ordering deadlock example previously.

Simple Lock Ordering DeadLock Example

Let us consider an example program that deadlocks, and then see how we could have avoided that. Below example is an example for a lock ordering deadlock.

The DeadLockExample class has two objects lockObject1 and lockObject2, which we will use as locks for synchronizing.

We will have two Runnables, which we will use for creating two threads: Runnable1 synchronizes on lockObject1 and try to get lockObject2, and Runnable2 synchronizes on lockObject2 and try to get lockObject1.

[Problem] Printing Even and Odd using Two Threads with Coordination

Problem

Create two threads - one that prints odd numbers till 10 in the format "Odd 1", "Odd 3" etc. and one that prints even numbers till 10 in the format "Even 0", "Even 2" etc..

Need to implement coordination between them so that the output will be:

Even0

Odd1

Even2

Odd3

Even4

Odd5

Even6

Odd7

Even8

Odd9

Even10

Wait, Notify and NotifyAll Methods of the Object Class

Java.lang.Object provides three methods – notify(), notifyAll() and wait () – to improve the efficiency communication between threads. You will need to understand the synchronization process in Java to understand the communication using wait, notify and notifyAll.

  • obj.wait()

    • makes a thread wait on an object (obj) until it receives a notification from a notify() or notifyAll() on the same object.

Creating and Executing Threads in Java

You can create threads directly instantiating a Thread class or using the newer better and safer concurrency package features such as Executors.

Though it is not preferred to create threads directly in new code, learning to create threads directly working with Thread class helps to understand basics well.

We can create a Thread by

  • extending the Thread class or

  • implementing Runnable interface and passing it to a Thread class constructor.

Daemon Threads in Java

A daemon thread is a background thread and dies when the thread that created it ends.

A thread that is not daemon is called a user thread.

We can make a thread as daemon thread by calling setDaemon (true) on the thread instance.

We can call setDaemon() for a thread only before it starts, else an IllegalThreadStateException will be thrown.

 

Example:

MyThread t1= new MyThread ();

t1.setDaemon(true);

t1.start(); 

Pages

Search the Web

Custom Search

Searches whole web. Use the search in the right sidebar to search only within javajee.com!!!