text:
Sun Certified Web Services Developer Certification

This information can be used as a preparation material for Sun certified Web Services Developer (SCDJWS) Certification. This book also provides sample test questions for the webservices test.

This article is prepared by Elango, IBM India.

Given XML documents, schemas, and fragments determine whether their syntax and form are correct (according to W3C schema) and whether they conform to the WS-I Basic Profile 1.0a
Basic Profile Final Specification

XML
A simple XML document

BP states that the encoding of XML document should be either utf-8 or utf-16

BP R1010   A RECEIVER MUST accept messages that contain an XML Declaration.

CDATA Section

CDATA section is used to escape the interpretation of the text by XML parsers. XML Parsers treat certain characters as special characters, like <, >, & ....

If you want parsers to treat this text as simple text, then we can use CDATA Sections.

Example: < DTD

DTD is a document which defines the structure of an XML document class.

BP R1008   A MESSAGE MUST NOT contain a Document Type Declaration.

Processing Instruction

BP R1009   A MESSAGE MUST NOT contain Processing Instructions

Schema
It describes the format of the XML document.

Describe the use of XML schema in J2EE Web services.
XML schema is used to validate an XML document. Unlike DTDs it is a XML file so it is not required to learn a new language to define a rule. The schema defines a set of rules for a XML file. While we use JAXB we give the schema as input to the binding compiler. Then the binding compiler will generate the required interface to parse the XML document.

SOAP 1.1 Web Service Standards
SOAP is a lightweight XML based protocol for exchanging information in a decentralized, distributed environment. It consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined datatypes, and a convention for representing remote procedure calls and responses.

SOAP 1.1 is supported by BP (Basic Profile) 1.0 and SOAP 1.2 will be supported in BP1.1

SOAP supports two types of communication styles.
 * Document
 * RPC

List and describe the encoding types used in a SOAP message
SOAP messages can be encoded in four different types. Encoding is the process in which the attributes convey information about how contents of a particular element are encoded. The encodings supported by SOAP are
 * SOAP encoding: The sender and the receiver may not share the same schema. Indeed there are chances where the sender and the receiver may be applications that do not deal with XML at all, in case of which the SOAP architecture will be laid waste. To over come this drawback, the SOAP specifications has its own schema and rules for converting application-level data into a form suitable for embedding into SOAP messages.This is known as SOAP encoding. http://www.w3.org/2002/06/soap-encoding
 * SOAP Literal:Instead of encoding header or body content according to the SOAP Data Model, we simply encode according to the rules and constraints of our data model and schema. In essence, we can just slide our own XML documents into a SOAP message, providing we remember to specify the encodingStyle attribute (and of course ensuring that the intended recipients of the message can understand it). This style of SOAP encoding is known as literal style.Some applications already deal with xml natively, that are currently xml based vocabularies. SOAP can take advantage of the pre-existing schema, to craft message exchange. This encourages coarser-grained model(You can send all the data in the xml file get the processing done at a single stretch and get the process done at the recipients end and expect the recipient to take some time and send back the complete answer) compared with RPC's fine-grained model(we send a bit of data and get a little bit back, and you make further calls until your business is completed).

SOAP implementations like Apache SOAP 2.3/Axis support other encodings like Literal/XML and XMI.

'''There are two styles of communicating a SOAP message. 1) Document 2) RPC '''

 * Document: Document-style SOAP refers a way in which an application payload is hosted by the SOAP body element. When we use a document style it mean we place the document directly as a child to the soap:body element

 * RPC: RPC-style wraps the application content inside an element which can be used to indicate the name of a method to dispatch the content to.

Combining the communication styles and encodings we have majorly the following messaging modes.

 * Document/Literal
 * RPC/Literal
 * Document/Encoded
 * RPC/Encoded.

Only Document/Literal and RPC/Literal are supported in Basic Profile 1.0. According to WS-I standard Document/Literal is the only one standard which is approved.

Describe how SOAP message header blocks are used and processed
The SOAP header space is where much of the value in Web services resides, since it is here that aspects like security, transactions, routing, and so on are expressed. Every Web services standard has staked its claim on some part of the SOAP header territory, but in a mutually compatible way. The fact that SOAP headers are extensible enough to support such diverse standards is a major win, since it supports flexible protocol composition tailored to suit specific application domains.

A SOAP header has the local name Header associated with the http://www.w3.org/2002/06/soap-envelope namespace. It may also contain any number of namespace qualified attributes and any number of child elements, known as header blocks. In the absence of any such header blocks, the Header element itself may be omitted from the Envelope. Header Attributes

 * Encoding Style: If present, each header block must be namespace qualified (according to the rules set out in the SOAP schema), may specify how it has been encoded (i.e., which schema constrains it) through the encodingStyle attribute.The encodingStyle attribute is used to declare how the contents of a header block were created. Knowing this information allows a recipient of the header to decode the information it contains. SOAP allows many encoding schemes and provides one of its own as an optional part of the spec.

 * Role: It may specify its consumer through the role attribute. The role attribute contains a URI that identifies the role being played by the intended recipient of its header block. The SOAP node receiving the message containing the header block must check through the headers to see if any of the declared roles are applicable. If there are any matches, the header blocks must be processed or appropriate faults generated.

 * MustUnderstand: It may demand that it is understood by SOAP infrastructure that encounters its message through the mustUnderstand attribute.If the mustUnderstand attribute is set to true, it implies that any SOAP infrastructure that receives the message containing that header block must be able to process it correctly or issue an appropriate fault message. Those header blocks that contain the mustUnderstand="true" attribute are known as mandatory header blocks since they must be processed by any nodes playing the matching roles. Header blocks missing their mustUnderstand attribute should still be examined by nodes that play the appropriate role. If a failure to act on a role occurs, it is not deemed to be critical and further processing may occur since by missing the mustUnderstand attribute they are not considered mandatory

The SOAP specification stipulates that it is illegal for the role and mustUnderstand attributes to appear anywhere other than in header block declarations.

Fault
The SOAP Fault is a reserved element predefined by the SOAP specification whose purpose is to provide an extensible mechanism for transporting structured and unstructured information about problems that have arisen during the processing of SOAP messages or subsequent application execution. Since the fault mechanism is predefined by the SOAP specification, SOAP toolkits are able to use this mechanism as a standard mechanism for distributed exception handling.

The SOAP Fault element belongs to the same namespace as the SOAP Envelope and contains two mandatory child elements: Code and Reason, and three optional elements: Node, Role, and Detail.

Code: The first child element of the Fault is the Code element, which contains two subelements: a mandatory element called Value and an optional element called Subcode. The Value element can contain any of a small number of fault codes as qualified names (sometimes abbreviated to QName) from the http://www.w3.org/2002/06/soap-envelope namespace.

FaultCode and Description

 * VersionMismatch: Occurs when SOAP infrastructure has detected mutually incompatible implementations based on different versions of the SOAP specification.

 * MustUnderstand: Issued in the case where a SOAP node has received a header block has with its mustUnderstand attribute set to true, but does not have the capability to correctly process that header block - that is, does not understand the protocol with which that header block is associated.
 * DataEncodingUnknown: Arises when the content of either a header or body block is encoded                            according to a schema that the SOAP node reporting the fault does not understand.

 * Sender: Occurs when the sender propagated a malformed message, including messages with insufficient data to enable the recipient to process it. It is an indication that the message is not to be resent without change.

 * Receiver: Generated when the recipient of the SOAP message could not process the                            message content because of some application failure. Assuming the failure is transient, resending the message later may successfully invoke processing.

Subcode: Though it isn't used in this fault, the Subcode element also makes the SOAP fault mechanism extensible. Like the Code element, the Subcode element also contains a mandatory Value child element and an optional Subcode element, which may contain further nested Subcode elements. The Value element of any Subcode contains a qualified name that consists of a prefix and a local name

