The Core and Optional Smart GWT servlets
The following is a description of the servlets and filters you'll find in the web.xml file
contained in the smartclientRuntime and what they do:
Core Functionality
- Init servlet - see the article on
Smart GWT
Server Initialization
- IDACall servlet - required for
DMI
, built-in RPC operations and built-in DataSource
operations to work. All databound examples in the SDK use this servlet. If you're planning on
using a custom actionURL for all your RPC requests, then you don't need this servlet.
- FileDownload servlet - required for serving the Isomorphic framework code compressed and
with caching headers as well as for serving skin images with caching headers. It is highly
recommended that you use this for production but is not required.
- PreCache servlet - loads
resources into memory on container startup. Not required, but if you exclude this servlet
there may be a slow response to the very first request.
- jsp-config section - the iscTaglib
registration block is required to use <isomorphic> tags, and the *.isc and *.rpc
mappings. These are optional, if you want to use these as handy development tools.
Optional Functionality
- RESTHandler servlet - handles Smart GWT Server
DataSource operations issued by REST clients: it's like IDACall, but for the REST protocol.
Typically, the clients of this servlet would not be ordinary Smart GWT/SmartGWT applications
(though they could be), but other client technologies that need to access Smart GWT DataSource
operations as reusable services. If you do not plan to connect to the server using the REST
protocol, then you don't need this servlet.
- AxisServlet - exposes all DataSource operations
via a WSDL service described by SmartClientOperations.wsdl. This is effectively the same as
the RESTHandler servlet, but for SOAP clients. If you do not plan to connect to the server
using webservice protocols, then you don't need this servlet.
- HttpProxy - used by the
RPCManager when sending AJAX RPCs to a server other than the server that serves the main
application page. You need to install this servlet if, for example, your application will be
querying web services exposed by servers other than the server that is serving the rest of the
application. See the javadoc for this servlet for various configuration options, such as how
to restrict the URLs that are allowed to be proxied.
- MessagingServlet - used by the
realtime messaging system. If you're planning on using this subsystem, you'll need this
servlet.
- CompressionFilter - required if you want to use dynamic compression of html and js
files.
- JSSyntaxScannerFilter - development tool that looks for trailing commas in JS source
(scans html files for <script> tags and scans .js files in their entirety). This is a
useful development tool, but should not be included in production.
- NoCacheFilter -
development tool that makes any content it intercepts non-cacheable in order to ensure
developers are looking at the latest version of a file when modifying examples. Not for
production use.
- DataSourceLoader - a servlet that returns the definition of one or more
DataSources in JavaScript notation. This servlet is provided as an alternative to using the
<isomorphic:loadDS>
JSP tag, and is particularly suitable in environments
where JSP tags can't be used for some reason (such as with SmartGWT). See Creating DataSources
for more details.
- ScreenLoaderServlet - a servlet that returns the definition of one or more screens in
JavaScript notation.
Note that not all of the servlets and filters listed under
Optional Functionality above are present in the web.xml that ships with the
smartclientRuntime - if you need to use any of these, copy their configuration from the web.xml
available under the WEB-INF directory of smartclientSDK. Other servlets, filters and
configuration files from the smartclientSDK should not be copied to your deployment, simply
because the SDK includes many developer tools that are not extensively audited from a security
standpoint.