Declare Method Arguments nal
Declare method arguments final if they are not modied in the method. In general, declare all
variables final if they are not modied after being initialized or set to some value.
Synchronize Only When Necessary
Do not synchronize code blocks or methods unless synchronization is required. Keep
synchronized blocks or methods as short as possible to avoid scalability bottlenecks. Use the
Java Collections Framework for unsynchronized data structures instead of more expensive
alternatives such asjava.util.HashTable.
Use DataHandlers for SOAP Attachments
Using a javax.activation.DataHandler for a SOAP attachment will improve performance.
JAX-RPC species:
■
A mapping of certain MIME types to Java types.
■
Any MIME type is mappable to a javax.activation.DataHandler .
As a result, send an attachment (.gif or XML document) as a SOAP attachment to an RPC style
web service by utilizing the Java type mappings. When passing in any of the mandated Java type
mappings (appropriate for the attachment’sMIME type) as an argument for the web service, the
JAX-RPC runtime handles these as SOAP attachments.
For example, to send out an image/gif attachment, use java.awt.Image, or create a
DataHandler wrapper over your image. The advantages of using the wrapper are:
■
Reduced coding: You can reuse generic attachment code to handle the attachments because
the DataHandler determines the content type of the contained data automatically. This
feature is especially useful when using a document style service. Since the content is known
at runtime, there is no need to make calls to attachment.setContent(stringContent,
"image/gif"), for example.
■
Improved Performance: Informal tests have shown that using DataHandler wrappers
doubles throughput for image/gif MIME types, and multiplies throughput by
approximately 1.5 for text/xml or java.awt.Image for image/* types.
Java Server Page and Servlet Tuning
Many applications running on the Enterprise Server use servlets or JavaServer Pages (JSP)
technology in the presentation tier. This section describes how to improve performance of such
applications, both through coding practices and through deployment and conguration
settings.
JavaServerPageand ServletTuning
Chapter2 • TuningYourApplication 29