public interface IscServer
The Smart GWT Server can be
integrated into any pre-existing Java
application, and is designed to rapidly connect Smart GWT visual components to pre-existing
Java business logic or persistence engines. Smart GWT's Ajax request processing facilities can
be easily integrated into
controllers or custom servlets and JSPs.
Alternatively, the Smart GWT Server provides a complete SQL and Hibernate-based persistence engine for new applications, with out-of-the-box servlets for processing Ajax data requests.
The Smart GWT Server is optional, and Smart GWT's client-side Ajax engine can be integrated with any server that provides HTTP access, using XML, JSON, SOAP or proprietary data protocols. However any server in a modern web application will be required to provide most or all of the features of the Smart GWT Server (described below), and the Smart GWT Server represents a best-of-breed implementation of these facilities with a long history of high-volume production deployments.
Data passed from the browser can be automatically validated by the Smart GWT Server. In
contrast, when using
integration, data arrives as HTTP params or XML messages, and you must parse values into the
correct types (eg java.util.Date) and validate them, or use a server framework that does so.
The Smart GWT Server delivers data to and from the browser using a proprietary, maximally efficient protocol, providing simple Java APIs for sending and receiving data.
Smart GWT's data protocol is:
extracting only the data you want the
browser to see
Smart GWT provides special
client and server-side support for
file\n upload, which
allows single and multiple-file HTTP uploads to be performed as a background Ajax request
without reloading the page or launching sub-windows.
Uploaded files arrive at the Smart GWT server as Java InputStreams accessible from the DSRequest object, and can optionally be automatically stored via Smart GWT's SQL subsystem.
Any request transmitted to the Smart GWT Server can be combined into a
"queue" transmitted as a single HTTP request, with in-order execution for all queued
startQueue() starts a queue
sendQueue() transmits it; queuing is
transparent to the code that initiates the individual requests. This enables:
In addition to the existing Smart GWT Server status reporting protocols, we have introduced HTTP response headers to provide top-level status reporting. These headers report status for both single requests and "queues" of requests transmitted as a single HTTP request:
header provides a single response status for individual requests. In the context of a "queue"
of requests, it reports the status of the first "failure" response for non transactional
"queues" of requests and general
STATUS_FAILURE for the transactional "queue" of requests.
x-isc-server-queue-status: This header contains a comma-separated array of statuses. For single responses, it contains just one status. However, in the case of a "queue" of requests, it holds a comma-separated array of statuses, providing statuses for the entire "queue."
These headers report
RPC Response status codes,
for example headers:
STATUS_VALIDATION_ERROR for one of
requests in the "queue" of submitted requests.
These headers serve multiple purposes, including aiding in test scenarios by allowing you to access server status information without relying on the undocumented details of the iscServer protocol, which are subject to change without prior notice. Additionally, when dealing with download and export requests, these headers enable client-side code to skip the extraction of text from a blob in order to capture error responses efficiently.
Reify is included with the Smart GWT Server, and uses server features such as automatic SQL
binding to provide a rapid prototyping environment.
Provides a powerful, type-safe
data transmission mechanism for moving data between
a Java server and the browser.
DataSources of serverType:"sql"
or serverType:"hibernate" can generate and execute queries against popular SQL engines or
against the Hibernate ORM system, providing Smart GWT's
DataBoundComponents with the four standard CRUD operations
(create, retrieve, update, delete) without writing any server-side code. For rapid
prototyping, these DataSources can even generate SQL tables based on the DataSource
declaration, using the
Admin Console visual tool.
Server-side APIs allow server-side modification of the request before it is executed (for example, to enforce security) and post-processing of the request after execution (for example, to provide calculated values).
The Smart GWT Server provides a standardized request and response protocol designed for data-oriented "CRUD" operations (create, retrieve, update, delete).
protocol automatically handles
(paging parameters, requested sort order, original values of data being modified) and
response metadata (error handling, cache management,
session expiration etc).
This standardized protocol avoids developers in different groups inventing their own incompatible and redundant request/response protocols, and allows developers to more easily learn code they didn't author.
Most UI designs do not directly reflect the underlying Object model and so some degree of translation is necessary in order to populate UI components with data and apply user changes to the Java Object model. This is often accomplished with brittle, difficult to understand data translation code sprinkled throughout the system, done in a different way for every screen or component.
Smart GWT provides a standard,
XPath-based approach to adapting any
Java-based Object model to the requirements of the UI design. Data relevant to the application
UI is centrally extracted in the server-side
so that all UI components have a consistent, unified view of the data model for both loading
and saving data.
The Smart GWT Server
can compensate for facilities
disabled in certain browsers, including ActiveX being disabled in IE6 and missing XML support
in some versions of Apple's Safari browser.
Proxying allows Smart GWT applications to
access web services, RSS feeds, HTML content and other data services in a secure manner
regardless of where they are located: across the enterprise or publicly available.
Messaging module allows the
server to "push" messages to the client, without client polling, for real-time