You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2008/08/18 19:37:26 UTC
svn commit: r686828 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2:
dataretrieval/WSDLDataLocator.java description/AxisEndpoint.java
description/AxisService2WSDL11.java util/WSDLSerializationUtil.java
Author: nandana
Date: Mon Aug 18 10:37:25 2008
New Revision: 686828
URL: http://svn.apache.org/viewvc?rev=686828&view=rev
Log:
AXIS2-3784 Fixing the issue
Using the ip of the request to generate EPRs rather than using the ip of the first network interface found
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/dataretrieval/WSDLDataLocator.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/dataretrieval/WSDLDataLocator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/dataretrieval/WSDLDataLocator.java?rev=686828&r1=686827&r2=686828&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/dataretrieval/WSDLDataLocator.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/dataretrieval/WSDLDataLocator.java Mon Aug 18 10:37:25 2008
@@ -116,6 +116,7 @@
if (msgContext != null) {
theService = msgContext.getAxisService();
serviceURL = msgContext.getTo().getAddress();
+ theService.setEndpointURL(serviceURL);
} else {
throw new DataRetrievalException("MessageContext was not set!");
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.java?rev=686828&r1=686827&r2=686828&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisEndpoint.java Mon Aug 18 10:37:25 2008
@@ -174,34 +174,45 @@
}
public String calculateEndpointURL() {
- if (transportInDescName != null && parent != null) {
- AxisConfiguration axisConfiguration = getAxisConfiguration();
- if (axisConfiguration != null) {
- try {
- String serviceName = ((AxisService) parent).getName();
- TransportInDescription in = axisConfiguration
- .getTransportIn(transportInDescName);
- TransportListener listener = in.getReceiver();
- String ip = Utils.getIpAddress(axisConfiguration);
- // we should pass [serviceName].[endpointName] instead of
- // [endpointName]
- String sDOTe = serviceName + "." + name;
- EndpointReference[] eprsForService = listener
- .getEPRsForService(sDOTe, ip);
- // we consider only the first address return by the listener
- if (eprsForService != null && eprsForService.length > 0) {
- return eprsForService[0].getAddress();
- }
- } catch (SocketException e) {
- logger.warn(e.getMessage(), e);
- } catch (AxisFault e) {
- logger.warn(e.getMessage(), e);
- }
- }
- }
-
- return null;
+ return calculateEndpointURL(null);
}
+
+ public String calculateEndpointURL(String hostIP) {
+ if (transportInDescName != null && parent != null) {
+ AxisConfiguration axisConfiguration = getAxisConfiguration();
+ if (axisConfiguration != null) {
+ try {
+ String serviceName = ((AxisService) parent).getName();
+ TransportInDescription in = axisConfiguration
+ .getTransportIn(transportInDescName);
+ TransportListener listener = in.getReceiver();
+ String ip;
+
+ if (hostIP != null) {
+ ip = hostIP;
+ } else {
+ ip = Utils.getIpAddress(axisConfiguration);
+ }
+
+ // we should pass [serviceName].[endpointName] instead of
+ // [endpointName]
+ String sDOTe = serviceName + "." + name;
+ EndpointReference[] eprsForService = listener
+ .getEPRsForService(sDOTe, ip);
+ // we consider only the first address return by the listener
+ if (eprsForService != null && eprsForService.length > 0) {
+ return eprsForService[0].getAddress();
+ }
+ } catch (SocketException e) {
+ logger.warn(e.getMessage(), e);
+ } catch (AxisFault e) {
+ logger.warn(e.getMessage(), e);
+ }
+ }
+ }
+
+ return null;
+ }
public boolean isActive() {
if (transportInDescName != null && parent != null) {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java?rev=686828&r1=686827&r2=686828&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL11.java Mon Aug 18 10:37:25 2008
@@ -93,8 +93,9 @@
private ExternalPolicySerializer serializer;
private HashMap messagesMap;
+
- public AxisService2WSDL11(AxisService service) throws Exception {
+ public AxisService2WSDL11(AxisService service) throws Exception {
this.axisService = service;
this.serviceName = service.getName();
init();
@@ -1293,10 +1294,20 @@
Parameter modifyAddressParam = axisService
.getParameter("modifyUserWSDLPortAddress");
if (modifyAddressParam != null) {
- if (Boolean.parseBoolean((String) modifyAddressParam.getValue())) {
- return axisEndpoint.calculateEndpointURL();
- }
+ if (!Boolean.parseBoolean((String) modifyAddressParam.getValue())) {
+ return axisEndpoint.getEndpointURL();
+ }
+ }
+ String hostIP = WSDLSerializationUtil.extractHostIP(axisService.getEndpointURL());
+ //TODO This is to prevent problems when JAVA2WSDL tool is used where there is no
+ //Axis server running. calculateEndpointURL fails in this scenario, refer to
+ // SimpleHTTPServer#getEPRsForService()
+ if (hostIP != null) {
+ return axisEndpoint.calculateEndpointURL(hostIP);
+ } else {
+ return axisEndpoint.getEndpointURL();
}
- return axisEndpoint.getEndpointURL();
}
-}
+
+
+}
\ No newline at end of file
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java?rev=686828&r1=686827&r2=686828&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java Mon Aug 18 10:37:25 2008
@@ -568,5 +568,31 @@
} else {
return getAxisService(description.getParent());
}
- }
+ }
+
+ public static String extractHostIP(String serviceURL){
+
+ String ip = null;
+
+ if (serviceURL != null) {
+
+ int ipindex = serviceURL.indexOf("//");
+
+ if (ipindex >= 0) {
+ ip = serviceURL.substring(ipindex + 2, serviceURL.length());
+ int seperatorIndex = ip.indexOf(":");
+ int slashIndex = ip.indexOf("/");
+
+ if (seperatorIndex >= 0) {
+ ip = ip.substring(0, seperatorIndex);
+ } else {
+ ip = ip.substring(0, slashIndex);
+ }
+ }
+ }
+
+ return ip;
+ }
+
+
}