Add GIOP stream dump debug code for better problem determination
git-svn-id: https://svn.apache.org/repos/asf/geronimo/yoko/trunk@1359557 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java b/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java
index a72998d..4f70cf2 100644
--- a/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java
+++ b/yoko-core/src/main/java/org/apache/yoko/orb/OB/GIOPConnectionThreaded.java
@@ -448,7 +448,13 @@
processException(State.Closed, ex, false);
break;
}
- logger.fine("Message body received ");
+ if (logger.isLoggable(Level.FINE)) {
+ logger.fine("Message body received ");
+ int currentpos = buf.pos_;
+ buf.pos_ = 0;
+ logger.fine("Received message are: \n" + buf.dumpData());
+ buf.pos_ = currentpos;
+ }
}
//
@@ -611,6 +617,7 @@
// Get the request timeout
//
int t = down.policies().requestTimeout;
+ int msgcount = 0;
//
// now we can start sending off the messages
@@ -671,11 +678,22 @@
&& !nextDown.operation().equals("_locate")) {
msgSentMarked = true;
properties_ |= Property.RequestSent;
+ // debug
+ if (logger.isLoggable(Level.FINE)) {
+ int currentpos = buf.pos_;
+ buf.pos_ = 0;
+ logger.fine("Sent message in blocking at msgcount="
+ + msgcount + ", size=" + buf.len_
+ + ", the message piece is: \n" + buf.dumpData());
+ buf.pos_ = currentpos;
+ msgcount++;
+ }
}
}
} else // Non blocking
{
synchronized (this) {
+ int msgcount = 0;
while (true) {
if (!down.unsent())
break;
@@ -720,6 +738,19 @@
&& dummy.operation().equals("_locate")) {
msgSentMarked = true;
properties_ |= Property.RequestSent;
+ // debug
+ if (logger.isLoggable(Level.FINE)) {
+ int currentpos = buf.pos_;
+ buf.pos_ = 0;
+ logger.fine("Sent message in non-blocking at msgcount="
+ + msgcount
+ + ", size="
+ + buf.len_
+ + ", the message piece is: \n"
+ + buf.dumpData());
+ buf.pos_ = currentpos;
+ msgcount++;
+ }
}
}
}
diff --git a/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java b/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
index 448c861..4fb0a34 100644
--- a/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
+++ b/yoko-core/src/main/java/org/apache/yoko/orb/OB/ValueReader.java
@@ -366,7 +366,8 @@
}
private void readHeader(Header h) {
- logger.fine("Reading header with tag value " + Integer.toHexString(h.tag));
+ logger.fine("Reading header with tag value " + Integer.toHexString(h.tag) + " at pos="
+ + in_.buf_.pos_);
//
// Special cases are handled elsewhere
@@ -965,8 +966,21 @@
if (remoteCodeBase instanceof CodeBaseProxy) {
remoteCodeBase = ((CodeBaseProxy) remoteCodeBase).getCodeBase();
}
+
+ java.io.Serializable serobj = null;
+ try {
+ serobj = valueHandler.readValue(in_, h.headerPos, repoClass, repid, remoteCodeBase);
+ } catch (RuntimeException ex) {
+ logger.log(Level.FINE, "RuntimeException happens when reading GIOP stream coming to pos_=" + in_.buf_.pos_);
+ logger.log(Level.FINE, "Wrong data section: \n" + in_.dumpData());
+ int currentpos = in_.buf_.pos_;
+ in_.buf_.pos_ = 0;
+ logger.log(Level.FINE, "Full GIOP stream dump: \n" + in_.dumpData());
+ in_.buf_.pos_ = currentpos;
+ throw ex;
+ }
- return valueHandler.readValue(in_, h.headerPos, repoClass, repid, remoteCodeBase);
+ return serobj;
}
private Class resolveRepoClass(String name, String codebase)