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 ke...@apache.org on 2007/10/12 13:09:04 UTC
svn commit: r584132 -
/webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java
Author: keithc
Date: Fri Oct 12 04:09:03 2007
New Revision: 584132
URL: http://svn.apache.org/viewvc?rev=584132&view=rev
Log:
Updating HTTPLocationBasedDispatcher to work for the common case where the endpoint url cannot distinguish the endpopint.
Modified:
webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java
Modified: webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java?rev=584132&r1=584131&r2=584132&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java (original)
+++ webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java Fri Oct 12 04:09:03 2007
@@ -59,12 +59,30 @@
if (httpLocation != null) {
AxisEndpoint axisEndpoint = (AxisEndpoint) messageContext
.getProperty(WSDL2Constants.ENDPOINT_LOCAL_NAME);
+ // Here we check whether the request was dispatched to the correct endpoint. If it
+ // was we can dispatch the operation using the HTTPLocationDispatcher table of that
+ // specific endpoint. In most cases we wont be able to do this. So as a last resort
+ // iterate through the endpoint map and try to dispatch the operation.
if (axisEndpoint != null) {
Map httpLocationTable = (Map) axisEndpoint.getBinding()
.getProperty(WSDL2Constants.HTTP_LOCATION_TABLE);
if (httpLocationTable != null) {
return getOperationFromHTTPLocation(httpLocation, httpLocationTable);
}
+ } else {
+ Map endpoints = axisService.getEndpoints();
+ if (endpoints != null) {
+ Iterator iterator = endpoints.values().iterator();
+ while (iterator.hasNext()) {
+ AxisEndpoint endpoint = (AxisEndpoint) iterator.next();
+ Map httpLocationTable = (Map) endpoint.getBinding()
+ .getProperty(WSDL2Constants.HTTP_LOCATION_TABLE);
+ if (httpLocationTable != null) {
+ return getOperationFromHTTPLocation(httpLocation,
+ httpLocationTable);
+ }
+ }
+ }
}
} else {
log.debug("Attempt to check for Operation using HTTP Location failed");
@@ -118,6 +136,7 @@
* Given the requestPath that the request came to his method returns the corresponding axisOperation
*
* @param requestPath - Part of the request url which is the part after the service name
+ * @param httpLocationTable - The httpLocationTable stored in the relavant binding
* @return AxisOperation - The corresponding AxisOperation
*/
private AxisOperation getOperationFromHTTPLocation(String requestPath, Map httpLocationTable) {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org