BAM (Brokered Agent Messaging) is a
simplified messaging API designed around federated, addressable
services, model-based messages, and supports both
message and rpc-style communication. As an abstraction of the Jabber
protocol, it supports instant messaging, queued (SEDA) services,
publish/subscribe, interactive games, and event notification
applications. BAM supports multiple protocols including local
messaging, Hessian protocol and XMPP (Jabber).
Server caching can speed dynamic pages to
near-static speeds. When pages created by database
queries only change every 15 minutes, e.g. CNN or Wikipedia
or Slashdot, Resin can cache the results and serve them
like static pages. Because Resin's caching only depends on
HTTP headers, it will work for any JSPs, servlet
or PHP page.response.
Resin's caching operates like a proxy cache, looking at HTTP
headers to compare hash codes or digests or simply caching for
a static amount of time. Since the proxy cache follows the HTTP
standards, applications like Mediawiki will automatically see
dramatic performance improvement with no extra work. You can even
cache REST-style GET requests.
Because the cache supports advanced headers like "Vary", it can
cache different versions of the page depending on the browser's
capabilities. Gzip-enabled browsers will get the cached compressed
page while more primitive browsers will see the plan page. With
"Vary: Cookie", you can return a cached page for anonymous users,
and still return a custom page for logged-in users.
Resin's EJB support is integrated
with Resin IoC. This integration means
plain Java beans can use EJB annotations and interception, EJBs can
use Resin IoC annotations, and both kinds of beans can be configured
directly from the resin-web.xml or discovered by classpath
scanning.
Resin's embedding API lets developers embed Resin as the web interface
for an existing application, simplifies unit testing, and improves
IDE integration capabilities. The ResinEmbed JavaDoc gives more details.
Hessian and Burlap are compact binary and XML protocols for
applications needing performance without protocol complexity.
Hessian is a small binary protocol. Burlap is a matching XML protocol.
Providing a web service is as simple as creating a servlet.
Using a service is as simple as a JDK Proxy interface.
- Hessian
- Hessian 1.0 spec
- Hessian 2.0 draft spec
- Java Binding
- Burlap
Resin is designed around the Java Dependency Injection specification
(JSR-299), an inversion-of-control framework used for all configuration
and resources including servlets, EJBs, messaging,
remoting, and databases. Applications can take advantage of Java
Injection using standard annotations and interfaces.
Since CanDI is used for servlets, managed beans and EJBs, any application
bean can use EJB annotations like @TransactionAttribute or CanDI
@InterceptionTypes or event @Observes capabilities, in addition to the
dependency injection and IoC configuration.
The dependency injection framework is type-safe, meaning the registry
is organized around Java types, not a flat namespace, which gives more
power and flexibility for component assembly.
Since injection is annotation-based, most components can avoid XML
configuration, while XML is still available for components.
JSP creates output (such as HTML) from template
text and scripting actions. Template text is returned
verbatim to the requesting client, and actions are used to fill
in dynamic values and do things conditionallly.
- Introduction
- Compilation
- EL
- JSTL
- Directives
- Variables
- Actions
- Applications
- Schema for JSP-2.0 .tld files
- Velocity syntax
- JSP Templates
Resin can perform access logging, specify where JDK
logging interface messages go, and redirect the stderr and
stdout for your applications.
Configuration for Resin's JMS provider implementation. The JDBC Queues and Topics provide a persistent messaging store. The Memory Queues and Topics provide a low-overhead memory-based store.
Quercus is Caucho Technology's fast, open-source, 100%
Java implementation of the PHP language. Performance is 4x mod_php
and is comparable with PHP accelerator performance. Quercus uses
Resin-IoC/WebBeans to integrate with
Resin services.
- Security - Quercus gains security advantages from the JVM platform
- Module Status
Resin's remoting lets applications write services as plain Java
objects and export them with a choice of protocols, including
Hessian, Burlap, CXF (SOAP), XFire. Because Resin activates
the service as an IoC singleton, the service can use any of
Resin's IoC capabilities,
including dependency injection, AOP interception, EJB transactions,
and event handling.
For applications which need to use a custom protocol, making a new
driver for a protocol is also straightforward.
Resin's remoting lets applications write services as plain Java
objects and export them with a choice of protocols, including
Hessian, Burlap, CXF (SOAP), XFire. Because Resin activates
the service as an IoC singleton, the service can use any of
Resin's IoC capabilities,
including dependency injection, AOP interception, EJB transactions,
and event handling.
For applications which need to use a custom protocol, making a new
driver for a protocol is also straightforward.
Resin's server-push (Comet) servlet API enables streaming communication such
as reverse AJAX dynamic updates for browser/JavaScript applications. The API
encapsulates of the threading and communications issues between the
request threads and the rest of the application.
Servlets are Java classes which service HTTP requests. The only
requirement for writing a servlet is that it implements the
javax.servlet.Servlet interface.
Servlets are loaded from the classpath like all Java classes.
Normally, users put servlets in WEB-INF/classes so Resin will
automatically reload them when they change.
JSP pages are implemented as
Servlets, and tend to be more efficient for pages with lots of text.