|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface RequestProcessorFactoryFactory
The request processor is the object, which is actually performing
the request. There is nothing magic about the request processor:
It may very well be a POJO. The RequestProcessorFactoryFactory
is passed to the AbstractReflectiveHandlerMapping
at startup.
The mapping uses this factory to create instances of
RequestProcessorFactoryFactory.RequestProcessorFactory
, which are used to initialize
the ReflectiveXmlRpcHandler
. The handler in turn uses its
factory to create the actual request processor when a request comes
in.
However, the question arises, when and how the request processor
is created and whether it needs request specific initialization.
The RequestProcessorFactoryFactory
is an object, which makes
that logic pluggable. Unfortunately, we aren't done with a single
factory: We even need a factory for factories. The rationale is
best explained by looking at the different use cases and how to
implement them.
The default RequestProcessorFactoryFactory
is the
RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory
. It creates a new
processor instance for any request. In other words, it allows the
request processor to have some state. This is fine, if the request
processor is a lightweight object or needs request specific
initialization. In this case, the actual request processor is
created and invoked when
calling RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest)
.
An alternative implementation is the
RequestProcessorFactoryFactory.StatelessProcessorFactoryFactory
, which may be used to
create stateless request processors. Stateless request processors
are typically heavyweight objects, which have an expensive
initialization phase. The processor factory, which is created by
getRequestProcessorFactory(Class pClass)
contains an
initialized singleton, which is returned by
RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest)
.
Other alternatives might be a
RequestProcessorFactoryFactory
, which maintains a pool
of RequestProcessorFactoryFactory.RequestProcessorFactory
instances. The instances are
configured by calling
RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest)
.
Nested Class Summary | |
---|---|
static interface |
RequestProcessorFactoryFactory.RequestProcessorFactory
This is the factory for request processors. |
static class |
RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory
This is the default implementation of RequestProcessorFactoryFactory . |
static class |
RequestProcessorFactoryFactory.StatelessProcessorFactoryFactory
This is an alternative implementation of RequestProcessorFactoryFactory . |
Method Summary | |
---|---|
RequestProcessorFactoryFactory.RequestProcessorFactory |
getRequestProcessorFactory(java.lang.Class pClass)
This method is invoked at startup. |
Method Detail |
---|
RequestProcessorFactoryFactory.RequestProcessorFactory getRequestProcessorFactory(java.lang.Class pClass) throws XmlRpcException
pClass
.
XmlRpcException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |