Author: midon
Date: Tue Jul 15 13:01:30 2008
New Revision: 677021
URL: http://svn.apache.org/viewvc?rev=677021&view=rev
Log:
better logging
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
(original)
+++
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpExternalService.java
Tue Jul 15 13:01:30 2008
@@ -45,7 +45,6 @@
import org.apache.ode.utils.wsdl.Messages;
import org.apache.ode.utils.wsdl.WsdlUtils;
import org.w3c.dom.Element;
-import org.w3c.dom.Document;
import javax.wsdl.Binding;
import javax.wsdl.BindingOperation;
@@ -88,6 +87,7 @@
protected Binding portBinding;
public HttpExternalService(ProcessConf pconf, QName serviceName, String
portName, ExecutorService executorService, Scheduler scheduler, BpelServer
server) {
+ if(log.isDebugEnabled()) log.debug("new HTTP External service, service
name=["+serviceName+"]; port name=["+portName+"]");
this.portName = portName;
this.serviceName = serviceName;
this.executorService = executorService;
@@ -214,8 +214,10 @@
public Void call() throws Exception {
try {
// simply execute the http method
- if (log.isDebugEnabled())
- log.debug("Executing http request : " + method.getName() +
" " + method.getURI());
+ if (log.isDebugEnabled()){
+ log.debug("Executing HTTP Request : " + method.getName() +
" " + method.getURI());
+ log.debug(HttpHelper.requestToString(method));
+ }
final int statusCode = client.executeMethod(method);
// invoke getResponseBody to force the loading of the body
@@ -223,7 +225,10 @@
// as a result the connection might be closed before the body
processing (see the finally clause below).
byte[] responseBody = method.getResponseBody();
// ... and process the response
- if (log.isDebugEnabled()) log.debug("Received response for MEX
" + mexId);
+ if (log.isDebugEnabled()) {
+ log.debug("Received response for MEX " + mexId);
+ log.debug(HttpHelper.responseToString(method));
+ }
processResponse(statusCode);
} catch (final IOException e) {
// ODE MEX needs to be invoked in a TX.
@@ -288,7 +293,7 @@
}
} catch (Exception e) {
String errmsg = "Exception occured while
processing the HTTP response of a two-way request: " + e.getMessage();
- log.error(errmsg, e);
+ log.error("[Service: "+serviceName+", Port:
"+portName+", Operation: "+operation.getName()+"] "+errmsg, e);
PartnerRoleMessageExchange odeMex =
(PartnerRoleMessageExchange) server.getEngine().getMessageExchange(mexId);
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg, null);
}
@@ -296,7 +301,7 @@
}
});
} catch (Exception transactionException) {
- String errmsg = "Error executing reply transaction; reply will
be lost.";
+ String errmsg = "[Service: "+serviceName+", Port:
"+portName+", Operation: "+operation.getName()+"] Error executing reply
transaction; reply will be lost.";
log.error(errmsg, transactionException);
}
}
@@ -313,7 +318,7 @@
private void _5xx_serverError() throws IOException {
String errmsg;
if (log.isWarnEnabled()) {
- errmsg = "Status-Line: " + method.getStatusLine() + " for " +
method.getURI();
+ errmsg = "[Service: "+serviceName+", Port: "+portName+",
Operation: "+operation.getName()+"] Status-Line: " + method.getStatusLine() + "
for " + method.getURI();
log.warn(errmsg);
}
PartnerRoleMessageExchange odeMex = (PartnerRoleMessageExchange)
server.getEngine().getMessageExchange(mexId);
@@ -324,7 +329,7 @@
try {
body = method.getResponseBodyAsString();
} catch (IOException e) {
- errmsg = "Unable to get the request body : " + e.getMessage();
+ errmsg = "[Service: "+serviceName+", Port: "+portName+",
Operation: "+operation.getName()+"] Unable to get the request body : " +
e.getMessage();
log.error(errmsg, e);
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg,
HttpHelper.prepareDetailsElement(method));
return;
@@ -343,7 +348,7 @@
if (receivedType == null) {
if (log.isWarnEnabled())
- log.warn("Received Response with a body but no
'Content-Type' header! Will try to parse nevertheless.");
+ log.warn("[Service: "+serviceName+", Port:
"+portName+", Operation: "+operation.getName()+"] Received Response with a body
but no 'Content-Type' header! Will try to parse nevertheless.");
}
// try to parse body
@@ -383,7 +388,7 @@
// finally send the fault. We did it!
if (log.isWarnEnabled())
- log.warn("Fault response: faultName=" + faultName + "
faultType=" + faultType + "\n" + DOMUtils.domToString(response.getMessage()));
+ log.warn("[Service: "+serviceName+", Port:
"+portName+", Operation: "+operation.getName()+"] Fault response: faultName=" +
faultName + " faultType=" + faultType + "\n" +
DOMUtils.domToString(response.getMessage()));
odeMex.replyWithFault(faultName, response);
}
@@ -402,7 +407,7 @@
private void _2xx_success() throws IOException {
PartnerRoleMessageExchange odeMex = (PartnerRoleMessageExchange)
server.getEngine().getMessageExchange(mexId);
if (log.isDebugEnabled())
- log.debug("HTTP Status-Line: " + method.getStatusLine() + "
for " + method.getURI());
+ log.debug("[Service: "+serviceName+", Port: "+portName+",
Operation: "+operation.getName()+"] HTTP Status-Line: " +
method.getStatusLine() + " for " + method.getURI());
if (log.isDebugEnabled()) log.debug("Received response for MEX " +
odeMex);
Operation opDef = odeMex.getOperation();
@@ -430,7 +435,7 @@
try {
body = method.getResponseBodyAsString();
} catch (IOException e) {
- String errmsg = "Unable to get the request body : " +
e.getMessage();
+ String errmsg = "[Service: "+serviceName+", Port:
"+portName+", Operation: "+operation.getName()+"] Unable to get the request
body : " + e.getMessage();
log.error(errmsg, e);
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg,
HttpHelper.prepareDetailsElement(method));
return;
@@ -468,7 +473,7 @@
Element bodyElement = DOMUtils.stringToDOM(body);
partElement =
httpMethodConverter.createPartElement(partDef, bodyElement);
} catch (Exception e) {
- String errmsg = "Unable to parse the response
body: " + e.getMessage();
+ String errmsg = "[Service: "+serviceName+", Port:
"+portName+", Operation: "+operation.getName()+"] Unable to parse the response
body: " + e.getMessage();
log.error(errmsg, e);
odeMex.replyWithFailure(MessageExchange.FailureType.FORMAT_ERROR, errmsg,
HttpHelper.prepareDetailsElement(method));
return;
@@ -498,7 +503,7 @@
}
void replyWithFailure(String errmsg) {
- log.error(errmsg);
+ log.error("[Service: "+serviceName+", Port: "+portName+",
Operation: "+operation.getName()+"] "+errmsg);
PartnerRoleMessageExchange odeMex = (PartnerRoleMessageExchange)
server.getEngine().getMessageExchange(mexId);
odeMex.replyWithFailure(MessageExchange.FailureType.OTHER, errmsg,
HttpHelper.prepareDetailsElement(method));
}
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
(original)
+++
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/httpbinding/HttpHelper.java
Tue Jul 15 13:01:30 2008
@@ -28,6 +28,9 @@
import org.apache.commons.httpclient.StatusLine;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.params.HttpParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -38,6 +41,10 @@
import org.w3c.dom.Document;
import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.StringWriter;
+import java.io.PipedOutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -208,4 +215,67 @@
public static boolean isText(String contentType) {
return TEXT_MIME_TYPE_PATTERN.matcher(contentType).matches();
}
+
+
+ public static String requestToString(HttpMethod m) {
+ StringBuilder sb = new StringBuilder(256);
+ try {
+ sb.append("HTTP Request Details: \n").append(m.getName()).append("
").append(m.getURI());
+ } catch (URIException e) {
+ // not that important
+ if (log.isDebugEnabled()) log.debug(e);
+ }
+ sb.append("\nRequest Headers:");
+ Header[] headers = m.getRequestHeaders();
+ if (headers.length == 0) sb.append(" n/a");
+ for (int i = 0; i < headers.length; i++) {
+ Header h = headers[i];
+ sb.append("\n\t").append(h.getName()).append(":
").append(h.getValue());
+ }
+ if (m instanceof EntityEnclosingMethod) {
+ EntityEnclosingMethod eem = (EntityEnclosingMethod) m;
+ if (eem.getRequestEntity() != null) {
+ sb.append("\nRequest Entity:");
+
sb.append("\n\tContent-Type:").append(eem.getRequestEntity().getContentType());
+
sb.append("\n\tContent-Length:").append(eem.getRequestEntity().getContentLength());
+ if (eem.getRequestEntity() instanceof StringRequestEntity) {
+ StringRequestEntity sre = (StringRequestEntity)
eem.getRequestEntity();
+ sb.append("\n\tContent-Charset:").append(sre.getCharset());
+ sb.append("\n\tRequest
Entity:\n").append(sre.getContent());
+ }
+ }
+ }
+ return sb.toString();
+ }
+
+ public static String responseToString(HttpMethod m) {
+ StringBuilder sb = new StringBuilder(256);
+ try {
+ sb.append("HTTP Response Details:
\n").append(m.getName()).append(" ").append(m.getURI());
+ } catch (URIException e) {
+ // not that important
+ if (log.isDebugEnabled()) log.debug(e);
+ }
+ sb.append("\nStatus-Line: ").append(m.getStatusLine());
+ Header[] headers = m.getResponseHeaders();
+ if (headers.length != 0) sb.append("\nResponse Headers: ");
+ for (int i = 0; i < headers.length; i++) {
+ Header h = headers[i];
+ sb.append("\n\t").append(h.getName()).append(":
").append(h.getValue());
+ }
+ try {
+ if (StringUtils.isNotEmpty(m.getResponseBodyAsString())) {
+ sb.append("\nResponse
Entity:\n").append(m.getResponseBodyAsString());
+ }
+ } catch (IOException e) {
+ log.error(e);
+ }
+ Header[] footers = m.getResponseFooters();
+ if (footers.length != 0) sb.append("\nResponse Footers: ");
+ for (int i = 0; i < footers.length; i++) {
+ Header h = footers[i];
+ sb.append("\n\t").append(h.getName()).append(":
").append(h.getValue());
+ }
+ return sb.toString();
+ }
}
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
(original)
+++
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/URLEncodedTransformer.java
Tue Jul 15 13:01:30 2008
@@ -52,13 +52,10 @@
String partName = e.getKey();
Element node = e.getValue();
String nodeContent = DOMUtils.isEmptyElement(node) ? "" :
DOMUtils.getTextContent(node);
- if (nodeContent == null) {
- // if it is not a simple type, skip it
- if (log.isDebugEnabled())
- log.debug("Part " + partName + " skipped because
associated element is not of a simple type.");
- continue;
+ // if it is not a simple type, skip it
+ if (nodeContent != null) {
+ l.add(new NameValuePair(e.getKey(), nodeContent));
}
- l.add(new NameValuePair(e.getKey(), nodeContent));
}
return EncodingUtil.formUrlEncode(l.toArray(new NameValuePair[0]),
"UTF-8");
}
Modified:
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java?rev=677021&r1=677020&r2=677021&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
(original)
+++
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/util/UrlReplacementTransformer.java
Tue Jul 15 13:01:30 2008
@@ -73,26 +73,24 @@
{
Element value = e.getValue();
replacementValue = DOMUtils.isEmptyElement(value) ? "" :
DOMUtils.getTextContent(value);
- if (replacementValue == null) {
- // if it is not a simple type, skip it
- if(log.isDebugEnabled()) log.debug("Part "+partName+"
skipped because associated element is not of a simple type.");
- continue;
- }
}
- try {
- replacementValue = URIUtil.encodeWithinQuery(replacementValue);
- } catch (URIException urie) {
- // this exception is never thrown by the code of httpclient
- if (log.isWarnEnabled()) log.warn(urie.getMessage(), urie);
- }
+ // if it is not a simple type, skip it
+ if (replacementValue!=null) {
+ try {
+ replacementValue =
URIUtil.encodeWithinQuery(replacementValue);
+ } catch (URIException urie) {
+ // this exception is never thrown by the code of httpclient
+ if (log.isWarnEnabled()) log.warn(urie.getMessage(), urie);
+ }
- // first, search for parentheses
- String partPattern = "\\(" + partName + "\\)";
- if(!replace(result, partPattern, replacementValue)){
- // if parentheses not found, try braces
- partPattern = "\\{" + partName + "\\}";
- replace(result, partPattern, replacementValue);
+ // first, search for parentheses
+ String partPattern = "\\(" + partName + "\\)";
+ if(!replace(result, partPattern, replacementValue)){
+ // if parentheses not found, try braces
+ partPattern = "\\{" + partName + "\\}";
+ replace(result, partPattern, replacementValue);
+ }
}
}