Dan Haywood created ISIS-866:
--------------------------------
Summary: Request-scoped service should be told when the request is
starting and stopping.
Key: ISIS-866
URL: https://issues.apache.org/jira/browse/ISIS-866
Project: Isis
Issue Type: Improvement
Components: Core
Affects Versions: core-1.6.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
Fix For: core-1.7.0
For @RequestScoped services, Isis creates a proxy that implements the
RequestScopedService interface (in Isis core-runtime), which defines
__isis_startRequest and __isis_stopRequest. These methods are then called when
the Isis session (=request scope) is created so that the proxy can instantiate
a service for the duration of the request, bound to the thread-local.
HOWEVER...
The underlying service doesn't actually know it has been created/a request is
started. It isn't possible to put logic in the constructor, because that stuff
is also called by the proxy wrapper.
SO...
Define a new interface (in applib) that can be optionally implemented by
@RequestScoped services (or might even be an equivalent facet); if the service
implements, then have the proxy wrapper call it. eg:
public interface RequestScoped {
public void startRequest();
public void endRequest();
}
--
This message was sent by Atlassian JIRA
(v6.2#6252)