Reason: The Reason element associated with a Code is used to provide a human readable explanation of the fault, which in example below tells us that "The specified account does not exist at this branch". SOAP toolkits often use the contents of the Reason element when throwing exceptions or logging failures to make debugging easier. However, the Reason element is strictly meant for human consumption and it is considered bad practice to use its content for further processing.

Ex: The specified account does exist at this branch

Node: The optional Node element provides information on which node in the SOAP message's path caused the fault. The content of the Node element is simply the URI of the node where the problem arose.

Role: The Node element is complemented by the also optional Role element that provides information pertaining to what the failing node was doing at the point at which it failed. The Role element carries a URI that identifies the operation (usually some Web services standard) and that the party resolving the fault can use to determine what part of the application went wrong. Thus, the combination of Node and Role provides valuable feedback on exactly what went wrong and where.

Details: The SOAP Detail element, as recapped in example below, provides in-depth feedback on the fault if that fault was caused as a by-product of processing the SOAP Body.

Ex:   <err:invalid-account-sortcode> <bank:sortcode> 10-11-12     </bank:sortcode> <bank:account> 12345678     </bank:account> </err:invalid-account-sortcode > </err:myfaultdetails> </env:Detail>

Fault element defines four subelements. BP1.0 allows only the following four elements. But the SOAP 1.1 allows any subelements to fault provided the elements are qualified with namespace.

 * faultcode This is a mandatory element in fault element.
 * faultstring This is a mandatory element in fault element.
 * faultactor This is an optional element in fault element.
 * detail This is an optional element in fault element.Detail element is intended to notify the errors related to the Body content of the message. This element should not be used to notify the errors related to header elements. This element is intended to report any application specific error information.

SOAP 1.1 messages are delivered using HTTP Post and HTTP reply. As HTTP Get does not support payload, HTTP Post is used to transfer the messages (SOAP messages are included as payload to HTTP Post requests).

Explain the use of WSDL in Web services, including a description of WSDL's basic elements, binding mechanisms and the basic WSDL operation types as limited by the WS-I Basic Profile 1.0a
WSDL stands for Web Services Description language. A Web Service client has to know how to call a Web Service, what parameters to send and what messaging mode to use. A Web Service can describe itself in WSDL and publish it so that the clients can understand how to call and use the Web Service. With WSDL there are several other benefits like a SOAP Implementation vendor(Provider) can automate the process of creating stubs and interfaces required for the client to communicate with the Web Service.

Most J2EE Vendors provide a way to create the WSDL documents automatically by looking in the Web Service implementations.

With WSDL you can describe the Web Service.
 * Describe the endpoint interface.
 * Describe the operations supported by the endpoint and their signature.
 * Address of the Web Service.
 * Communication mechanism.

WSDL Basic Elements:

 * import
 * types
 * message
 * portType
 * operation
 * binding
 * service

Describe the use of UDDI data structures. Consider the requirements imposed on UDDI by the WS-I Basic Profile 1.0a

businessEntity
businessService
bindingTemplate
tmodel
publisherAssertion

UDDI represents Web service instances as uddi:bindingTemplate elements. The uddi:bindingTemplate plays a role that is the rough analog of the wsdl:port, but provides options that are not expressible in WSDL. To keep the WSDL description of an instance and its UDDI description consistent, the Profile places the following constraints on how uddi:bindingTemplate elements may be constructed. WSDL's soapbind:address element requires the network address of the instance to be directly specified. In contrast, UDDI V2 provides two alternatives for specifying the network address of instances it represents. One, the uddi:accessPoint, mirrors the WSDL mechanism by directly specifying the address. The other, the uddi:hostingRedirector, provides a Web service-based indirection mechanism for resolving the address, and is inconsistent with the WSDL mechanism. R3100 REGDATA of type uddi:bindingTemplate representing a conformant INSTANCE MUST contain the uddi:accessPoint element. UDDI represents Web service types as uddi:tModel elements. (See UDDI Data Structures section 8.1.1.) These may, but need not, point (using a URI) to the document that contains the actual description. Further, UDDI is agnostic with respect to the mechanisms used to describe Web service types. The Profile cannot be agnostic about this because interoperation is very much complicated if Web service types do not have descriptions or if the descriptions can take arbitrary forms. The UDDI API Specification, appendix I.1.2.1.1 allows but does not require uddi:tModel elements that use WSDL to describe the Web service type they represent to state that they use WSDL as the description language. Not doing so leads to interoperability problems because it is then ambiguous what description language is being used. Therefore the Profile places the following constraints on how uddi:tModel elements that describe Web service types may be constructed: The Profile chooses WSDL as the description language because it is by far the most widely used such language. R3002 REGDATA of type uddi:tModel representing a conformant Web service type MUST use WSDL as the description language. To specify that conformant Web service types use WSDL, the Profile adopts the UDDI categorization for making this assertion. R3003 REGDATA of type uddi:tModel representing a conformant Web service type MUST be categorized using the uddi:types taxonomy and a categorization of "wsdlSpec". For the uddi:overviewURL in a uddi:tModel to resolve to a wsdl:binding, the Profile must adopt a convention for distinguishing among multiple wsdl:bindings in a WSDL document. The UDDI Best Practice for Using WSDL in a UDDI Registry specifies the most widely recognized such convention. R3010 REGDATA of type uddi:tModel representing a conformant Web service type MUST follow V1.08 of the UDDI Best Practice for Using WSDL in a UDDI Registry. It would be inconsistent if the wsdl:binding that is referenced by the uddi:tModel does not conform to the Profile. R3011 The wsdl:binding that is referenced by REGDATA of type uddi:tModel MUST itself conform to the Profile.

Describe the basic functions provided by the UDDI Publish and Inquiry APIs to interact with a UDDI business registry.
Publish:

save_business
save_service
save_binding
save_tmodel
delete_business
delete_service
delete_binding
delete_tmodel
get_authtoken
discard_token Inquiry:
find_business
get_businessdetail
find_service
get_servicedetail
find_binding
get_bindingdetail
find_tmodel
get_tmodeldetail

Explain the service description model, client connection types, interaction modes, transport mechanisms/protocols, and endpoint types as they relate to JAX-RPC
The following material is based on JAX-RPC 1.1 Spec.

JAX-RPC is Java API for XML based Remote Procedure Call mechanism. JAX-RPC supports any kind of protocol which is based on XML Infosets. JAX-RPC is independent of any communication protocol like SOAP(which is an XML based protocol using XML Infosets). JAX-RPC is also independent of any transport protocol like HTTP, SMTP.

But some aspects are more biased towards WebServices technologies like SOAP and WSDL. So may be that's the reason why the named the new version of JAX-RPC as JAX-WS(Java API for XML based WebServices). JAX-WS 2.0 is updated version of JAX-RPC 1.1.

URL for JAX-WS http://www.jcp.org/en/jsr/detail?id=224

Service description model

JAXR-RPC 1.1 specifies programming model for a service endpoint developed and deployed on a Servlet container based JAX-RPC runtime system.

Client connection types

There can be three types of client,
 * Static Stub based client
 * Proxy Client
 * DII

Interaction modes

The following are the application interaction modes supported by JAX-RPC, the JAX-RPC providers may use any kind of low-level interaction modes to support the Application interaction modes.

 * Synchronous Request Response Mode

In this mode the service client makes a request and waits(the current thread executing the request) for the response from the server. The JAX-RPC APIs and service client programming model supports this mode through both the stub(or dynamic proxy) based model and DII Call interface.

In this mode the service client invokes a remote method and continues without waiting for the response from the service endpoint. The service client does not get any response(either return values or remote exceptions) from the Service endpoint. The JAX-RPC supports this one-way mode through DII Call interface.
 * One-way RPC Mode

In this mode the service client thread invokes a remote method and continues processing without waiting for response. It later processes the response by performing blocking receive. The JAX-RPC runtime does not need to support this mode.
 * Non-blocking RPC Invocation

Transport mechanisms/protocols
 * Protocol will be SOAP (Simple Object Access Protocol)
 * Transport can be HTTP / JMS

Endpoint types There are two types of endpoints,
 * Servlet Based Endpoints
 * EJB based Endpoints (JAX-RPC spec does not specify. R08 p24)

=== Given a set of requirements for a Web service, such as transactional needs, and security requirements, design and develop Web service applications that use servlet-based endpoints and EJB based endpoints. ===

Explain the advantages and disadvantages of a WSDL to Java vs. a Java to WSDL development approach.
WSDL to Java

Java to WSDL

 * Advantages

 * Disadvantages
 * Java supports inheritance for Interfaces(Service Endpoint Interface) which can not be directly translated in to WSDL definitions(which does not have inheritance concept for portType definitions).

JAXP
JAXP, Java API for XML Processing leverages the XML Parsers SAX and DOM. It also provides the support for XSL transformations.

SAX is an event based parser model. DOM builds an Object representation of XML.

JAXP API which is packaged in javax.xml.parsers provides implementation independent interfaces to use SAX, DOM and XSL Transformers. It provides this by using Factory Design Pattern.

xml packages

 * javax.xml.parsers - which provides an implementation independent API for using SAX, DOM and XSL Transformers.
 * org.w3c.dom - API using Document Object model for parsing XML.
 * org.xml.sax - API for event based XML parsing model.
 * javax.xml.transform - XSLT APIs which are used to transform XML documents in to different formats(XML, HTML..)

javax.xml.parsers It provides the implementation independent classes for accessing the Parsers.

 * javax.xml.parsers.SAXParserFactory
 * javax.xml.parsers.DocumentBuilderFactory
 * javax.xml.transform.TransformerFactory

You can define which concrete implementation to use by setting the System properties using System.setProperty or by setting them as JVM parameters using -DpropertyName=propertyValue. If we don't define the properties, it uses the Sun's implementation.

SAX
SAX parser is an event based serial parser, in the sense it reads the given XML document line-by-line (serially) and generates event when it comes across the XML elements.

SAX packages

 * org.xml.sax
 * org.xml.sax.ext
 * org.xml.sax.helpers

SAX is based mainly on two interfaces, XMLReader and ContentHandler

XMLReader is the xml parser(which is a replacement for Parser of SAX1 model) which reads the XML document and calls the event callback methods of the ContentHandler. org.xml.sax.Parser is used in SAX1 model.

XMLReader has two new functionalities
 * it adds a standard way to query and set features and properties
 * it adds Namespace support

Instantiating a parser factory implementation using JAXP is done using

SAXParserFactory factory = SAXParserFactory.newInstance; SAXParser parser = factory.newSAXParser;

The above instantiation is independent of the implementation.

For example, Xerces-J from Apache is an implementation of SAX.

Using Xerces-J we can instantiate using SAXParserFactory factory = new org.apache.xerces.jaxp.SAXParserFactoryImpl; SAXParser parser = factory.newSAXParser;

But by using JAXP, we get independence from the vendor specific API.

Simple SOAP message parser

Lets look at a simple example of the whole story around using SAX..

The following presents a simple example parser(SAXTest.java) which reads a SOAP message (SOAPMessage.xml) and uses DefaultHanlder(SOAPMessageHandler.java).

Simple SOAP Message(SOAPMessage.xml)

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getProductDetails xmlns="http://www.javaspirit.com/pr"> <productID>827635</productID> </getProductDetails> </soap:Body> </soap:Envelope>

Sample code to read the SOAPMessage.xml using SAX model

package com.javaspirit.tutorial.sax;

import java.io.IOException; import java.io.InputStream;

import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;

import org.apache.log4j.Logger; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;

