You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2003/03/13 10:39:02 UTC
DO NOT REPLY [Bug 17950] New: -
Defect of the jax-rpc handler impl on the processing model
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17950>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17950
Defect of the jax-rpc handler impl on the processing model
Summary: Defect of the jax-rpc handler impl on the processing
model
Product: Axis
Version: 1.1rc2
Platform: All
URL: http://marc.theaimsgroup.com/?t=104584191000004&r=1&w=2
OS/Version: All
Status: NEW
Severity: Major
Priority: Other
Component: Basic Architecture
AssignedTo: axis-dev@ws.apache.org
ReportedBy: kimuratsy@nttdata.co.jp
The jax-rpc ver 1.0 spec says as described below in the event of
'return false' on processing a handleRequest method of handlers.
[extract of the spec]
"In the default processing model, the respose handler chain starts
processing from the same Handler instance (that returned false) and
goes backward in the execution sequence".
However, the current impl of AXIS mishandles the rule, it has been
processing as the fixed logic as follows;
[*] Please take particular note of the index 'i' in the 'for-loop'
on the handleResponse method.
.........*.........*.........*.........*.........*.........*.........*
package org.apache.axis.handlers;
:
:
public class HandlerChainImpl extends ArrayList
implements javax.xml.rpc.handler.HandlerChain {
:
:
public boolean handleRequest(MessageContext _context) {
SOAPMessageContext context = (SOAPMessageContext) _context;
boolean processFault = false;
for (int i = 0; i < size(); i++) {
Handler currentHandler = getHandlerInstance(i);
try {
if (currentHandler.handleRequest(context) == false) {
return false;
}
} catch (SOAPFaultException sfe) {
throw sfe;
}
}
return true;
}
public boolean handleResponse(MessageContext context) {
for (int i = size() - 1; i >= 0; i--)
if (getHandlerInstance(i).handleResponse(context) == false)
return false;
return true;
}
:
:
.........*.........*.........*.........*.........*.........*.........*
This code doesn't follow the spec, so 'Sreekant Thirunagari'
<st...@chutneytech.com> and I have discussed how to resolve
this issue on axis-user-ml. In addition, the URL shows you
the archival record of our course.
Best Regards,
Toshi (Toshiyuki Kimura) <ki...@nttdata.co.jp>
R&D Headquarters
NTT DATA Corporation