I think OnComplete provides an unnecessary inefficiency semantic for
interceptors. When an "OnComplete" exists, then the interceptor is
forced to service it, whether it wants it or not, all the time. Why make
the call? That's inefficient.
These interceptors are "one-way" unlike CORBA ones, which are two-way
(request/reply).
So you can give the interceptors a more proactive, preemptive semantic
in that the interceptor *assumes* the calls have followed through to the
end, *unless* told otherwise, i.e. somebody called
InterceptorChain.abort(). That's not an unreasonable assumption, and it
avoids having to making calls to OnComplete.
Perhaps an "OnAbort" is more appropriate.
Cheers,
-Polar
Liu, Jervis wrote:
Have we decided to remove OnComplete()? Quickly went through the thread [1], it shows
that we haven't reached any agreement on the proposal yet, though there are two
approaches have gained their voice. One is using OnComplete(), another is without
OnComplete(), ending interceptors will be needed whenever terminal actions are needed. As
Eoghan has pointed out, there are cases interceptor chain can be aborted in the middle of
execution thus the "ending interceptors" may never get chance to be called -
This is for HTTP 401 case. Actually I also have a similar use case: when writing an
interceptor that can do service routing [2], I will need to call
InterceptorChain.abort() on my dummy service once I have redirected the request to the
real destination. Provided the cases listed above are valid use cases, I would vote for
using OnComplete(), as this semantic allows for unwinding the chain with onComplete()
calls to the already traversed interceptors.
Any thoughts? This has been on my to-do-list for a while, so I will definitely
be volunteering to do this work.
Cheers,
Jervis
[1].
http://mail-archives.apache.org/mod_mbox/incubator-cxf-dev/200702.mbox/[EMAIL
PROTECTED]
[2]: http://cwiki.apache.org/confluence/display/CXF20DOC/Service+Routing
-----Original Message-----
From: Dan Diephouse (JIRA) [mailto:[EMAIL PROTECTED]
Sent: 2007年3月26日 9:43
To: [email protected]
Subject: [jira] Commented: (CXF-411) Refactoring interceptor chain
[
https://issues.apache.org/jira/browse/CXF-411?page=com.atlassi
an.jira.plugin.system.issuetabpanels:comment-tabpanel#action_1
2483994 ]
Dan Diephouse commented on CXF-411:
-----------------------------------
I think we decided that we need to get postHandleMessage
removed now. Any volunteers?
Refactoring interceptor chain
-----------------------------
Key: CXF-411
URL: https://issues.apache.org/jira/browse/CXF-411
Project: CXF
Issue Type: Task
Components: Core
Affects Versions: 2.0-RC
Reporter: unrealjiang
Assigned To: Jervis Liu
Fix For: 2.0-RC
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.