public class SAXTest { private static final Logger logger = Logger.getLogger(SAXTest.class); public static void main(String[] args) { // Gets the SAXParserFactory implementation // In this case we get org.apache.xerces.jaxp.SAXParserFactoryImpl // We configure this using the JVM property // -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl

SAXParserFactory factory = SAXParserFactory.newInstance; if(logger.isDebugEnabled) logger.debug(factory.getClass); SAXParser parser; try { // We get Xerces implementation of SAXParser which is org.apache.xerces.jaxp.SAXParserImpl parser = factory.newSAXParser; if(logger.isDebugEnabled) logger.debug(parser.getClass); DefaultHandler handler = new SOAPMessageHander; // Read the SOAPMessage.xml ( which contains a simple SOAP Message ) InputStream in = Thread.currentThread.getContextClassLoader .getResourceAsStream(                           "com/javaspirit/tutorial/sax/SOAPMessage.xml"); // Register the DefaultHandler with the parser/ // The SAXParser will invoke the callback methods defined by the DefaultHandler parser.parse(in, handler); } catch (ParserConfigurationException e) { e.printStackTrace; } catch (SAXException e) { e.printStackTrace; } catch (IOException e) { e.printStackTrace; }   } }

A simple Handler which extends DefaultHandler, which prints a debug message when the callback method is invoked.

package com.javaspirit.tutorial.sax;

import org.apache.log4j.Logger; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;

public class SOAPMessageHander extends DefaultHandler{ private static final Logger logger = Logger.getLogger(SOAPMessageHander.class); /* (non-Javadoc) * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) */   public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException { logger.debug("in startElement method"); super.startElement(uri, localName, qName, attributes); }   /* (non-Javadoc) * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String) */   public void endElement(String uri, String localName, String qName) throws SAXException { logger.debug("in endElement method"); super.endElement(uri, localName, qName); }

}

SAXParser

SAXParser is a wrapper class for the org.xml.sax.XMLReader. As the content is parsed by the SAXParser implementation it invokes the callback methods of the HandlerBase or DefaultHandler.

SAXParser several overloaded methods for parsing

Note: Some of the API documentation is taken directly from the Sun API Documentation.

void 	parse(File f, DefaultHandler dh) Parse the content of the file specified as XML using the specified DefaultHandler. void 	parse(File f, HandlerBase hb) Parse the content of the file specified as XML using the specified HandlerBase. void 	parse(InputSource is, DefaultHandler dh) Parse the content given InputSource as XML using the specified DefaultHandler. void 	parse(InputSource is, HandlerBase hb) Parse the content given InputSource as XML using the specified HandlerBase.

the parse methods have mainly two input parameters,
 * source - source of the XML document, the possible sources are File, InputStream, String
 * hanlder - HandlerBase or DefaultHandler ( or their subclasses)

Validation abstract boolean 	isValidating Indicates whether or not this parser is configured to validate XML documents.

Namespace Awareness abstract boolean 	isNamespaceAware Indicates whether or not this parser is configured to understand namespaces.

Setting and Getting properties abstract void 	setProperty(String name, Object value) Sets the particular property in the underlying implementation of XMLReader. abstract Object 	getProperty(String name) Returns the particular property requested for in the underlying implementation of XMLReader.

Handlers

As the SAXParser parses the document it will call the callback methods of the handler classes. The Handler class implementations must register with the SAXParser before receiving notifications.

There are four types of Handlers (interfaces)

org.xml.sax.ContentHandler

As the SAXParser parses the XML document it will call the methods of registered ContentHandler. ContentHanlder has callback methods for major events in parsing like startDocument, endDocument, startElement, endElement, processingInstruction, characters.

org.xml.sax.EntityResolver

This has only method

InputSource 	resolveEntity(String publicId, String systemId)

The Parser will call this method before opening any external entity except the top-level document entity.

org.xml.sax.DTDHandler

org.xml.sax.ErrorHandler

The SAXParser invokes the methods of ErroHandler implementation as it gets XML Processing errors, rather than throwing the exceptions itself.

it has the following methods. void 	error(SAXParseException exception) Receive notification of a recoverable error. void 	fatalError(SAXParseException exception) Receive notification of a non-recoverable error. void 	warning(SAXParseException exception) Receive notification of a warning.

Use the SAAJ APIs to create and manipulate a SOAP message
The following documentation is based on SAAJ 1.2

SAAJ - SOAP with attachments API for Java

SAAJ can be used to create, read, update and send SOAP messages. The API is standalone, in the sense that it can be used within and without the JAX-RPC context.

javax.xml.soap is the package which holds all the SAAJ API.

MessageFactory is the main abstract class where we start creating the SOAPMessages. MessageFactory is implemented by the SAAJ vendors. For example, in Axis the MessageFactory is implemented by org.apache.axis.soap.MessageFactoryImpl

public abstract class MessageFactory { public static MessageFactory newInstance throws SOAPException { // Implementation }

public abstract SOAPMessage createMessage throws SOAPException;

public abstract SOAPMessage createMessage(       MimeHeaders mimeheaders, InputStream inputstream) throws IOException, SOAPException; }

newInstance creates a new instance of the MessageFactory.

createMessage is used to create SOAPMessage object, usually used to create new SOAP request messages.

createMessage(MimeHeader mimeHeaders, InputStream in) creates a SAAJ SOAPMessage model (DOM) from an existing SOAP message.

As SAAJ supports Attachments with SOAP messages, a SAAJ SOAPMessage object contains one SOAPPart object and one or more AttachmentPart objects.

The following class diagram provides the overview of the major components.

JAXR
=== Describe the function of JAXR in Web service architectural model, the two basic levels of business registry functionality supported by JAXR, and the function of the basic JAXR business objects and how they map to the UDDI data structures. ===

JAXR is Java API for XML Registries. JAXR API to registries is similar to JDBC API for databases. JAXR API provides common interface to communicate with different registries instances (even different registry models).

JAXR Provider is the vendor who provides the JAXR API Specification implementation. There are several Registry models, out of which JAXR specifies to only UDDI and ebXML registries.

JAXR API is divided into two main packages (components), one javax.xml.registry contains API to provide Query and LifeCycleManagement API for registries and javax.xml.registry.infomodel provides business objects which are similar to the objects maintained by the registries. JAXR infomodel is the confluence of the object models from both ebXML and UDDI registries.

JAXR Specification does not mandate JAXR Providers to implement support for all API(or Registries). The Spec divided the API into Capability Levels. Capability Level 0 means support for UDDI registries and Capability Level 1 means support for ebXML registries. JAXR Spec requires the Provider to implement alteast Capability Level 0(support for UDDI).

Use JAXR to connect to a UDDI business registry, execute queries to locate services that meet specific requirements, and publish or update information about a business service.
kkk

Security
=== Explain basic security mechanisms including: transport level security, such as basic and mutual authentication and SSL, message level security, XML encryption, XML Digital Signature, and federated identity and trust. ===

Given a scenario, implement J2EE based web service web-tier and/or EJB-tier basic security mechanisms, such as mutual authentication, SSL, and access control.
=== Describe factors that impact the security requirements of a Web service, such as the relationship between the client and service provider, the type of data being exchanged, the message format, and the transport mechanism. ===

Developing Web Services
=== Describe the steps required to configure, package, and deploy J2EE Web services and service clients, including a description of the packaging formats, such as .ear, .war, .jar, deployment descriptor settings, the associated Web services description file, RPC mapping files, and service reference elements used for EJB and servlet endpoints. ===

Describe the characteristics of a service oriented architecture and how Web services fits to this model.
=== Given a scenario, design a J2EE service using the business delegate, service locator, and/or proxy client-side design patterns and the adapter, command, Web service broker, and/or faade server-side patterns. === === Describe alternatives for dealing with issues that impact the quality of service provided by a Web service and methods to improve the system reliability, maintainability, security, and performance of a service. ===

Design a Web service for an asynchronous, document-style process and describe how to refactor a Web service from a synchronous to an asynchronous model.
=== Describe how the characteristics, such as resource utilization, conversational capabilities, and operational modes, of the various types of Web service clients impact the design of a Web service or determine the type of client that might interact with a particular service. ===

SOAP
SOAP

WSDL
WSDL Schema 1.1


text:
User talk:139.137.197.142

Author information

D. John Doyle MD PhD FRCPC Department of General Anesthesiology Cleveland Clinic Foundation 9500 Euclid Avenue E31 Cleveland, Ohio, USA 44195 Email          doylej@ccf.org Tel            216-444-1927 Fax            216-444-9247

Now registered as djdoyle

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: User talk:139.137.197.142


text:
Talk:Puzzles/Physics puzzles/Train on Circle/Solution

The Hint and the solution, in my opinion, do not answer the question. The question is about average speed and not about average time it takes to travel around a circle.

100km at 100km/h = 1 hour

100km at 200km/h = 1/2 hour

100km at 300km/h = 1/3 hour

Suppose this is a Formula 1 race (the lenght and shape of the circuit are the same in both laps...not like the example given in the answer): A racer completed the first lap with an average speed of 100km (say for example that the lap took him 3 minutes to complete); on the second lap he goes at 300km average(he will take 1 minute and not 3 again, to make the lap); if we do a simple calculation of the average speed and/or time for the 2 lap race: 200km and 2 minutes. Note that only the time is depending on the lenght of the circuit. the average speed is the same even if you choose Sahara as the circuit.

The example given on the answer says that on the begining of the second lap we don't have any more time. Why? There is no time limit. only speed...

A point should be made that the words velocity and speed are NOT interchangable. Velocity is defined as displacement/time and speed as distance/time. In a straight the two will yield the same magnitude answer. In this example the train travels in a circle and therefore the displacement of the train is actually zero.

 * Perhaps a more mathematical answer is in order.

 * If the distance is $$d$$ and the initial speed is $$s_1$$ then $$t_1 = \frac{d}{s_1}$$ which leads to $$t_1 * s_1 = d$$. Now, if the goal is to double the initial speed (the first of two constraints) on average, then

 * $$(s_1 + s_2)/2 = 2*s_1$$
 * $$s_1 + s_2 = 4*s_1$$
 * $$s_2 = 3*s_1$$

 * This is the obvious answer: 300 km/h. But, use the distance equation (the second of two constraints)

 * $$t_2 * s_2 = d$$
 * $$t_2 * s_2 = d$$
 * $$t_2 * 3 * s_1 = d$$
 * $$\frac{d}{s_1} * 3 * s_1 = d$$
 * $$d * 3 = d$$

 * which has no non-trivial solutions (i.e., $$d=0$$). If $$d=0$$ then $$t_2=0$$, which is stated in the solution.

 * But, for the fun of it, let's say you did the first 100 km lap at 100 km/h and did the second 100 km lap at 300 km/h (the "obvious answer"): how long would it take?

 * $$\frac{100 km}{100 km/h} = 1 hr$$
 * $$\frac{100 km}{300 km/h} = 1/3 hr$$

 * So the total time is 1.3333 hours. The average speed is then
 * $$\frac{200 km}{1.3333 hours} = 150 km/hr$$
 * which is clearly contradictory. Cburnett 19:40, 27 Jun 2005 (UTC)

Solution to the puzzle with example
A train goes around a circle, the first time with an average velocity of 100 km/h. How fast should the train be when going around the circle again a second time, so that in total the average velocity for both loops is 200 km/h?

The obvious answer of 300 kms per hour is wrong. The writer is right. The train will have to go infinitely fast to be able to reach average speed of 200 kmph. I am illustrating the solution with an example below.

Lap 1 distance 100 kms avg speed 100 kmph time taken for first lap is 1 hour

Lap 2 distance 100 kms avg speed say 600 kmph Time taken for second lap is 10 minutes.

Total distance travelled in two laps is 200 kms in one hour 10 minutes this the average speed is 200/1hr 10 minutes which is below 200 kmph.

Double the speed in the second lap. See the picture now. Lap 1 distance 100 kms avg speed 100 kmph time taken for first lap is 1 hour

Lap 2 distance 100 kms avg speed say 1200 kmph Time taken for second lap is 5 minutes.

Total distance travelled in two laps is 200 kms in one hour 5 minutes this the average speed is 200/1hr 5 minutes which is below 200 kmph.

Thus if the first lap is travelled in one hour, no matter how much speed you pick up , you cannot reach the average speed of 200 kmph in the circuit.

Anand K. Ghurye moonsign2001@yahoo.com


text:
Puzzles/Physics puzzles/Levitating Straws/Solution

Puzzles | Physics puzzles | Levitating straws | Solution

Bend the fourth straw partially in half. Place it around the third straw so that its tip (in the middle of the straw) goes under the piece of paper in the shape of a V. Bend the fourth straw fully in half so it grips the third straw. Lift it up carefully, pulling up the first and second straws as well.

I think a better solution -- it doesn't involve modifying the fourth straw -- is this:

Place the fourth straw through the pyramid under the third straw. This means that the fourth straw goes through both "faces" of the pyramid that adjoin the third straw, and does not go through the face formed by the first two straws.

Holding the fourth straw parallel to the surface of the table and parallel to the face formed by the first two straws, move the fourth straw toward the first two straws. This will push the first two straws away from the third straw.

The third straw will fall. If you have positioned the fourth straw correctly, the third straw will hit the fourth straw rather than falling to the table.

The fourth straw forms a triangle with the first two straws, and the end of the third straw (leaning against the fourth straw) is pointed toward this triangle. Move the fourth straw down a bit and toward the third straw. This will allow the first two straws to fall toward the third straw. The end of the third straw should now go up and through the first two straws.

Now if you lift straight up, the third straw will lock with the first two straws over the fourth straw. You can lift all the straws at once.


text:
Talk:Puzzles/Physics puzzles/Levitating Straws/Solution

I assume that using the last straw the sweep the others off the table is "cheap." I also asasume that using the last straw to blow the others into the air (letting them fall to the table again) is "cheap."

Just added in a solution. Interested to know if the author had another solution in mind. (Forgot to log when I added the solution. Doh!). Nanobug 19:21, 15 Jun 2005 (UTC)


text:
Puzzles/Logic puzzles/Infinite Hats/Solution

Puzzles | Logic puzzles | Infinite Hats | Solution

All but the last one can tell what colour hat he/she is wearing.

First, they agree on a way for the last person to count the number of hats in front of himself. An excellent way is for him (we'll assume it's a guy) to count the number of red hats. Then, he'll guess the colour of his hat based on that count: He'll say "red" if it's odd or "blue" if it's even.

Then, as each person goes down the row, she (to be fair) looks at the hats in front of her. She knows if there is an even number of red hats *including her own*, and can see how many red hats are in front of her. If there are an even number in front of her, and there are an even number including her own, then hers must be blue! When she answers with the colour of her hat, then the person in front of her will know whether to adjust the current count of red hats, and the puzzle can go on to completion.

Another way to look at the solution is counting in base 2, mod 2. Red hats are 1s and Blue hats are 0s. The last person in the row tells what the sum of everyone's hats in front of him is. He announces "Red" (Total = 1) or "Blue" (Total = 0). Then, the next person sums up the hats in front of her, and gets Total-In-Front-Of-Me. She knows that Total - Total-In-Front-Of-Me (mod 2) = Color-Of-My-Hat, and can announce her hat colour. The person in front of *her* can then figure out NewTotal = Total - Color-Of-Her-Hat (mod 2), and work out what colour his hat is, etc...


text: X Window Programming/XLib/Standard Headers


text:
International Latin Technique

This is a wikibook detailing generally accepted international latin dance technique. A resource for newcomers to the dance style and as a reference guide for the more experienced dancer who just needs to look up footwork, placement, shaping, timing or styling on a certain figure.

Choosing a dance school
There is two different styles of ballroom and latin dancing. Depending on which style you choose your progressing and variations that you learn will be different.

The major sub division to start with is American Style vs International style. So to differentiate this we generally talk about Latin American (International Style Latin), Standard (International Style Ballroom), Rhythm (American Style Latin), Smooth (American Style Ballroom)

In the ballroom category Standard and Smooth borrow heavily from each other, the styling is the similar but Smooth allows for a wider range of variations because of slacker rules in terms of hold. When starting out the dances seem completely different but as you progress you will find that the different styles and dances borrow heavily from each other.

Another major differentiation in Ballroom and Latin dancing is Social dancing vs Competitive dancing.

Dancing schools that present social dancing concentrate on variations. (Teaching you new steps). Moving to the beat and getting the basic step right is more important than having the step look beautiful. In general these schools will not work on routines but allow you to combine steps as you feel. Most of these schools concentrate on the entry level dancers and as such will skip on basic technique that will make the more advanced steps possible. Jive has many steps similar to swing, rock and roll

Competitive studios on the other hand concentrate on dancing competitions. In many cases they will have a large number of social students as well but the style of teaching competitors is completely different than social dancers. Where a social dancer will spend 10 minutes learning a waltz Natural Turn it is quite common for competitors to learn that step and practice it for hours making sure that the timing, direction, foot position, foot work, rise and fall, shaping, posture, head and hold is as close to perfect as you can get it.

I will always suggest that a dancer join a studio with competitive students in it. The reason is simply that the knowledge needed to teach these students are considerably more and if you, at some stage, wish to progress or become more serious about your dancing, you can!

Competition dancing
The reason that I touch on what competitive dancing is, is to encourage you to start competing. The fact that you are reading this book already means that you are interested in improving your dancing. Doing medal tests if you do not have a partner or competing if you do is the perfect way to do this as it gives you a goal to work towards.

The important thing to remember is that you have to start at the beginning and work you way up. The competition systems is designed to allow you to start at the beginning and progress through the levels at your own pace and competency level.

So if you do decide to join competitions this is how this strange new world is organized.

Competitions are divided into a syllabus section and an open section.

Syllabus sections is the part where you still learn what the top dancers calls basic work. So if they were to refer to a basic Waltz it would mean a waltz consisting of syllabus steps. This would mean the variations indicated in this book as Bronze, Silver and Gold.

The open sections are the advanced work. Dancers are not limited in what steps they can use as long as it falls into the generally accepted style of the dance. Dances and indeed dancers will borrow from each other and fashion plays a big role in the actual dancing and styling.

Syllabus Sections
To order the variations presented in the dance sections of this book I have ordered them into sections called. Beginner, Bronze, Silver and Gold. This is the designation I am used to but is somewhat arbitrary as every dance organization differs in what they place in each category. Also some organization use a different level structure.

Although the variations are relatively easy to learn. The technique is not and it takes time to get used to the way of doing them with confidence, poise, style. I suggest not trying to move up a level to fast. Most organization actually limit the amount of exams you are allowed to take at the same time. Allowing you to ingrain the variations and the technique before attempting more difficult work.

As such I will try to introduce techniques in a the Beginner, Bronze, Silver, Gold as they are needed. So for example in a cha-cha-cha the inside foot is moved and placed in the cha-cha part of the basic allowing the hips to make an 8 movement. This is not strictly necessary in the beginner level but a Silver dancer should know this and put it into practice.

 * Beginner - This is the level that we all started from. Advanced dancers will be well advised to join beginner group classes. It is not only a great way to practice but you will pick up small nuances and statements from your teacher that you missed the first time around.
 * Bronze - This is about the level you should be at if you have been receiving continues instructions for a year.
 * Silver - Continues instruction for two years.
 * Gold - Instruction for three years.

Although each person learns at their own pace, you will probably master the variations faster than indicated above. Most organizations will not allow you to advance faster. Keeping this in mind if you learn the steps quicker practice the technique. If you are comfortable with the technique read the comments for the next level and start practicing this. It will be applicable to your level as well.

If you are interested in competing you will probably have to put more hours in as you advance. The syllabus sections can generally be divided into Bronze, Silver, Gold, some dancing organizations have renamed these sections but the basic requirements are the same.

Open Sections
After you have completed the syllabus work mentioned in this book you will advance to the dress sections or the open sections. Here what you dance is open to you. There is no variation that is out of bounds and you can start wearing extravagant outfit. Like the syllabus section you accumulate points to move up each level. But unlike the syllabus section you fall under the same rules, does not matter in which of open levels you are dancing. In the open section there is no restriction in syllabus so any legal variation can be danced. It is also quite common that the Championship sections can be danced by any dancers that is in the open sections. The open sections are:

 * Novice
 * Pre-championship
 * Championship

Age groups
Depending on the dancing organization. For purposes of this book it is not important but make sure that you know what the age divisions are for your organization. Your age group will influence you choice of partner.

Here is an example of age categories.

 * Juvenile I:		reach 	9th birthday or less in the calendar year
 * Juvenile II:		reach	10th and 11th birthday in the calendar year
 * Junior I:		reach	12th and 13th birthday in the calendar year
 * Junior II:		reach	14th and 15th birthday in the calendar year
 * Youth:			reach	16th, 17th and 18th birthday in the calendar year
 * Adult:			reach	19th birthday or more in the calendar year
 * Senior I:		reach	35th birthday or more in the calendar year
 * Senior II:		reach	45th birthday or more in the calendar year

Competition points vs exams
Again depending on you're organization the exact method of promotion might differ but in general there are two systems that are used, either independently or together.

Test promotion systems
The test promotion system is basically a system where you have to dance a test or exam. This exam then entitles you to move onto the next level.

In general for each exam the criteria are simply the variations and techniques that you can perform at a high enough level.

This system works very well for both social dancers and competitive dancers and ensures that basic techniques are mastered before a dancer can move onto the next level. It also gives a student something to work toward. The weakness of this system is that like everything in dancing the marking is subjective. Also the bar for promotion is really very low and it is very easy to pass onto the next level even with rudimentary dancing skill.

Points promotion system
This system is generally used in competition latin dancing. The system work on the principle that for each competition you compete in, you earn points. This is based on you placing in the competition size of the competition etc. Once you have earned enough points you will be advanced to the next level.

The advantages in this system include that a dancer must compete and gain enough experience in each level to get promoted to the next level. It forces a dancers to compete and is a great motivator to keep competing. Because the competitions are adjudicated by several judges the promotion is less subjective and is measured on you ability against other dancers with approximately the same proficiency level. The major disadvantage is that the bigger the sections are the longer promotion from one level to another can take. Couples can be promoted purely based on the fact that there are no good couples in the sections they are competing in. This is mitigated somewhat by the way the points systems are structured.

/General Dancing Technique/

This section describes hints and techniques that is applicable to all dancing. They will be explained as it relates to latin dancing though.

Dancing Etiquette
Although this book mostly describes International Latin Technique related to competition dancing. It is important to have a basic understanding of Dancing Etiquette. This will help you interact when you do get a chance to practice in a social setting or simply want to go and have some fun.

Dance etiquette can largely be summarized by the word "politeness". Partners must keep a good connection and counter-balance one another in fast-moving partner dancing such as the Latin dances; yet still grant the other dancer his or her personal space where appropriate within the choreography. Although many of the standard dancing Etiquette rules apply to social situations it should be considered when doing competitions as well. As even competitive dancing was born out of the social dancing scene.

Social Etiquette
There are certain etiquette rules off and on the dance floor. Here are some of the general rules for both ladies and men that will make your evening more enjoyable.

For Ladies
1. Do not refuse a gentleman when he asks you to dance. - Most men take offence when you refuse to dance with them and will ask their friend not to dance with you. It can cause you to sit the whole evening without dancing. If you have to refuse for what ever reason, be as polite as you can, smile and if the refusal does not preclude you dancing with the gentleman, ask him to ask you again at a later time. There are certain situations where it is acceptable to refuse. Most notably when the person asking you to dance with him is drunk, you can politely refuse. If you are refusing because you are tired do not dance with another gentlemen on the same dance. Please remember ladies that when a man asks you to dance with him it took some courage and that he will certainly spread the word if he enjoyed dancing with you. The same goes for when you refused. If a lady refused to dance with a gentlemen without providing a valid reason she can be assured of not being asked to dance again by that gentlemen for the rest of the evening.

2. Close body contact is not required - Although certain latin dances lends itself to dancing very closely you are definitely not required to dance closely with a partner that you do not know. It is acceptable to move away from your partner to a more comfortable distance in the hold or to politely ask to be excused if the gentlemen are insistent.

3. Follow the lead - Follow your partners lead. If you are unsure of the what to do, do what you feel is the right movement. It is important to realize that when leading a lady a man will interpret not only the music and choreograph the dance as you go along but also constantly scan your environment and decide which steps will work there. It is the man's responsibility to read the lady's ability and choreograph the dance appropriately. Don't be discouraged if you cannot feel a gentleman's lead immediately - there are some differences in the ability of the gentlemen to lead. If a gentleman has been dancing with a partner for a long time the lead becomes very soft and subtle and it takes some time to get used to leading a bit more strongly for a new partner.

4. Leave the dance floor at the end of the dance - It is impolite to leave the dance floor before the song is complete. It is general practice to ask a lady to dance about halfway through a song and then continue onto the new dance. If for some reason the lady does not enjoy the dance she can politely thank the gentleman while the music is changing. It is generally considered an indication that a lady does not want to dance with you if she only dances one song.

5. Do not teach - Do not try to teach your partner on the social dance floor. It is considered impolite.

For the gentlemen
1. Ask politely - Say please and thank you when asking a lady to dance. It not only makes a good impression but makes the lady feel more comfortable that she is in good hands when dancing with you.

2. Strong lead - Like asking a lady with confidence, you also have to lead with confidence. Do not guess what needs to be done - lead the lady strongly and early so she can react appropriately.

3. Do not force yourself on a lady - Most ladies will dictate the dance position when you offer your arm; do not pull her closer than she is comfortable and the same rule applies you are allowed to make more distance to make it more comfortable for you.

4. Floor craft - Try and steer clear of trouble where ever possible. In terms of floor craft it is important to remember that the less experienced the other dancers on the floor, the more space you need to leave. There are dance floors that are filled with experienced couples with no incident the whole evening, while others with three inexperienced couples constantly crashing into each other. It is not considered good practice to break another persons feet or jaw on the dance floor. If you do crash into another couple ask their forgiveness and continue to dance.

Dress
As with the non-dancing world, dress in Latin dancing is subject to fashion and changes gradually over time, but can be split into three categories, The basic principle is to dress appropriately to the type of dancing you are going to do.

General Rules
If dancing socially it is generally accepted that you can wear almost anything.

Keep in mind that the latin dance styling is done with a short above the knee skirt in mind so wearing a long dress or jeans does not show off the movements as well. Wearing the wrong pants can subtract from the dancing so test your skirt and outfit doing some basic latin movements in front of the mirror. You will see that most dancers that have been dancing for a couple of years have very specific skirts that they dance with specifically for this reason.

As a general rule it is a good idea to wear a short skirt. Keep in mind that the skirt will lift and you have to wear appropriate undergarments or a skirt that will not lift when turning rapidly. As far as shoes go, a medium heel sandal is recommended with straps to hold the foot in place, paying special attention that the straps hold the ankle in place.

Practice Wear
If you are practicing the best shoes are the shoes you'll be wearing when competing; unfortunately you will be spending many hours practicing and this will use up your shoes quite quickly. A good practice is to have a pair of practice shoes with the same fit and balance as the shoes you will be wearing on the competition floor. Most couples migrate their old competition shoes to the practice floor as they buy new shoes.

There are some practice shoes available that are softer. This is not a good idea if you are still competing but they are very useful when you have sustained some injury or are just quickly rehearsing your routines. If you are actually practicing try to use shoes as close to the competition floor as possible. In lessons always wear competition shoes.

As far as skirt goes please wear one especially to class. It is important to see the legs move to get the right movement. As the ladies' legs are showing when competing, the leg should be showing when practicing as well. The skirt is also important as this can be used to enhance the dance and the lady needs to get used to the feel of a skirt and what it does in certain movements.

Again follow the general rule of keeping in mind that your skirt will be lifting. If you are comfortable with you body a leotard with a dancing skirt is the best outfit to practice in as you can see the body movement properly. If you are uncomfortable with your body come in a tight fitting top. Also keep in mind that you have to wear the leotard at some stage in class so your teacher can help you with the correct body movement.

Hair preferably in a bun or similar; in practice you can loosen it and tighten it as necessary. The idea is to see the neck so hair up is always better. Depending on what you are working on this is not always necessary but do it if at all possible.

The general rule when practicing is come as a dancer.

Lounge/Party Dress
If you plan on dancing again a medium to high heel sandal or shoe that holds the foot firmly is preferred. Obviously if your dancing shoes are of an appropriate type you are welcome to wear them. Do not wear heavy shoes, shoes with high base or boots.

Keep in mind when choosing your footwear that this is one of the criteria gentlemen use to choose a lady to dance. Foot wear appropriate to dancing indicates a willingness of the lady to dance. It also indicates an ability and some knowledge of dancing.

I personally prefer a skirt or short dress as it shows of the movement of the body much better. Also most ladies look good in dresses. Obviously you have to dress appropriately for the situation but avoid denim and non stretching outfits that restrict your movement. It looks and is uncomfortable to dance in especially if you move around the floor.

As far as the top goes avoid strapless dresses or tops. Make sure that the top will not move easily when a hand moves on your back. Loose tops only work if you have appropriate undergarments as they will move while dancing. Keep in mind that you will be perspiring at some stage and both your dress and top must be chosen appropriately if this might embarrass you.

Undergarments are very important for the lady, especially when wearing a dress. Keep in mind that you will be moving quite a lot and you need to plan for your skirt and top to move. So expect glimpses of your undergarment to show. Make the assumption that your dress will lift and that your top will move. Therefore dress with what you are comfortable having other people see.

I have danced with some really brilliant ladies that simply would not go to a club after being embarrassed by tops moving more than expected and skirts lifting higher than expected. Try and avoid this from the beginning.

Competition dress
Here things become a bit different and we will dress according to the regulations of the dancing body that we have joined.

The general principles guiding you are:

1. Try to emphasize your good physical attributes - show off a beautiful stomach or back if you have it.

2. Try to deemphasize your bad physical attributes - if you are a tad overweight do not show the hips.

3. Make sure that your outfit attracts attention. Judges want to see you and if your outfit does not stand out it automatically puts you at a disadvantage.

4. Make sure the outfit moves as expected, dance a dress rehearsal and make sure any items that can come off are secure.

The Dances
Because latin dance is a visual and emotional medium it is very hard to describe the actual movements. It is much easier to understand and copy a step when it is presented in a DVD, video or instruction. There are a couple of drawbacks to this though.

Instruction depends on the experience of your teacher and although most teachers will mention everything, as dancers we tend to forget and often a small thing mentioned years ago makes a big impact when you dance the more advanced work.

The drawback of DVDs and videos is that as an unexperienced dancer you miss the actual movement. You will see a huge hip movement and try to emulate it although the movement is a result of balance point changes on the feet. Videos also tend to be short on details.

So in books we describe in diagram form all these little nuances. But we miss out on the visual and emotional aspects as these can only be expressed in a medium like video.

Describing Variations
The standard way to describe latin and ballroom dances is to build a diagram with each beat of a step defined in terms of different aspects eg. foot placement, heel foot, weight distribution etc. Unfortunately for beginner dancers, it is almost impossible to keep all this in your head and not feel overwhelmed. It also frequently happens that beginner dancers would focus on the wrong aspect of the movement, not developing the most important points first. So in describing the figures later in this book we will also use a diagram system but we will attempt to modernize it firstly. Secondly we might in the Bronze (Beginner) section only mention the feet placement and mostly leave out the hip movement that we will describe in later chapters more fully.

Bronze
1. Basic balance 2. Foot placement and action 3. Partner relationship and direction 4. Posture 5. Basic timing 6. Musicality 7. Rhythm

Silver
1. Basic hip movement developed from feet 2. Partner contact 3. Suggested basic arm movements 4. Stretch and feel of variations 5. Basic leg movement 6. Timing

Gold
1. Development of hip movement 2. Upper body movement 3. Interpretation of dance music and performance 4. Advanced timing 5. Head movement

/Cha Cha Cha/
Cha Cha is often the first dance a beginner will learn when they take up Latin dancing. The "two-three-cha-cha-cha" rhythm and 'chasse' (often called by instructors as side-close-side, though technically, the second step is only a partial close {This depends on the technique book used}) characterize this dance. It is danced in 4/4 time, usually at a 30-32 bars per minute tempo. The tempo, coupled with the character of the music leads to a dance that is often characterized as "cheeky" with the woman adopting a flirtatious manner, teasing the man.

/Rumba/
Rumba is often danced as a "cha cha without the cha chas", and whilst this may appear correct, there are major differences, largely in the presentation of the dance. It is known as the dance of love, danced to sexy, sultry 4/4 music at a tempo of 26/27 measures per minute (105 bpm).

/Samba/
Originally a carnival dance from Rio de Janeiro, Samba is one of only two traveling dances in this genre. Like most traveling dances the dancers travel counter-clockwise around the floor.

/Jive/
Fastest of all the Latin dances and the least Latin as well. Jive and swing are similar in patterns but the Jive basic starts with a back rock instead of a triple step. Jive is know for the quick, pulsating leg action with a calm, steady upper-body. As with most Latin dances, the upper body remains at a fairly steady level.

Paso Doble
A dance based on the Spanish bullfights but actually originating in French nightclubs. Not at all like the "Two Step" American country dance, Paso focuses on pageantry and flamboyance.

title: International Latin Technique


text:
International Latin Technique/Cha Cha Cha

Cha Cha Cha is often the first dance a beginner will learn when they take up latin dancing. The "two-three-cha-cha-cha" rhythm and 'chasse' (side-close-side step) characterise this dance. It is danced in 4/4 time, at competition to a tempo of 30-33 measures per minutes (120 bpm).

History of the Dances
Cha cha cha is a true latin dance. Originating in Cuba, it developed from the danzon, an older form of Cuban dance. In 1952, dance teacher Pierre Margolie visited Cuba and saw what appeared to him as a Rumba with extra beats. On returning to England he started teaching this dance separately, and the cha cha cha became a popular dance in its own right.[]

The name is said to arise from the sound of sandals slapping against the floor in the cha cha chasse.

Mood of the Dance
The cha cha should be a very cheeky, sassy dance and quite fast with your feet. The dancers should be lively and interplay should be strong, though independent. Eye contact is important throughout the dance, and conveys the sexual tension between dancers.

Basic Steps
As dance instruction studios started springing up they often developed their own names for various steps. Names also differ if you are taught using an International syllabus. Therefore the names below may be very different than those you are used to.

Start again from Measure 1, Beat 2.

Footwork
In general, the footwork technique in latin dances is to place the ball of the foot first, then to lower the weight onto it, whilst squeezing down the heel. Feet should be placed a comfortable distance from the base (i.e. below the hips), not too close as a full movement cannot be developed; but not too far as though this can look impressive, the recovery from a wide step can take too long and therefore leave a person chasing the music.

Legs
In general, the basic technique taught to beginners is to keep the supporting leg straight. A more advanced dancer however might like to try to keep both legs as straight as possible throughout the dance. As with all latin dances, knees and thighs should pass one another quite tightly, and though feet should be turned out, this should not be to the extent of exposing the inner thigh. If the inner thigh is exposed the legs can bow, and an undesirable gap between legs is often visible, breaking the line from head to toe.

On taking a step in front of the body, like in the basic step, knees should lock together - you should feel the knee of the trailing leg in the crook of the leg that is in front (whilst remembering to keep them straight).

Hips
For a cha cha, hips should move smoothly in a figure of 8 movement. It is from hip motion that leg and weight placement should arise. Again, taking an example of the basic figure of this dance: On the back step, commencing it weight should be totally over the supporting leg. Foot and thigh should then be glided backwards away from body, and weight transferred onto them by rolling the hip round in front and out past the leg. To recover from the position, the hip should be rotated across the other leg, bringing weight back over the stationary leg and completing a figure of 8 with the hips.

In general, hips should not rise or fall, but stay on approximately the same horizontal level. The bottom half of the body (i.e. navel down) should be isolated from the chest and shoulders, which should remain primarily still. Movement should still be carried through, e.g. from the feet, but in a main, arms and chest line should be strong, focussing on opening out his body and asserting masculinity. The lady can afford to be more insular, using her arms to focus attention on her womanly bosom, wiggling her hips and bottom somewhat more with this movement carrying through her body.

Timing
As a beginner, spending a whole beat on steps 2 and 3, and half a beat each on 4, & and 1 is perfectly acceptable. However, as your dancing improves and matures, then so will the phrasing of your cha cha. There are a few considerations to take into account here, which generally are accepted as advanced technique:

 * The moving step (i.e. forward or backward on a basic - generally beat 2 of a bar) earns more of a developed movement than a simple replacement of weight and so spend more time on this.
 * On a cha cha chasse, the first two steps should be slightly smaller than the final step (see basic steps) and this lends more time to be taken over the final step, which produces a more developed cha cha phrasing.

Basic and Standard Figures
As previously mentioned the figures are grouped in on interpretation of what should be learned at what level. This gives a good indication for a dancer still learning the ropes the order and difficulty level of each variation.

General Notes
The cha-cha-cha basic is danced with the lady in the closed position. The lady is held in closed hold with the man stepping to the side on the 1. Forward on 2 back on 3 and to the side on 4&. This happens in the opposite for the back step. Like most descriptions it is difficult to imagine without you actually seeing it.

One of the main things a beginner should learn is the straight leg action on the 123 of the cha-cha-cha. The leg is actually locked which translates quite naturally into the hip action. To get the movement sharper the 1 can be delayed to allow the foot to shoot forward for the to or backwards for the 2. Keep the foot not carrying the weight straight and pointed.

Feet and Legs
Man 1 side with R foot 2 Forward left foot 3 Back R foot 4 Side left foot (small step) & Close R to Left foot 1 side with L Foot 2 Back with R Foot 3 Forward with L Foot 4 Side right foot (small step) & Close L foot R foot

Head
This figure is dance in the closed hold therefore the partner are in front of each other and they are looking into each others eyes.

Arms
This is a closed hold therefore the mans left hand is holding the ladies right hand and the mans right hand is placed on the ladies left shoulderblade. The ladies left hand is placed on the man's upper back, behind his shoulder.

 * Time Step
 * Switch Turns
 * underarm Turns Right and Left
 * New York (Open Counter Promenade into Open promenade)
 * Hand to Hand
 * Three Cha cha cha's (Forward and backward and in CP and OPP)
 * Shoulder to Shoulder
 * There and Back

Bronze

 * Shoulder to Shoulder (From Hockey Stick)
 * Open Basic
 * Side Steps(Left and Right)
 * Spot Turns(Left and Right)
 * Fan (From closed hold Compact Chasse only)
 * Alemana
 * Hockey Stick(Compact Chasse only)
 * Natural Top (in Full)
 * Natural Opening out Movement
 * Close Hip Twist

Silver

 * Closed Hip Twist
 * Open Hip Twist
 * Reverse Top
 * Opening Out from Reverse Top
 * Aida
 * Spiral
 * Curl
 * Rope Spinning
 * Cross Basic (no Quapacha timing, no Underarm Turn)
 * Cuban Breaks (Including Split Cuban Breaks)
 * Ronde, Twist & Slip Chasse

Gold

 * Alemana (Right to Right hand hold)
 * Chase
 * Advanced Hip Twist
 * Turkish Towel
 * Sweetheart
 * Follow My Leader
 * Foot Changes
 * Cross Basic (with Underarm Turn and Guapache timing may be used)
 * Runaway Chasse
 * Syncopated Open Hip Twist
 * Advanced Hip Twist

Basic (Closed) *
 * In Place
 * Side Basic
 * Open Basic

Time Step *

Spot Turns (Solo):
 * to Left #
 * to Right $

Under Arm Turns:
 * to Right #
 * to Left $

New Yorks:
 * Check from Open CPP $
 * Check from Open PP #

Hand to Hand; Also with Three Cha Cha Chas$#

Cross Basic *#; Also with Lady's Solo Turn

Fan #*

Alemana : Finish A#; Finish B:
 * from Fan Pos
 * from Open (Facing) Pos

Hockey Stick #

Natural Top : Finish A; Finish B

Opening Out to Right

Close (Closed) Hip Twist #: Basic; Advanced

Open Hip Twist #

Cuban Breaks:
 * in Open Pos
 * in Open CPP
 * in Shadow Pos on Same Foot

Split Cuban Breaks:
 * in Open CPP
 * from Open CPP and Open PP
 * from Open PP and Open CPP
 * in Shadow Pos on Same Foot

Three Cha Cha Chas : Fwd; Bwd; CPP; PP

Shoulder to Shoulder

Turkish Towel *

Methods of Changing Feet/Foot Changes

Reverse Top

Spiral

Rope Spinning

Sweetheart

Follow My Leader

Close Hip Twist Spiral

Open Hip Twist Spiral

Curl #

Aida

Opening Out from Reverse Top


text:
Playful Organizing/Integrating Technology

A Personal Example

Problem: I could not come up with one satisfactory way to store my personal email addresses and phone numbers. I kept changing systems using scraps of paper, etc. This has been going on for years and was very frustrating for me. Finally my professional organizer and I designed a system that I am using and am very happy with.

The requirements were: That the system had to be accessible electronically from both work and home and that each place also had to have back up hard copies. The system had to be periodically updated by the reminder system and collection storage folders until updated.

We decided to use Yahoo! address book, note book, calendaring and email system. I store my pieces of paper with addresses, etc., in a file folder which we use to update the address book once every three weeks at a minimum and print out hard copies that I store in my work notebook and my home collection folder. That was the clincher which sold me on the approach, when my professional organizer agreed to help me update the file. That was the part I was dreading. (Note: look for those personal barriers that are lurking in the shadows!).

What I love about it is that I can access my personal system on-line from both work and home and any place that I can be on-line.

I also consolidated all my bookmarks from outlook onto Yahoo! and use that one system to store my common bookmarks.

My thought keeps going to the hand-held phone/PC that can access on-line pretty much anywhere. But I am happy with my system for now as is.

Another example of the use of technology is our use of Amazon.com to locate books. Some of us are especially fond of using the book reviews and "Lists" feature to locate interesting books. People who like books I like tend to recommend other books that I like.

We can C to copy the title then switch to our local library home page and search. If the book is found, I can request that the book be sent to my local branch. They email me when it has arrived. If my local library system does not have the book I can request it through the library via interlibrary loan. Then, if I must own my very own copy, I can purchase it via Amazon.

Amazon also can be used to inventory your books, by creating lists of 25 books each.