Conference Management System Essay
Sorry, but copying text is forbidden on this website!
In Java EE 6, JAX-WS provides the functionality for “big” web services, which are described in Chapter 19, Building Web Services with JAX-WS. Big web services use XML messages that follow the Simple Object Access Protocol (SOAP) standard, an XML language defining a message architecture and message formats. Such systems often contain a machine-readable description of the operations offered by the service, written in the Web Services Description Language (WSDL), an XML language for defining interfaces syntactically. The SOAP message format and the WSDL interface definition language have gained widespread adoption.
Many development tools, such as NetBeans IDE, can reduce the complexity of developing web service applications. A SOAP-based design must include the following elements.
• A formal contract must be established to describe the interface that the web service offers. WSDL can be used to describe the details of the contract, which may include messages, operations, bindings, and the location of the web service. You may also process SOAP messages in a JAX-WS service without publishing a WSDL.
• The architecture must address complex nonfunctional requirements. Many web service specifications address such requirements and establish a common vocabulary for them. Examples include transactions, security, addressing, trust, coordination, and so on. • The architecture needs to handle asynchronous processing and invocation. In such cases, the infrastructure provided by standards, such as Web Services Reliable Messaging (WSRM), and APIs, such as JAX-WS, with their client-side asynchronous invocation support, can be leveraged out of the box. RESTful Web Services
In Java EE 6, JAX-RS provides the functionality for Representational State Transfer (RESTful) web services. REST is well suited for basic, ad hoc integration scenarios. RESTful web services, often better integrated with HTTP than SOAP-based services are, do not require XML messages or WSDL service–API definitions. Project Jersey is the production-ready reference implementation for the JAX-RS specification. Jersey implements support for the annotations defined in the JAX-RS specification, making it easy for developers to build RESTful web services with Java and the Java Virtual Machine (JVM). Because RESTful web services use existing well-known W3C and Internet Engineering Task Force (IETF) standards (HTTP, XML, URI, MIME) and have a lightweight infrastructure that allows services to be built with minimal tooling, developing RESTful web services is inexpensive and thus has a very low barrier for adoption. You can use a development tool such as NetBeans IDE to further reduce the complexity of developing RESTful web services. A RESTful design may be appropriate when the following conditions are met.
• The web services are completely stateless. A good test is to consider whether the interaction can survive a restart of the server. • A caching infrastructure can be leveraged for performance. If the data that the web service returns is not dynamically generated and can be cached, the caching infrastructure that web servers and other intermediaries inherently provide can be leveraged to improve performance. However, the developer must take care because such caches are limited to the HTTP GET method for most servers. • The service producer and service consumer have a mutual understanding of the context and content being passed along. Because there is no formal way to describe the web services interface, both parties must agree out of band on the schemas that describe the data being exchanged and on ways to process it meaningfully. In the real world, most commercial applications that expose services as RESTful implementations also distribute so-called value-added toolkits that describe the interfaces to developers in popular programming languages.
Rather than starting from scratch, services can be exposed with XML and consumed by HTML pages without significantly refactoring the existing web site architecture. Existing developers will be more productive because they are adding to something they are already familiar with rather than having to start from scratch with new technology. RESTful web services are discussed in Chapter 20, Building RESTful Web Services with JAX-RS. This chapter contains information about generating the skeleton of a RESTful web service using both NetBeans IDE and the Maven project management tool.
Deciding Which Type of Web Service to Use
Basically, you would want to use RESTful web services for integration over the web and use big web services in enterprise application integration scenarios that have advanced quality of service (QoS) requirements. • JAX-WS: addresses advanced QoS requirements commonly occurring in enterprise computing. When compared to JAX-RS, JAX-WS makes it easier to support the WS-* set of protocols, which provide standards for security and reliability, among other things, and interoperate with other WS-* conforming clients and servers.
• JAX-RS: makes it easier to write web applications that apply some or all of the constraints of the REST style to induce desirable properties in the application, such as loose coupling (evolving the server is easier without breaking existing clients), scalability (start small and grow), and architectural simplicity (use off-the-shelf components, such as proxies or HTTP routers). You would choose to use JAX-RS for your web application because it is easier for many types of clients to consume RESTful web services while enabling the server side to evolve and scale. Clients can choose to consume some or all aspects of the service and mash it up with other web-based services.
Types of Web services
You can host simple Web services without the needing complex setup. In addition, experienced Web service developers can host more complex services by handling the deployment details themselves. Types of Web services include simple and complex:
Simple Web services
For simple Web services, only simple data types (string, int, and other types) are sent or received as arguments and values that are returned from methods. You must specify the Java class that provides the implementation for the Web service. InfoSphere™ MDM Server for PIM handles generating any WSDL, and creating any WSDD (Web Services Deployment Descriptor) for the deployment of the service.
Complex Web services
For more complex Web services, you provide WSDD to configure the ability to send and receive more than simple types. You author and provide the WSDD in the WSDD field in the Web Service Console, or through the WebService::setWsddDocPath() script operation. IBM® InfoSphere Master Data Management Server for Product Information Management uses the WSDD to deploy the defined service instead of using default WSDD for IBM InfoSphere Master Data Management Server for Product Information Management. You must have a good understanding of Web services to author your WSDD. You must also know the Java2WSDL, and WSDL2Java tools in case you break your deployment with the complex Web service.+
Big web services
Big web services are based on SOAP standard and often contain a WSDL to describe the interface that the web service offers. The details of the contract may include messages, operations, bindings, and the location of the web service. Big web services includes architecture to address complex non-functional requirements like transactions, security, addressing, trust, coordination, and also handles asynchronous processing and invocation. The SOAP message format and the WSDL interface definition language have gained widespread adoption in traditional enterprises. SOAP based Web Services is a great solution when you need, • Asynchronous processing
• Stateful operations – If the application needs contextual information and conversational state management then SOAP 1.2 has the additional specification in the WS* structure to support those things (Security, Transactions, Coordination, etc).
RESTful Web Services
RESTful web services are based on the way how our web works. Our very own world wide web (www) – the largest distributed application – is based on an architectural style called REST – Representational State Transfer. REST is neither a standard nor a protocol. It is just an architectural style like say for example client-server architecture (client-server is neither a standard nor a protocol). Web services following this architectural style are said to be RESTful Web services. So what is this REST? According to Roy Fielding who coined this term, “Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: Presented with a network of web pages (a virtual state-machine), the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use.” In the web, everything is identified by resources.
When we type a URL in the browser we are actually requesting a resource present on the server. A representation of the resource (normally a page) is returned to the user which depicts the state of the application. On clicking any other link, the application transfers state with the new representation of the resource. Hence the name Representational State Transfer. REST-style architecture follows this concept and consists of clients and servers. Clients initiate requests to servers; servers process requests and return appropriate responses.
Requests and responses are built around the transfer of representations of resources which are identified by URI (Uniform Resource Identifier). RESTful web services are based on HTTP protocol and its methods mainly PUT, GET, POST, and DELETE. These web services are better integrated with HTTP than SOAP-based services are, and as such do not require XML SOAP messages or WSDL service definitions. Because RESTful web services use existing well-known standards (HTTP, XML, URI, MIME) and have a lightweight infrastructure that allows services to be built with minimal tooling, developing RESTful web services is inexpensive and thus has a very low barrier for adoption.
RESTful Web Service HTTP methods
A RESTful web services is a collection of resources. For example, consider an office has deployed a web services to get a list of employees and to get individual employee data for use with other departments. The web service makes available a URL to a ‘list of employees’ resource. For example, a client would use this URL to get the employee list: http://www.example.com/myoffice/employees
On sending a request to that particular URL, the client would receive the following document.
|1| | |2|234 |
The above document contains the links to get detailed info about each employee. This is a key feature of REST. The client transfers from one state to the next by examining and choosing from among the alternative URLs in the response document. To get individual employee information, the web service makes available a URL to each employee resource. For example, to get employee information whose id is 237, the client may send a request to the following URL: http://www.example.com/myoffice/employee/237
And the response document containing the employee information may be as follows: |1 | |
|2 |237 | |3 |xyz | |4 |abc | |5 |123 ABC St | |6 |3344.56 | |7 | |
We have seen the use of HTTP GET method to get the information. In the same way, we can use the other HTTP methods like POST, PUT and DELETE. The logical meaning of these HTTP methods for the URL http://www.example.com/myoffice/employees is as follows, • When a HTTP POST request is sent to the above URL with an employee data, the data will be added to the employee list. • When a HTTP PUT request is sent to the above URL with a list of employees then the original list will be modified with this employee list. • When a HTTP DELETE request is sent to the above URL then the entire list of employees will be deleted. Similarly for the URL http://www.example.com/myoffice/employee/237 the actions may be interpreted as follows,
• When a HTTP POST request is sent to the above URL, treat the addressed member as a collection in its own right and create a new entry in it. o For example consider a situation where the employee works in a particular department and the URL http://www.example.com/myoffice/dept/A1205 represents the list of employees working in department A1205. So a POST request to this URL with employee data will add an employee data to that particular department.
• When a HTTP PUT request is sent to the above URL then modify that particular employee with the new request data or create if employee does not exist. • When a HTTP DELETE request is sent to the above URL then delete that particular employee. In this REST form of communication, the service producer and service consumer should have a mutual understanding of the context and content (XML) being passed along. Because there is no WSDL to describe the web services interface, both parties must agree on the schemas that describe the data being exchanged and on ways to process it meaningfully. A RESTful design may be appropriate when,
• The web services are completely stateless. • The data that the web service returns is not dynamically generated and can be cached. o The caching infrastructure that web servers provide can be leveraged to improve performance. However, the developer must take care because such caches are limited to HTTP GET method for most servers. • The service producer and service consumer have a mutual understanding of the context and content being passed along. • Bandwidth is particularly important and needs to be limited. o REST is particularly useful for limited-profile devices, such as PDAs and mobile phones, for which the overhead of headers and additional layers of SOAP elements on the XML payload must be restricted. • Web service delivery or aggregation into existing web sites is to be enabled.