You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2008/11/03 22:07:21 UTC
svn commit: r710158 [9/20] - in
/webservices/commons/trunk/modules/transport: ./ modules/base/
modules/base/src/main/java/org/apache/axis2/format/
modules/base/src/main/java/org/apache/axis2/transport/base/
modules/base/src/main/java/org/apache/axis2/t...
Modified: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ProxyConfiguration.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ProxyConfiguration.java?rev=710158&r1=710157&r2=710158&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ProxyConfiguration.java (original)
+++ webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ProxyConfiguration.java Mon Nov 3 13:07:13 2008
@@ -1,523 +1,523 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.axis2.transport.http;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.Parameter;
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.HostConfiguration;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.NTCredentials;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-
-import javax.xml.namespace.QName;
-import java.net.URL;
-import java.util.StringTokenizer;
-
-
-/**
- * The purpose of this class is to configure the proxy auth regardles of the protocol.
- * Proxy will be set only for HTTP connection
- */
-
-public class ProxyConfiguration {
-
- protected String proxyHost;
- protected String nonProxyHosts;
- protected int proxyPort = -1; //If port is not set, default is set to -1
- protected String proxyUser;
- protected String proxyPassword;
-
- protected static final String HTTP_PROXY_HOST = "http.proxyHost";
- protected static final String HTTP_PROXY_PORT = "http.proxyPort";
- protected static final String HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts";
-
- protected static final String ATTR_PROXY = "Proxy";
- protected static final String PROXY_HOST_ELEMENT = "ProxyHost";
- protected static final String PROXY_PORT_ELEMENT = "ProxyPort";
- protected static final String PROXY_USER_ELEMENT = "ProxyUser";
- protected static final String PROXY_PASSWORD_ELEMENT = "ProxyPassword";
-
- public void configure(MessageContext messageContext,
- HttpClient httpClient,
- HostConfiguration config) throws AxisFault {
-
- // <parameter name="Proxy">
- // <Configuration>
- // <ProxyHost>example.org</ProxyHost>
- // <ProxyPort>5678</ProxyPort>
- // <ProxyUser>EXAMPLE\saminda</ProxyUser>
- // <ProxyPassword>ppp</ProxyPassword>
- // </Configuration>
- // </parameter>
- Credentials proxyCred = null;
-
- //Getting configuration values from Axis2.xml
- Parameter param = messageContext.getConfigurationContext().getAxisConfiguration()
- .getParameter(ATTR_PROXY);
-
- if (param != null) {
- OMElement configurationEle = param.getParameterElement().getFirstElement();
- if (configurationEle == null) {
- throw new AxisFault(
- ProxyConfiguration.class.getName() + " Configuration element is missing");
- }
-
- OMElement proxyHostEle =
- configurationEle.getFirstChildWithName(new QName(PROXY_HOST_ELEMENT));
- OMElement proxyPortEle =
- configurationEle.getFirstChildWithName(new QName(PROXY_PORT_ELEMENT));
- OMElement proxyUserEle =
- configurationEle.getFirstChildWithName(new QName(PROXY_USER_ELEMENT));
- OMElement proxyPasswordEle =
- configurationEle.getFirstChildWithName(new QName(PROXY_PASSWORD_ELEMENT));
-
- if (proxyHostEle == null) {
- throw new AxisFault(
- ProxyConfiguration.class.getName() + " ProxyHost element is missing");
- }
- String text = proxyHostEle.getText();
- if (text == null) {
- throw new AxisFault(
- ProxyConfiguration.class.getName() + " ProxyHost's value is missing");
- }
-
- this.setProxyHost(text);
-
- if (proxyPortEle != null) {
- this.setProxyPort(Integer.parseInt(proxyPortEle.getText()));
- }
-
- if (proxyUserEle != null) {
- this.setProxyUser(proxyUserEle.getText());
- }
-
- if (proxyPasswordEle != null) {
- this.setProxyPassword(proxyPasswordEle.getText());
- }
-
- if (this.getProxyUser() == null && this.getProxyUser() == null) {
- proxyCred = new UsernamePasswordCredentials("", "");
- } else {
- proxyCred =
- new UsernamePasswordCredentials(this.getProxyUser(),
- this.getProxyPassword());
- }
-
- // if the username is in the form "DOMAIN\\user"
- // then use NTCredentials instead.
- if (this.getProxyUser() != null) {
- int domainIndex = this.getProxyUser().indexOf("\\");
- if (domainIndex > 0) {
- String domain = this.getProxyUser().substring(0, domainIndex);
- if (this.getProxyUser().length() > domainIndex + 1) {
- String user = this.getProxyUser().substring(domainIndex + 1);
- proxyCred = new NTCredentials(user,
- this.getProxyPassword(),
- this.getProxyHost(),
- domain);
- }
- }
- }
- }
-
- // Overide the property setting in runtime.
- HttpTransportProperties.ProxyProperties proxyProperties =
- (HttpTransportProperties.ProxyProperties) messageContext
- .getProperty(HTTPConstants.PROXY);
-
- if (proxyProperties != null) {
- String host = proxyProperties.getProxyHostName();
- if (host == null || host.length() == 0) {
- throw new AxisFault(ProxyConfiguration.class.getName() +
- " Proxy host is not available. Host is a MUST parameter");
-
- } else {
- this.setProxyHost(host);
- }
-
-
- this.setProxyPort(proxyProperties.getProxyPort());
-
- //Setting credentials
-
- String userName = proxyProperties.getUserName();
- String password = proxyProperties.getPassWord();
- String domain = proxyProperties.getDomain();
-
- if (userName == null && password == null) {
- proxyCred = new UsernamePasswordCredentials("", "");
- } else {
- proxyCred = new UsernamePasswordCredentials(userName, password);
- }
-
- if (userName != null && password != null && domain != null) {
- proxyCred = new NTCredentials(userName, password, host, domain);
- }
-
- }
-
- //Using Java Networking Properties
-
- String host = System.getProperty(HTTP_PROXY_HOST);
- if (host != null) {
- this.setProxyHost(host);
- proxyCred = new UsernamePasswordCredentials("","");
- }
-
- String port = System.getProperty(HTTP_PROXY_PORT);
-
- if (port != null) {
- this.setProxyPort(Integer.parseInt(port));
- }
-
- if (proxyCred == null) {
- throw new AxisFault(ProxyConfiguration.class.getName() +
- " Minimum proxy credentials are not set");
- }
-
- httpClient.getParams().setAuthenticationPreemptive(true);
- httpClient.getState().setProxyCredentials(AuthScope.ANY, proxyCred);
- config.setProxy(this.getProxyHost(), this.getProxyPort());
- }
-
- /**
- * Check first if the proxy is configured or active.
- * If yes this will return true. This is not a deep check
- *
- * @param messageContext
- * @return boolean
- */
-
- public static boolean isProxyEnabled(MessageContext messageContext, URL targetURL)
- throws AxisFault {
-
- boolean state = false;
-
-
- Parameter param = messageContext.getConfigurationContext().getAxisConfiguration()
- .getParameter(ATTR_PROXY);
-
- //If configuration is over ridden
- Object obj = messageContext.getProperty(HTTPConstants.PROXY);
-
- //From Java Networking Properties
- String sp = System.getProperty(HTTP_PROXY_HOST);
-
- if (param != null || obj != null || sp != null) {
- state = true;
- }
-
- boolean isNonProxyHost = validateNonProxyHosts(targetURL.getHost());
-
- return state && !isNonProxyHost;
-
- }
-
- /**
- * Validates for names that shouldn't be listered as proxies.
- * The http.nonProxyHosts can be set to specify the hosts which should be
- * connected to directly (not through the proxy server).
- * The value of the http.nonProxyHosts property can be a list of hosts,
- * each separated by a |; it can also take a regular expression for matches;
- * for example: *.sfbay.sun.com would match any fully qualified hostname in the sfbay domain.
- *
- * For more information refer to : http://java.sun.com/features/2002/11/hilevel_network.html
- *
- * false : validation fail : User can use the proxy
- * true : validation pass ; User can't use the proxy
- *
- * @return boolean
- */
- public static boolean validateNonProxyHosts(String host) {
- //From system property http.nonProxyHosts
- String nonProxyHosts = System.getProperty(HTTP_NON_PROXY_HOSTS);
- return isHostInNonProxyList(host, nonProxyHosts);
- }
-
- /**
- * Check if the specified host is in the list of non proxy hosts.
- *
- * @param host host name
- * @param nonProxyHosts string containing the list of non proxy hosts
- *
- * @return true/false
- */
- public static boolean isHostInNonProxyList(String host, String nonProxyHosts) {
- if ((nonProxyHosts == null) || (host == null)) {
- return false;
- }
-
- /*
- * The http.nonProxyHosts system property is a list enclosed in
- * double quotes with items separated by a vertical bar.
- */
- StringTokenizer tokenizer = new StringTokenizer(nonProxyHosts, "|\"");
-
- while (tokenizer.hasMoreTokens()) {
- String pattern = tokenizer.nextToken();
- if (match(pattern, host, false)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Matches a string against a pattern. The pattern contains two special
- * characters:
- * '*' which means zero or more characters,
- *
- * @param pattern the (non-null) pattern to match against
- * @param str the (non-null) string that must be matched against the
- * pattern
- * @param isCaseSensitive
- *
- * @return <code>true</code> when the string matches against the pattern,
- * <code>false</code> otherwise.
- */
- protected static boolean match(String pattern, String str,
- boolean isCaseSensitive) {
-
- char[] patArr = pattern.toCharArray();
- char[] strArr = str.toCharArray();
- int patIdxStart = 0;
- int patIdxEnd = patArr.length - 1;
- int strIdxStart = 0;
- int strIdxEnd = strArr.length - 1;
- char ch;
- boolean containsStar = false;
-
- for (int i = 0; i < patArr.length; i++) {
- if (patArr[i] == '*') {
- containsStar = true;
- break;
- }
- }
- if (!containsStar) {
-
- // No '*'s, so we make a shortcut
- if (patIdxEnd != strIdxEnd) {
- return false; // Pattern and string do not have the same size
- }
- for (int i = 0; i <= patIdxEnd; i++) {
- ch = patArr[i];
- if (isCaseSensitive && (ch != strArr[i])) {
- return false; // Character mismatch
- }
- if (!isCaseSensitive
- && (Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[i]))) {
- return false; // Character mismatch
- }
- }
- return true; // String matches against pattern
- }
- if (patIdxEnd == 0) {
- return true; // Pattern contains only '*', which matches anything
- }
-
- // Process characters before first star
- while ((ch = patArr[patIdxStart]) != '*'
- && (strIdxStart <= strIdxEnd)) {
- if (isCaseSensitive && (ch != strArr[strIdxStart])) {
- return false; // Character mismatch
- }
- if (!isCaseSensitive
- && (Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[strIdxStart]))) {
- return false; // Character mismatch
- }
- patIdxStart++;
- strIdxStart++;
- }
- if (strIdxStart > strIdxEnd) {
-
- // All characters in the string are used. Check if only '*'s are
- // left in the pattern. If so, we succeeded. Otherwise failure.
- for (int i = patIdxStart; i <= patIdxEnd; i++) {
- if (patArr[i] != '*') {
- return false;
- }
- }
- return true;
- }
-
- // Process characters after last star
- while ((ch = patArr[patIdxEnd]) != '*' && (strIdxStart <= strIdxEnd)) {
- if (isCaseSensitive && (ch != strArr[strIdxEnd])) {
- return false; // Character mismatch
- }
- if (!isCaseSensitive
- && (Character.toUpperCase(ch)
- != Character.toUpperCase(strArr[strIdxEnd]))) {
- return false; // Character mismatch
- }
- patIdxEnd--;
- strIdxEnd--;
- }
- if (strIdxStart > strIdxEnd) {
-
- // All characters in the string are used. Check if only '*'s are
- // left in the pattern. If so, we succeeded. Otherwise failure.
- for (int i = patIdxStart; i <= patIdxEnd; i++) {
- if (patArr[i] != '*') {
- return false;
- }
- }
- return true;
- }
-
- // process pattern between stars. padIdxStart and patIdxEnd point
- // always to a '*'.
- while ((patIdxStart != patIdxEnd) && (strIdxStart <= strIdxEnd)) {
- int patIdxTmp = -1;
-
- for (int i = patIdxStart + 1; i <= patIdxEnd; i++) {
- if (patArr[i] == '*') {
- patIdxTmp = i;
- break;
- }
- }
- if (patIdxTmp == patIdxStart + 1) {
-
- // Two stars next to each other, skip the first one.
- patIdxStart++;
- continue;
- }
-
- // Find the pattern between padIdxStart & padIdxTmp in str between
- // strIdxStart & strIdxEnd
- int patLength = (patIdxTmp - patIdxStart - 1);
- int strLength = (strIdxEnd - strIdxStart + 1);
- int foundIdx = -1;
-
- strLoop:
- for (int i = 0; i <= strLength - patLength; i++) {
- for (int j = 0; j < patLength; j++) {
- ch = patArr[patIdxStart + j + 1];
- if (isCaseSensitive
- && (ch != strArr[strIdxStart + i + j])) {
- continue strLoop;
- }
- if (!isCaseSensitive && (Character
- .toUpperCase(ch) != Character
- .toUpperCase(strArr[strIdxStart + i + j]))) {
- continue strLoop;
- }
- }
- foundIdx = strIdxStart + i;
- break;
- }
- if (foundIdx == -1) {
- return false;
- }
- patIdxStart = patIdxTmp;
- strIdxStart = foundIdx + patLength;
- }
-
- // All characters in the string are used. Check if only '*'s are left
- // in the pattern. If so, we succeeded. Otherwise failure.
- for (int i = patIdxStart; i <= patIdxEnd; i++) {
- if (patArr[i] != '*') {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Retrun proxy host
- *
- * @return String
- */
- public String getProxyHost() {
- return proxyHost;
- }
-
- /**
- * set proxy host
- *
- * @param proxyHost
- */
-
- public void setProxyHost(String proxyHost) {
- this.proxyHost = proxyHost;
- }
-
- /**
- * retrun proxy port
- *
- * @return String
- */
- public int getProxyPort() {
- return proxyPort;
- }
-
- /**
- * set proxy port
- *
- * @param proxyPort
- */
- public void setProxyPort(int proxyPort) {
- this.proxyPort = proxyPort;
- }
-
- /**
- * return proxy user. Proxy user can be user/domain or user
- *
- * @return String
- */
- public String getProxyUser() {
- return proxyUser;
- }
-
- /**
- * get proxy user
- *
- * @param proxyUser
- */
- public void setProxyUser(String proxyUser) {
- this.proxyUser = proxyUser;
- }
-
- /**
- * set password
- *
- * @return String
- */
- public String getProxyPassword() {
- return proxyPassword;
- }
-
- /**
- * get password
- *
- * @param proxyPassword
- */
- public void setProxyPassword(String proxyPassword) {
- this.proxyPassword = proxyPassword;
- }
-
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.NTCredentials;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+
+import javax.xml.namespace.QName;
+import java.net.URL;
+import java.util.StringTokenizer;
+
+
+/**
+ * The purpose of this class is to configure the proxy auth regardles of the protocol.
+ * Proxy will be set only for HTTP connection
+ */
+
+public class ProxyConfiguration {
+
+ protected String proxyHost;
+ protected String nonProxyHosts;
+ protected int proxyPort = -1; //If port is not set, default is set to -1
+ protected String proxyUser;
+ protected String proxyPassword;
+
+ protected static final String HTTP_PROXY_HOST = "http.proxyHost";
+ protected static final String HTTP_PROXY_PORT = "http.proxyPort";
+ protected static final String HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts";
+
+ protected static final String ATTR_PROXY = "Proxy";
+ protected static final String PROXY_HOST_ELEMENT = "ProxyHost";
+ protected static final String PROXY_PORT_ELEMENT = "ProxyPort";
+ protected static final String PROXY_USER_ELEMENT = "ProxyUser";
+ protected static final String PROXY_PASSWORD_ELEMENT = "ProxyPassword";
+
+ public void configure(MessageContext messageContext,
+ HttpClient httpClient,
+ HostConfiguration config) throws AxisFault {
+
+ // <parameter name="Proxy">
+ // <Configuration>
+ // <ProxyHost>example.org</ProxyHost>
+ // <ProxyPort>5678</ProxyPort>
+ // <ProxyUser>EXAMPLE\saminda</ProxyUser>
+ // <ProxyPassword>ppp</ProxyPassword>
+ // </Configuration>
+ // </parameter>
+ Credentials proxyCred = null;
+
+ //Getting configuration values from Axis2.xml
+ Parameter param = messageContext.getConfigurationContext().getAxisConfiguration()
+ .getParameter(ATTR_PROXY);
+
+ if (param != null) {
+ OMElement configurationEle = param.getParameterElement().getFirstElement();
+ if (configurationEle == null) {
+ throw new AxisFault(
+ ProxyConfiguration.class.getName() + " Configuration element is missing");
+ }
+
+ OMElement proxyHostEle =
+ configurationEle.getFirstChildWithName(new QName(PROXY_HOST_ELEMENT));
+ OMElement proxyPortEle =
+ configurationEle.getFirstChildWithName(new QName(PROXY_PORT_ELEMENT));
+ OMElement proxyUserEle =
+ configurationEle.getFirstChildWithName(new QName(PROXY_USER_ELEMENT));
+ OMElement proxyPasswordEle =
+ configurationEle.getFirstChildWithName(new QName(PROXY_PASSWORD_ELEMENT));
+
+ if (proxyHostEle == null) {
+ throw new AxisFault(
+ ProxyConfiguration.class.getName() + " ProxyHost element is missing");
+ }
+ String text = proxyHostEle.getText();
+ if (text == null) {
+ throw new AxisFault(
+ ProxyConfiguration.class.getName() + " ProxyHost's value is missing");
+ }
+
+ this.setProxyHost(text);
+
+ if (proxyPortEle != null) {
+ this.setProxyPort(Integer.parseInt(proxyPortEle.getText()));
+ }
+
+ if (proxyUserEle != null) {
+ this.setProxyUser(proxyUserEle.getText());
+ }
+
+ if (proxyPasswordEle != null) {
+ this.setProxyPassword(proxyPasswordEle.getText());
+ }
+
+ if (this.getProxyUser() == null && this.getProxyUser() == null) {
+ proxyCred = new UsernamePasswordCredentials("", "");
+ } else {
+ proxyCred =
+ new UsernamePasswordCredentials(this.getProxyUser(),
+ this.getProxyPassword());
+ }
+
+ // if the username is in the form "DOMAIN\\user"
+ // then use NTCredentials instead.
+ if (this.getProxyUser() != null) {
+ int domainIndex = this.getProxyUser().indexOf("\\");
+ if (domainIndex > 0) {
+ String domain = this.getProxyUser().substring(0, domainIndex);
+ if (this.getProxyUser().length() > domainIndex + 1) {
+ String user = this.getProxyUser().substring(domainIndex + 1);
+ proxyCred = new NTCredentials(user,
+ this.getProxyPassword(),
+ this.getProxyHost(),
+ domain);
+ }
+ }
+ }
+ }
+
+ // Overide the property setting in runtime.
+ HttpTransportProperties.ProxyProperties proxyProperties =
+ (HttpTransportProperties.ProxyProperties) messageContext
+ .getProperty(HTTPConstants.PROXY);
+
+ if (proxyProperties != null) {
+ String host = proxyProperties.getProxyHostName();
+ if (host == null || host.length() == 0) {
+ throw new AxisFault(ProxyConfiguration.class.getName() +
+ " Proxy host is not available. Host is a MUST parameter");
+
+ } else {
+ this.setProxyHost(host);
+ }
+
+
+ this.setProxyPort(proxyProperties.getProxyPort());
+
+ //Setting credentials
+
+ String userName = proxyProperties.getUserName();
+ String password = proxyProperties.getPassWord();
+ String domain = proxyProperties.getDomain();
+
+ if (userName == null && password == null) {
+ proxyCred = new UsernamePasswordCredentials("", "");
+ } else {
+ proxyCred = new UsernamePasswordCredentials(userName, password);
+ }
+
+ if (userName != null && password != null && domain != null) {
+ proxyCred = new NTCredentials(userName, password, host, domain);
+ }
+
+ }
+
+ //Using Java Networking Properties
+
+ String host = System.getProperty(HTTP_PROXY_HOST);
+ if (host != null) {
+ this.setProxyHost(host);
+ proxyCred = new UsernamePasswordCredentials("","");
+ }
+
+ String port = System.getProperty(HTTP_PROXY_PORT);
+
+ if (port != null) {
+ this.setProxyPort(Integer.parseInt(port));
+ }
+
+ if (proxyCred == null) {
+ throw new AxisFault(ProxyConfiguration.class.getName() +
+ " Minimum proxy credentials are not set");
+ }
+
+ httpClient.getParams().setAuthenticationPreemptive(true);
+ httpClient.getState().setProxyCredentials(AuthScope.ANY, proxyCred);
+ config.setProxy(this.getProxyHost(), this.getProxyPort());
+ }
+
+ /**
+ * Check first if the proxy is configured or active.
+ * If yes this will return true. This is not a deep check
+ *
+ * @param messageContext
+ * @return boolean
+ */
+
+ public static boolean isProxyEnabled(MessageContext messageContext, URL targetURL)
+ throws AxisFault {
+
+ boolean state = false;
+
+
+ Parameter param = messageContext.getConfigurationContext().getAxisConfiguration()
+ .getParameter(ATTR_PROXY);
+
+ //If configuration is over ridden
+ Object obj = messageContext.getProperty(HTTPConstants.PROXY);
+
+ //From Java Networking Properties
+ String sp = System.getProperty(HTTP_PROXY_HOST);
+
+ if (param != null || obj != null || sp != null) {
+ state = true;
+ }
+
+ boolean isNonProxyHost = validateNonProxyHosts(targetURL.getHost());
+
+ return state && !isNonProxyHost;
+
+ }
+
+ /**
+ * Validates for names that shouldn't be listered as proxies.
+ * The http.nonProxyHosts can be set to specify the hosts which should be
+ * connected to directly (not through the proxy server).
+ * The value of the http.nonProxyHosts property can be a list of hosts,
+ * each separated by a |; it can also take a regular expression for matches;
+ * for example: *.sfbay.sun.com would match any fully qualified hostname in the sfbay domain.
+ *
+ * For more information refer to : http://java.sun.com/features/2002/11/hilevel_network.html
+ *
+ * false : validation fail : User can use the proxy
+ * true : validation pass ; User can't use the proxy
+ *
+ * @return boolean
+ */
+ public static boolean validateNonProxyHosts(String host) {
+ //From system property http.nonProxyHosts
+ String nonProxyHosts = System.getProperty(HTTP_NON_PROXY_HOSTS);
+ return isHostInNonProxyList(host, nonProxyHosts);
+ }
+
+ /**
+ * Check if the specified host is in the list of non proxy hosts.
+ *
+ * @param host host name
+ * @param nonProxyHosts string containing the list of non proxy hosts
+ *
+ * @return true/false
+ */
+ public static boolean isHostInNonProxyList(String host, String nonProxyHosts) {
+ if ((nonProxyHosts == null) || (host == null)) {
+ return false;
+ }
+
+ /*
+ * The http.nonProxyHosts system property is a list enclosed in
+ * double quotes with items separated by a vertical bar.
+ */
+ StringTokenizer tokenizer = new StringTokenizer(nonProxyHosts, "|\"");
+
+ while (tokenizer.hasMoreTokens()) {
+ String pattern = tokenizer.nextToken();
+ if (match(pattern, host, false)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Matches a string against a pattern. The pattern contains two special
+ * characters:
+ * '*' which means zero or more characters,
+ *
+ * @param pattern the (non-null) pattern to match against
+ * @param str the (non-null) string that must be matched against the
+ * pattern
+ * @param isCaseSensitive
+ *
+ * @return <code>true</code> when the string matches against the pattern,
+ * <code>false</code> otherwise.
+ */
+ protected static boolean match(String pattern, String str,
+ boolean isCaseSensitive) {
+
+ char[] patArr = pattern.toCharArray();
+ char[] strArr = str.toCharArray();
+ int patIdxStart = 0;
+ int patIdxEnd = patArr.length - 1;
+ int strIdxStart = 0;
+ int strIdxEnd = strArr.length - 1;
+ char ch;
+ boolean containsStar = false;
+
+ for (int i = 0; i < patArr.length; i++) {
+ if (patArr[i] == '*') {
+ containsStar = true;
+ break;
+ }
+ }
+ if (!containsStar) {
+
+ // No '*'s, so we make a shortcut
+ if (patIdxEnd != strIdxEnd) {
+ return false; // Pattern and string do not have the same size
+ }
+ for (int i = 0; i <= patIdxEnd; i++) {
+ ch = patArr[i];
+ if (isCaseSensitive && (ch != strArr[i])) {
+ return false; // Character mismatch
+ }
+ if (!isCaseSensitive
+ && (Character.toUpperCase(ch)
+ != Character.toUpperCase(strArr[i]))) {
+ return false; // Character mismatch
+ }
+ }
+ return true; // String matches against pattern
+ }
+ if (patIdxEnd == 0) {
+ return true; // Pattern contains only '*', which matches anything
+ }
+
+ // Process characters before first star
+ while ((ch = patArr[patIdxStart]) != '*'
+ && (strIdxStart <= strIdxEnd)) {
+ if (isCaseSensitive && (ch != strArr[strIdxStart])) {
+ return false; // Character mismatch
+ }
+ if (!isCaseSensitive
+ && (Character.toUpperCase(ch)
+ != Character.toUpperCase(strArr[strIdxStart]))) {
+ return false; // Character mismatch
+ }
+ patIdxStart++;
+ strIdxStart++;
+ }
+ if (strIdxStart > strIdxEnd) {
+
+ // All characters in the string are used. Check if only '*'s are
+ // left in the pattern. If so, we succeeded. Otherwise failure.
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (patArr[i] != '*') {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ // Process characters after last star
+ while ((ch = patArr[patIdxEnd]) != '*' && (strIdxStart <= strIdxEnd)) {
+ if (isCaseSensitive && (ch != strArr[strIdxEnd])) {
+ return false; // Character mismatch
+ }
+ if (!isCaseSensitive
+ && (Character.toUpperCase(ch)
+ != Character.toUpperCase(strArr[strIdxEnd]))) {
+ return false; // Character mismatch
+ }
+ patIdxEnd--;
+ strIdxEnd--;
+ }
+ if (strIdxStart > strIdxEnd) {
+
+ // All characters in the string are used. Check if only '*'s are
+ // left in the pattern. If so, we succeeded. Otherwise failure.
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (patArr[i] != '*') {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ // process pattern between stars. padIdxStart and patIdxEnd point
+ // always to a '*'.
+ while ((patIdxStart != patIdxEnd) && (strIdxStart <= strIdxEnd)) {
+ int patIdxTmp = -1;
+
+ for (int i = patIdxStart + 1; i <= patIdxEnd; i++) {
+ if (patArr[i] == '*') {
+ patIdxTmp = i;
+ break;
+ }
+ }
+ if (patIdxTmp == patIdxStart + 1) {
+
+ // Two stars next to each other, skip the first one.
+ patIdxStart++;
+ continue;
+ }
+
+ // Find the pattern between padIdxStart & padIdxTmp in str between
+ // strIdxStart & strIdxEnd
+ int patLength = (patIdxTmp - patIdxStart - 1);
+ int strLength = (strIdxEnd - strIdxStart + 1);
+ int foundIdx = -1;
+
+ strLoop:
+ for (int i = 0; i <= strLength - patLength; i++) {
+ for (int j = 0; j < patLength; j++) {
+ ch = patArr[patIdxStart + j + 1];
+ if (isCaseSensitive
+ && (ch != strArr[strIdxStart + i + j])) {
+ continue strLoop;
+ }
+ if (!isCaseSensitive && (Character
+ .toUpperCase(ch) != Character
+ .toUpperCase(strArr[strIdxStart + i + j]))) {
+ continue strLoop;
+ }
+ }
+ foundIdx = strIdxStart + i;
+ break;
+ }
+ if (foundIdx == -1) {
+ return false;
+ }
+ patIdxStart = patIdxTmp;
+ strIdxStart = foundIdx + patLength;
+ }
+
+ // All characters in the string are used. Check if only '*'s are left
+ // in the pattern. If so, we succeeded. Otherwise failure.
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (patArr[i] != '*') {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Retrun proxy host
+ *
+ * @return String
+ */
+ public String getProxyHost() {
+ return proxyHost;
+ }
+
+ /**
+ * set proxy host
+ *
+ * @param proxyHost
+ */
+
+ public void setProxyHost(String proxyHost) {
+ this.proxyHost = proxyHost;
+ }
+
+ /**
+ * retrun proxy port
+ *
+ * @return String
+ */
+ public int getProxyPort() {
+ return proxyPort;
+ }
+
+ /**
+ * set proxy port
+ *
+ * @param proxyPort
+ */
+ public void setProxyPort(int proxyPort) {
+ this.proxyPort = proxyPort;
+ }
+
+ /**
+ * return proxy user. Proxy user can be user/domain or user
+ *
+ * @return String
+ */
+ public String getProxyUser() {
+ return proxyUser;
+ }
+
+ /**
+ * get proxy user
+ *
+ * @param proxyUser
+ */
+ public void setProxyUser(String proxyUser) {
+ this.proxyUser = proxyUser;
+ }
+
+ /**
+ * set password
+ *
+ * @return String
+ */
+ public String getProxyPassword() {
+ return proxyPassword;
+ }
+
+ /**
+ * get password
+ *
+ * @param proxyPassword
+ */
+ public void setProxyPassword(String proxyPassword) {
+ this.proxyPassword = proxyPassword;
+ }
+
+
+}
Propchange: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ProxyConfiguration.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java?rev=710158&r1=710157&r2=710158&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java (original)
+++ webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java Mon Nov 3 13:07:13 2008
@@ -1,136 +1,136 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.axis2.transport.http;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
-import org.apache.commons.httpclient.methods.RequestEntity;
-
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLStreamException;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class RESTRequestEntity implements RequestEntity {
- private byte[] bytes;
- private String charSetEnc;
- private boolean chunked;
- private OMElement element;
- private MessageContext msgCtxt;
- private String soapActionString;
- private OMOutputFormat format;
-
- public RESTRequestEntity(OMElement element, boolean chunked,
- MessageContext msgCtxt,
- String charSetEncoding,
- String soapActionString,
- OMOutputFormat format) {
- this.element = element;
- this.chunked = chunked;
- this.msgCtxt = msgCtxt;
- this.charSetEnc = charSetEncoding;
- this.soapActionString = soapActionString;
- this.format = format;
- }
-
- private void handleOMOutput(OutputStream out, boolean doingMTOM)
- throws XMLStreamException {
- format.setDoOptimize(doingMTOM);
- element.serializeAndConsume(out, format);
- }
-
- public byte[] writeBytes() throws AxisFault {
- try {
- ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
- if (!format.isOptimized()) {
- OMOutputFormat format2 = new OMOutputFormat();
- format2.setCharSetEncoding(charSetEnc);
- element.serializeAndConsume(bytesOut, format2);
- return bytesOut.toByteArray();
- } else {
- format.setCharSetEncoding(charSetEnc);
- format.setDoOptimize(true);
- element.serializeAndConsume(bytesOut, format);
- return bytesOut.toByteArray();
- }
- } catch (XMLStreamException e) {
- throw AxisFault.makeFault(e);
- } catch (FactoryConfigurationError e) {
- throw AxisFault.makeFault(e);
- }
- }
-
- public void writeRequest(OutputStream out) throws IOException {
- try {
- if (chunked) {
- this.handleOMOutput(out, format.isDoingSWA());
- } else {
- if (bytes == null) {
- bytes = writeBytes();
- }
- out.write(bytes);
- }
- out.flush();
- } catch (XMLStreamException e) {
- throw AxisFault.makeFault(e);
- } catch (FactoryConfigurationError e) {
- throw AxisFault.makeFault(e);
- } catch (IOException e) {
- throw AxisFault.makeFault(e);
- }
- }
-
- public long getContentLength() {
- try {
- if (chunked) {
- return -1;
- } else {
- if (bytes == null) {
- bytes = writeBytes();
- }
- return bytes.length;
- }
- } catch (AxisFault e) {
- return -1;
- }
- }
-
- public String getContentType() {
- String encoding = format.getCharSetEncoding();
- String contentType = format.getContentType();
- if (encoding != null) {
- contentType += "; charset=" + encoding;
- }
-
- // action header is not mandated in SOAP 1.2. So putting it, if available
- if (!msgCtxt.isSOAP11() && (soapActionString != null)
- && !"".equals(soapActionString.trim()) && !"\"\"".equals(soapActionString.trim())) {
- contentType = contentType + ";action=\"" + soapActionString + "\";";
- }
- return contentType;
- }
-
- public boolean isRepeatable() {
- return true;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.commons.httpclient.methods.RequestEntity;
+
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class RESTRequestEntity implements RequestEntity {
+ private byte[] bytes;
+ private String charSetEnc;
+ private boolean chunked;
+ private OMElement element;
+ private MessageContext msgCtxt;
+ private String soapActionString;
+ private OMOutputFormat format;
+
+ public RESTRequestEntity(OMElement element, boolean chunked,
+ MessageContext msgCtxt,
+ String charSetEncoding,
+ String soapActionString,
+ OMOutputFormat format) {
+ this.element = element;
+ this.chunked = chunked;
+ this.msgCtxt = msgCtxt;
+ this.charSetEnc = charSetEncoding;
+ this.soapActionString = soapActionString;
+ this.format = format;
+ }
+
+ private void handleOMOutput(OutputStream out, boolean doingMTOM)
+ throws XMLStreamException {
+ format.setDoOptimize(doingMTOM);
+ element.serializeAndConsume(out, format);
+ }
+
+ public byte[] writeBytes() throws AxisFault {
+ try {
+ ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+ if (!format.isOptimized()) {
+ OMOutputFormat format2 = new OMOutputFormat();
+ format2.setCharSetEncoding(charSetEnc);
+ element.serializeAndConsume(bytesOut, format2);
+ return bytesOut.toByteArray();
+ } else {
+ format.setCharSetEncoding(charSetEnc);
+ format.setDoOptimize(true);
+ element.serializeAndConsume(bytesOut, format);
+ return bytesOut.toByteArray();
+ }
+ } catch (XMLStreamException e) {
+ throw AxisFault.makeFault(e);
+ } catch (FactoryConfigurationError e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ public void writeRequest(OutputStream out) throws IOException {
+ try {
+ if (chunked) {
+ this.handleOMOutput(out, format.isDoingSWA());
+ } else {
+ if (bytes == null) {
+ bytes = writeBytes();
+ }
+ out.write(bytes);
+ }
+ out.flush();
+ } catch (XMLStreamException e) {
+ throw AxisFault.makeFault(e);
+ } catch (FactoryConfigurationError e) {
+ throw AxisFault.makeFault(e);
+ } catch (IOException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ public long getContentLength() {
+ try {
+ if (chunked) {
+ return -1;
+ } else {
+ if (bytes == null) {
+ bytes = writeBytes();
+ }
+ return bytes.length;
+ }
+ } catch (AxisFault e) {
+ return -1;
+ }
+ }
+
+ public String getContentType() {
+ String encoding = format.getCharSetEncoding();
+ String contentType = format.getContentType();
+ if (encoding != null) {
+ contentType += "; charset=" + encoding;
+ }
+
+ // action header is not mandated in SOAP 1.2. So putting it, if available
+ if (!msgCtxt.isSOAP11() && (soapActionString != null)
+ && !"".equals(soapActionString.trim()) && !"\"\"".equals(soapActionString.trim())) {
+ contentType = contentType + ";action=\"" + soapActionString + "\";";
+ }
+ return contentType;
+ }
+
+ public boolean isRepeatable() {
+ return true;
+ }
+}
Propchange: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java?rev=710158&r1=710157&r2=710158&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java (original)
+++ webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java Mon Nov 3 13:07:13 2008
@@ -1,51 +1,51 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.axis2.transport.http;
-
-import org.apache.commons.httpclient.methods.RequestEntity;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class RESTRequestEntity2 implements RequestEntity {
- private String contentType;
- private String postRequestBody;
-
- public RESTRequestEntity2(String postRequestBody, String contentType) {
- this.postRequestBody = postRequestBody;
- this.contentType = contentType;
- }
-
- public void writeRequest(OutputStream output) throws IOException {
- output.write(postRequestBody.getBytes());
- }
-
- public long getContentLength() {
- return this.postRequestBody.getBytes().length;
- }
-
- public String getContentType() {
- return this.contentType;
- }
-
- public boolean isRepeatable() {
- return true;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http;
+
+import org.apache.commons.httpclient.methods.RequestEntity;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class RESTRequestEntity2 implements RequestEntity {
+ private String contentType;
+ private String postRequestBody;
+
+ public RESTRequestEntity2(String postRequestBody, String contentType) {
+ this.postRequestBody = postRequestBody;
+ this.contentType = contentType;
+ }
+
+ public void writeRequest(OutputStream output) throws IOException {
+ output.write(postRequestBody.getBytes());
+ }
+
+ public long getContentLength() {
+ return this.postRequestBody.getBytes().length;
+ }
+
+ public String getContentType() {
+ return this.contentType;
+ }
+
+ public boolean isRepeatable() {
+ return true;
+ }
+}
Propchange: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java?rev=710158&r1=710157&r2=710158&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java (original)
+++ webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java Mon Nov 3 13:07:13 2008
@@ -1,45 +1,45 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-package org.apache.axis2.transport.http;
-
-import org.apache.axis2.transport.OutTransportInfo;
-
-import javax.servlet.http.HttpServletResponse;
-
-public class ServletBasedOutTransportInfo implements OutTransportInfo {
- private HttpServletResponse response;
-
- public ServletBasedOutTransportInfo(HttpServletResponse response) {
- this.response = response;
- }
-
- public void setContentType(String contentType) {
- response.setContentType(contentType);
- }
-
- public void addHeader(String headerName, String headerValue) {
- response.addHeader(headerName, headerValue);
- }
-
- public void setStatus(int status) {
- response.setStatus(status);
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.axis2.transport.http;
+
+import org.apache.axis2.transport.OutTransportInfo;
+
+import javax.servlet.http.HttpServletResponse;
+
+public class ServletBasedOutTransportInfo implements OutTransportInfo {
+ private HttpServletResponse response;
+
+ public ServletBasedOutTransportInfo(HttpServletResponse response) {
+ this.response = response;
+ }
+
+ public void setContentType(String contentType) {
+ response.setContentType(contentType);
+ }
+
+ public void addHeader(String headerName, String headerValue) {
+ response.addHeader(headerName, headerValue);
+ }
+
+ public void setStatus(int status) {
+ response.setStatus(status);
+ }
+}
Propchange: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/ServletBasedOutTransportInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/SimpleHTTPServer.java?rev=710158&r1=710157&r2=710158&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/SimpleHTTPServer.java (original)
+++ webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/SimpleHTTPServer.java Mon Nov 3 13:07:13 2008
@@ -1,374 +1,374 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-package org.apache.axis2.transport.http;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.SessionContext;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.TransportInDescription;
-import org.apache.axis2.engine.ListenerManager;
-import org.apache.axis2.transport.TransportListener;
-import org.apache.axis2.transport.http.server.HttpFactory;
-import org.apache.axis2.transport.http.server.HttpUtils;
-import org.apache.axis2.transport.http.server.SessionManager;
-import org.apache.axis2.transport.http.server.SimpleHttpServer;
-import org.apache.axis2.util.OptionsParser;
-import org.apache.axis2.util.Utils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import javax.xml.namespace.QName;
-import java.io.File;
-import java.io.IOException;
-import java.net.SocketException;
-import java.util.Iterator;
-
-/**
- * This is a simple implementation of an HTTP server for processing
- * SOAP requests via Apache's xml-axis2.
- * It can be used with no configuration other than the port to listen on, or it can
- * be configured in detail with an HttpFactory.
- */
-public class SimpleHTTPServer implements TransportListener {
-
- private static final Log log = LogFactory.getLog(SimpleHTTPServer.class);
-
- /**
- * Embedded commons http core based server
- */
- SimpleHttpServer embedded = null;
- private String localAddress;
- int port = -1;
-
- public static int DEFAULT_PORT = 8080;
-
- private String hostAddress = null;
-
- protected ConfigurationContext configurationContext;
- protected HttpFactory httpFactory;
- private SessionManager sessionManager;
-
- public SimpleHTTPServer() {
- }
-
- /**
- * Create a SimpleHTTPServer using default HttpFactory settings
- */
- public SimpleHTTPServer(ConfigurationContext configurationContext, int port) throws AxisFault {
- this(new HttpFactory(configurationContext, port));
- }
-
- /**
- * Create a configured SimpleHTTPServer
- */
- public SimpleHTTPServer(HttpFactory httpFactory) throws AxisFault {
- this.httpFactory = httpFactory;
- this.configurationContext = httpFactory.getConfigurationContext();
- this.port = httpFactory.getPort();
- TransportInDescription httpDescription =
- new TransportInDescription(Constants.TRANSPORT_HTTP);
- httpDescription.setReceiver(this);
- httpFactory.getListenerManager().addListener(httpDescription, true);
- sessionManager = new SessionManager();
- }
-
- /**
- * init method in TransportListener
- *
- * @param axisConf
- * @param transprtIn
- * @throws AxisFault
- */
- public void init(ConfigurationContext axisConf, TransportInDescription transprtIn)
- throws AxisFault {
- try {
- this.configurationContext = axisConf;
-
- Parameter param = transprtIn.getParameter(PARAM_PORT);
- if (param != null) {
- this.port = Integer.parseInt((String) param.getValue());
- }
-
- if (httpFactory == null) {
- httpFactory = new HttpFactory(configurationContext, port);
- }
-
- param = transprtIn.getParameter(HOST_ADDRESS);
- if (param != null) {
- hostAddress = ((String) param.getValue()).trim();
- } else {
- hostAddress = httpFactory.getHostAddress();
- }
- } catch (Exception e1) {
- throw AxisFault.makeFault(e1);
- }
- }
-
- /**
- * Method main
- *
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- int port = DEFAULT_PORT;
- OptionsParser optionsParser = new OptionsParser(args);
-
- args = optionsParser.getRemainingArgs();
- // first check if we should print usage
- if ((optionsParser.isFlagSet('?') > 0) || (optionsParser.isFlagSet('h') > 0) ||
- args == null || args.length == 0 || args.length > 3) {
- printUsage();
- }
- String paramPort = optionsParser.isValueSet('p');
- if (paramPort != null) {
- port = Integer.parseInt(paramPort);
- }
-
- boolean startAllTransports = "all".equals(optionsParser.isValueSet('t'));
- String repository = optionsParser.isValueSet('r');
- if (repository == null) {
- args = optionsParser.getRemainingArgs();
- if (args != null && args[0] != null && !args[0].equals("")) {
- repository = args[0];
- } else {
- printUsage();
- }
- }
-
- System.out.println("[SimpleHTTPServer] Starting");
- System.out.println("[SimpleHTTPServer] Using the Axis2 Repository "
- + new File(repository).getAbsolutePath());
- System.out.println("[SimpleHTTPServer] Listening on port " + port);
- try {
- ConfigurationContext configctx = ConfigurationContextFactory
- .createConfigurationContextFromFileSystem(repository, null);
- SimpleHTTPServer receiver = new SimpleHTTPServer(configctx, port);
- Runtime.getRuntime().addShutdownHook(new ShutdownThread(receiver));
- receiver.start();
- ListenerManager listenerManager = configctx .getListenerManager();
- TransportInDescription trsIn = new TransportInDescription(Constants.TRANSPORT_HTTP);
- trsIn.setReceiver(receiver);
- if (listenerManager == null) {
- listenerManager = new ListenerManager();
- listenerManager.init(configctx);
- }
- listenerManager.addListener(trsIn, true);
-
- // should all transports be started? specified as "-t all"
- if (startAllTransports) {
- Iterator iter = configctx.getAxisConfiguration().
- getTransportsIn().keySet().iterator();
- while (iter.hasNext()) {
- QName trp = (QName) iter.next();
- if (!new QName(Constants.TRANSPORT_HTTP).equals(trp)) {
- trsIn = (TransportInDescription)
- configctx.getAxisConfiguration().getTransportsIn().get(trp);
- listenerManager.addListener(trsIn, false);
- }
- }
- }
-
- System.out.println("[SimpleHTTPServer] Started");
- } catch (Throwable t) {
- log.fatal("Error starting SimpleHTTPServer", t);
- System.out.println("[SimpleHTTPServer] Shutting down");
- }
- }
-
- public static void printUsage() {
- System.out.println("Usage: SimpleHTTPServer [options] -r <repository>");
- System.out.println(" Opts: -? this message");
- System.out.println();
- System.out.println(" -p port :to listen on (default is 8080)");
- System.out.println(
- " -t all :to start all transports defined in the axis2 configuration");
- System.exit(1);
- }
-
-
- /**
- * Start this server as a NON-daemon.
- */
- public void start() throws AxisFault {
- try {
- embedded = new SimpleHttpServer(httpFactory, port);
- embedded.init();
- embedded.start();
- } catch (IOException e) {
- log.error(e.getMessage(), e);
- throw AxisFault.makeFault(e);
- }
- }
-
- /**
- * Stop this server. Can be called safely if the system is already stopped,
- * or if it was never started.
- * This will interrupt any pending accept().
- */
- public void stop() {
- System.out.println("[SimpleHTTPServer] Stop called");
- if (embedded != null) {
- try {
- embedded.destroy();
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- }
- }
- }
-
- /**
- * replyToEPR
- * If the user has given host address paramter then it gets the high priority and
- * ERP will be creatd using that
- * N:B - hostAddress should be a complete url (http://www.myApp.com/ws)
- *
- * @param serviceName
- * @param ip
- * @return an EndpointReference
- * @see org.apache.axis2.transport.TransportListener#getEPRForService(String,String)
- */
- public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
- //if host address is present
- if (hostAddress != null) {
- if (embedded != null) {
- String endpointRefernce = hostAddress ;
- if(configurationContext.getServiceContextPath().startsWith("/")){
- endpointRefernce = endpointRefernce +
- configurationContext.getServiceContextPath() + "/" + serviceName;
- } else {
- endpointRefernce = endpointRefernce + '/' +
- configurationContext.getServiceContextPath() + "/" + serviceName;
- }
- return new EndpointReference[]{new EndpointReference(endpointRefernce + "/")};
- } else {
- throw new AxisFault("Unable to generate EPR for the transport : http");
- }
- }
- //if the host address is not present
- String ipAddress;
- if (ip != null) {
- ipAddress = ip;
- } else {
- try {
- if(localAddress==null){
- localAddress = Utils.getIpAddress(configurationContext.getAxisConfiguration());
- }
- if (localAddress == null) {
- ipAddress = "127.0.0.1";
- } else {
- ipAddress = localAddress;
- }
- } catch (SocketException e) {
- throw AxisFault.makeFault(e);
- }
- }
- if (embedded != null) {
- String endpointRefernce = "http://" + ipAddress + ":" + embedded.getPort() ;
- if(configurationContext.getServiceContextPath().startsWith("/")){
- endpointRefernce = endpointRefernce +
- configurationContext.getServiceContextPath() + "/" + serviceName;
- } else {
- endpointRefernce = endpointRefernce + '/' +
- configurationContext.getServiceContextPath() + "/" + serviceName;
- }
-
-
- return new EndpointReference[]{new EndpointReference(endpointRefernce + "/")};
- } else {
- throw new AxisFault("Unable to generate EPR for the transport : http");
- }
- }
-
- /**
- * Getter for httpFactory
- */
- public HttpFactory getHttpFactory() {
- return httpFactory;
- }
-
- /**
- * Method getConfigurationContext
- *
- * @return the system context
- */
- public ConfigurationContext getConfigurationContext() {
- return configurationContext;
- }
-
- /**
- * replyToEPR
- * If the user has given host address paramter then it gets the high priority and
- * ERP will be creatd using that
- * N:B - hostAddress should be a complte url (http://www.myApp.com/ws)
- *
- * @param serviceName
- * @param ip
- * @return an EndpointReference
- * @see org.apache.axis2.transport.TransportListener#getEPRForService(String,String)
- */
- public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
- return getEPRsForService(serviceName, ip)[0];
- }
-
- /**
- * Checks if this HTTP server instance is running.
- *
- * @return true/false
- */
- public boolean isRunning() {
- if (embedded == null) {
- return false;
- }
-
- return embedded.isRunning();
- }
-
- static class ShutdownThread extends Thread {
- private SimpleHTTPServer server = null;
-
- public ShutdownThread(SimpleHTTPServer server) {
- super();
- this.server = server;
- }
-
- public void run() {
- System.out.println("[SimpleHTTPServer] Shutting down");
- server.stop();
- System.out.println("[SimpleHTTPServer] Shutdown complete");
- }
- }
-
-
- public SessionContext getSessionContext(MessageContext messageContext) {
- String sessionKey = (String) messageContext.getProperty(HTTPConstants.COOKIE_STRING);
- return this.sessionManager.getSessionContext(sessionKey);
- }
-
- public void destroy() {
- this.configurationContext = null;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.axis2.transport.http;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.SessionContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.engine.ListenerManager;
+import org.apache.axis2.transport.TransportListener;
+import org.apache.axis2.transport.http.server.HttpFactory;
+import org.apache.axis2.transport.http.server.HttpUtils;
+import org.apache.axis2.transport.http.server.SessionManager;
+import org.apache.axis2.transport.http.server.SimpleHttpServer;
+import org.apache.axis2.util.OptionsParser;
+import org.apache.axis2.util.Utils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.namespace.QName;
+import java.io.File;
+import java.io.IOException;
+import java.net.SocketException;
+import java.util.Iterator;
+
+/**
+ * This is a simple implementation of an HTTP server for processing
+ * SOAP requests via Apache's xml-axis2.
+ * It can be used with no configuration other than the port to listen on, or it can
+ * be configured in detail with an HttpFactory.
+ */
+public class SimpleHTTPServer implements TransportListener {
+
+ private static final Log log = LogFactory.getLog(SimpleHTTPServer.class);
+
+ /**
+ * Embedded commons http core based server
+ */
+ SimpleHttpServer embedded = null;
+ private String localAddress;
+ int port = -1;
+
+ public static int DEFAULT_PORT = 8080;
+
+ private String hostAddress = null;
+
+ protected ConfigurationContext configurationContext;
+ protected HttpFactory httpFactory;
+ private SessionManager sessionManager;
+
+ public SimpleHTTPServer() {
+ }
+
+ /**
+ * Create a SimpleHTTPServer using default HttpFactory settings
+ */
+ public SimpleHTTPServer(ConfigurationContext configurationContext, int port) throws AxisFault {
+ this(new HttpFactory(configurationContext, port));
+ }
+
+ /**
+ * Create a configured SimpleHTTPServer
+ */
+ public SimpleHTTPServer(HttpFactory httpFactory) throws AxisFault {
+ this.httpFactory = httpFactory;
+ this.configurationContext = httpFactory.getConfigurationContext();
+ this.port = httpFactory.getPort();
+ TransportInDescription httpDescription =
+ new TransportInDescription(Constants.TRANSPORT_HTTP);
+ httpDescription.setReceiver(this);
+ httpFactory.getListenerManager().addListener(httpDescription, true);
+ sessionManager = new SessionManager();
+ }
+
+ /**
+ * init method in TransportListener
+ *
+ * @param axisConf
+ * @param transprtIn
+ * @throws AxisFault
+ */
+ public void init(ConfigurationContext axisConf, TransportInDescription transprtIn)
+ throws AxisFault {
+ try {
+ this.configurationContext = axisConf;
+
+ Parameter param = transprtIn.getParameter(PARAM_PORT);
+ if (param != null) {
+ this.port = Integer.parseInt((String) param.getValue());
+ }
+
+ if (httpFactory == null) {
+ httpFactory = new HttpFactory(configurationContext, port);
+ }
+
+ param = transprtIn.getParameter(HOST_ADDRESS);
+ if (param != null) {
+ hostAddress = ((String) param.getValue()).trim();
+ } else {
+ hostAddress = httpFactory.getHostAddress();
+ }
+ } catch (Exception e1) {
+ throw AxisFault.makeFault(e1);
+ }
+ }
+
+ /**
+ * Method main
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception {
+ int port = DEFAULT_PORT;
+ OptionsParser optionsParser = new OptionsParser(args);
+
+ args = optionsParser.getRemainingArgs();
+ // first check if we should print usage
+ if ((optionsParser.isFlagSet('?') > 0) || (optionsParser.isFlagSet('h') > 0) ||
+ args == null || args.length == 0 || args.length > 3) {
+ printUsage();
+ }
+ String paramPort = optionsParser.isValueSet('p');
+ if (paramPort != null) {
+ port = Integer.parseInt(paramPort);
+ }
+
+ boolean startAllTransports = "all".equals(optionsParser.isValueSet('t'));
+ String repository = optionsParser.isValueSet('r');
+ if (repository == null) {
+ args = optionsParser.getRemainingArgs();
+ if (args != null && args[0] != null && !args[0].equals("")) {
+ repository = args[0];
+ } else {
+ printUsage();
+ }
+ }
+
+ System.out.println("[SimpleHTTPServer] Starting");
+ System.out.println("[SimpleHTTPServer] Using the Axis2 Repository "
+ + new File(repository).getAbsolutePath());
+ System.out.println("[SimpleHTTPServer] Listening on port " + port);
+ try {
+ ConfigurationContext configctx = ConfigurationContextFactory
+ .createConfigurationContextFromFileSystem(repository, null);
+ SimpleHTTPServer receiver = new SimpleHTTPServer(configctx, port);
+ Runtime.getRuntime().addShutdownHook(new ShutdownThread(receiver));
+ receiver.start();
+ ListenerManager listenerManager = configctx .getListenerManager();
+ TransportInDescription trsIn = new TransportInDescription(Constants.TRANSPORT_HTTP);
+ trsIn.setReceiver(receiver);
+ if (listenerManager == null) {
+ listenerManager = new ListenerManager();
+ listenerManager.init(configctx);
+ }
+ listenerManager.addListener(trsIn, true);
+
+ // should all transports be started? specified as "-t all"
+ if (startAllTransports) {
+ Iterator iter = configctx.getAxisConfiguration().
+ getTransportsIn().keySet().iterator();
+ while (iter.hasNext()) {
+ QName trp = (QName) iter.next();
+ if (!new QName(Constants.TRANSPORT_HTTP).equals(trp)) {
+ trsIn = (TransportInDescription)
+ configctx.getAxisConfiguration().getTransportsIn().get(trp);
+ listenerManager.addListener(trsIn, false);
+ }
+ }
+ }
+
+ System.out.println("[SimpleHTTPServer] Started");
+ } catch (Throwable t) {
+ log.fatal("Error starting SimpleHTTPServer", t);
+ System.out.println("[SimpleHTTPServer] Shutting down");
+ }
+ }
+
+ public static void printUsage() {
+ System.out.println("Usage: SimpleHTTPServer [options] -r <repository>");
+ System.out.println(" Opts: -? this message");
+ System.out.println();
+ System.out.println(" -p port :to listen on (default is 8080)");
+ System.out.println(
+ " -t all :to start all transports defined in the axis2 configuration");
+ System.exit(1);
+ }
+
+
+ /**
+ * Start this server as a NON-daemon.
+ */
+ public void start() throws AxisFault {
+ try {
+ embedded = new SimpleHttpServer(httpFactory, port);
+ embedded.init();
+ embedded.start();
+ } catch (IOException e) {
+ log.error(e.getMessage(), e);
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ /**
+ * Stop this server. Can be called safely if the system is already stopped,
+ * or if it was never started.
+ * This will interrupt any pending accept().
+ */
+ public void stop() {
+ System.out.println("[SimpleHTTPServer] Stop called");
+ if (embedded != null) {
+ try {
+ embedded.destroy();
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ }
+ }
+ }
+
+ /**
+ * replyToEPR
+ * If the user has given host address paramter then it gets the high priority and
+ * ERP will be creatd using that
+ * N:B - hostAddress should be a complete url (http://www.myApp.com/ws)
+ *
+ * @param serviceName
+ * @param ip
+ * @return an EndpointReference
+ * @see org.apache.axis2.transport.TransportListener#getEPRForService(String,String)
+ */
+ public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
+ //if host address is present
+ if (hostAddress != null) {
+ if (embedded != null) {
+ String endpointRefernce = hostAddress ;
+ if(configurationContext.getServiceContextPath().startsWith("/")){
+ endpointRefernce = endpointRefernce +
+ configurationContext.getServiceContextPath() + "/" + serviceName;
+ } else {
+ endpointRefernce = endpointRefernce + '/' +
+ configurationContext.getServiceContextPath() + "/" + serviceName;
+ }
+ return new EndpointReference[]{new EndpointReference(endpointRefernce + "/")};
+ } else {
+ throw new AxisFault("Unable to generate EPR for the transport : http");
+ }
+ }
+ //if the host address is not present
+ String ipAddress;
+ if (ip != null) {
+ ipAddress = ip;
+ } else {
+ try {
+ if(localAddress==null){
+ localAddress = Utils.getIpAddress(configurationContext.getAxisConfiguration());
+ }
+ if (localAddress == null) {
+ ipAddress = "127.0.0.1";
+ } else {
+ ipAddress = localAddress;
+ }
+ } catch (SocketException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+ if (embedded != null) {
+ String endpointRefernce = "http://" + ipAddress + ":" + embedded.getPort() ;
+ if(configurationContext.getServiceContextPath().startsWith("/")){
+ endpointRefernce = endpointRefernce +
+ configurationContext.getServiceContextPath() + "/" + serviceName;
+ } else {
+ endpointRefernce = endpointRefernce + '/' +
+ configurationContext.getServiceContextPath() + "/" + serviceName;
+ }
+
+
+ return new EndpointReference[]{new EndpointReference(endpointRefernce + "/")};
+ } else {
+ throw new AxisFault("Unable to generate EPR for the transport : http");
+ }
+ }
+
+ /**
+ * Getter for httpFactory
+ */
+ public HttpFactory getHttpFactory() {
+ return httpFactory;
+ }
+
+ /**
+ * Method getConfigurationContext
+ *
+ * @return the system context
+ */
+ public ConfigurationContext getConfigurationContext() {
+ return configurationContext;
+ }
+
+ /**
+ * replyToEPR
+ * If the user has given host address paramter then it gets the high priority and
+ * ERP will be creatd using that
+ * N:B - hostAddress should be a complte url (http://www.myApp.com/ws)
+ *
+ * @param serviceName
+ * @param ip
+ * @return an EndpointReference
+ * @see org.apache.axis2.transport.TransportListener#getEPRForService(String,String)
+ */
+ public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
+ return getEPRsForService(serviceName, ip)[0];
+ }
+
+ /**
+ * Checks if this HTTP server instance is running.
+ *
+ * @return true/false
+ */
+ public boolean isRunning() {
+ if (embedded == null) {
+ return false;
+ }
+
+ return embedded.isRunning();
+ }
+
+ static class ShutdownThread extends Thread {
+ private SimpleHTTPServer server = null;
+
+ public ShutdownThread(SimpleHTTPServer server) {
+ super();
+ this.server = server;
+ }
+
+ public void run() {
+ System.out.println("[SimpleHTTPServer] Shutting down");
+ server.stop();
+ System.out.println("[SimpleHTTPServer] Shutdown complete");
+ }
+ }
+
+
+ public SessionContext getSessionContext(MessageContext messageContext) {
+ String sessionKey = (String) messageContext.getProperty(HTTPConstants.COOKIE_STRING);
+ return this.sessionManager.getSessionContext(sessionKey);
+ }
+
+ public void destroy() {
+ this.configurationContext = null;
+ }
+}
Propchange: webservices/commons/trunk/modules/transport/modules/http/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
------------------------------------------------------------------------------
svn:eol-style = native