JSON, make sure the messageName that starts the JSON String passed in via the client matches the Axis2 server operation name defined in the service class
diff --git a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
index 3823546..9184ce6 100644
--- a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
+++ b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
@@ -133,6 +133,7 @@
             newNodeMap.put(elementQname, mainXmlNode);
             configContext.setProperty(JsonConstant.XMLNODES, newNodeMap);
         }
+        log.debug("GsonXMLStreamReader.process() completed");
         isProcessed = true;
     }
 
diff --git a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java
index 95646b1..2890a90 100644
--- a/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java
+++ b/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamWriter.java
@@ -26,6 +26,8 @@
 import org.apache.axis2.json.factory.JsonObject;
 import org.apache.axis2.json.factory.XmlNode;
 import org.apache.axis2.json.factory.XmlNodeGenerator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ws.commons.schema.XmlSchema;
 
 import javax.xml.namespace.NamespaceContext;
@@ -43,6 +45,8 @@
 
 public class GsonXMLStreamWriter implements XMLStreamWriter {
 
+    private static final Log log = LogFactory.getLog(GsonXMLStreamWriter.class);
+
     private JsonWriter jsonWriter;
 
     /**
@@ -125,6 +129,7 @@
         }
         isProcessed = true;
         this.jsonWriter.beginObject();
+        log.debug("GsonXMLStreamWriter.process() completed");
     }
 
 
diff --git a/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java b/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java
index 4a75d95..7cee12a 100644
--- a/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java
+++ b/modules/json/src/org/apache/axis2/json/gson/JSONMessageHandler.java
@@ -65,12 +65,15 @@
     public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
         AxisOperation axisOperation = msgContext.getAxisOperation();
         if (axisOperation != null) {
+            log.debug("Axis operation has been found from the MessageContext, proceeding with the JSON request");
             MessageReceiver messageReceiver = axisOperation.getMessageReceiver();
             if (messageReceiver instanceof JsonRpcMessageReceiver || messageReceiver instanceof JsonInOnlyRPCMessageReceiver) {
                 // do not need to parse XMLSchema list, as  this message receiver will not use GsonXMLStreamReader  to read the inputStream.
             } else {
+                log.debug("JSON MessageReceiver found, proceeding with the JSON request");
                 Object tempObj = msgContext.getProperty(JsonConstant.IS_JSON_STREAM);
                 if (tempObj != null) {
+                    log.debug("JSON MessageReceiver found JSON stream, proceeding with the JSON request");
                     boolean isJSON = Boolean.valueOf(tempObj.toString());
                     Object o = msgContext.getProperty(JsonConstant.GSON_XML_STREAM_READER);
                     if (o != null) {
@@ -80,11 +83,10 @@
                         gsonXMLStreamReader.initXmlStreamReader(elementQname, schemas, msgContext.getConfigurationContext());
                         OMXMLParserWrapper stAXOMBuilder = OMXMLBuilderFactory.createStAXOMBuilder(gsonXMLStreamReader);
                         OMElement omElement = stAXOMBuilder.getDocumentElement();
+                        log.debug("GsonXMLStreamReader found elementQname: " + elementQname);
                         msgContext.getEnvelope().getBody().addChild(omElement);
                     } else {
-                        if (log.isDebugEnabled()) {
-                            log.debug("GsonXMLStreamReader is null");
-                        }
+                        log.error("GsonXMLStreamReader is null");
                         throw new AxisFault("GsonXMLStreamReader should not be null");
                     }
                 } else {
@@ -92,10 +94,7 @@
                 }
             }
         } else {
-            if (log.isDebugEnabled()) {
-                log.debug("Axis operation is null");
-            }
-            // message hasn't been dispatched to operation, ignore it
+            log.debug("Axis operation is null, message hasn't been dispatched to operation, ignore it");
         }
         return InvocationResponse.CONTINUE;
     }
diff --git a/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java b/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
index b65ecb7..022f5be 100644
--- a/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
+++ b/modules/json/src/org/apache/axis2/json/gson/JsonBuilder.java
@@ -55,6 +55,7 @@
                 log.debug("Inputstream is null, This is possible with GET request");
             }
         }
+        log.debug("JsonBuilder.processDocument() has completed, returning default envelope");
         // dummy envelop
         SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
         return soapFactory.getDefaultEnvelope();
diff --git a/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java b/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java
index cbd3033..776674f 100644
--- a/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java
+++ b/modules/json/src/org/apache/axis2/json/gson/JsonFormatter.java
@@ -116,6 +116,7 @@
                     throw AxisFault.makeFault(e);
                 }
             }
+            log.debug("JsonFormatter.writeTo() has completed");
         } catch (UnsupportedEncodingException e) {
             msg = "Exception occur when try to encode output stream usig  " +
                     Constants.Configuration.CHARACTER_SET_ENCODING + " charset";
diff --git a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java
index 6a2c591..a77c617 100644
--- a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java
+++ b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonInOnlyRPCMessageReceiver.java
@@ -57,6 +57,7 @@
                 Object serviceObj = getTheImplementationObject(inMessage);
                 AxisOperation op = inMessage.getOperationContext().getAxisOperation();
                 String operation = op.getName().getLocalPart();
+                log.debug("JsonInOnlyRPCMessageReceiver.invokeBusinessLogic() executing invokeService() with operation: " + operation);
                 invokeService(jsonReader, serviceObj, operation);
             } else {
                 throw new AxisFault("GsonXMLStreamReader should have put as a property of messageContext " +
diff --git a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java
index c893407..b0cfcf7 100644
--- a/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java
+++ b/modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java
@@ -51,12 +51,17 @@
             }
             jsonReader.beginObject();
             String messageName=jsonReader.nextName();     // get message name from input json stream
+            if (messageName == null || !messageName.equals(operation.getName())) {
+                log.error("JsonUtils.invokeServiceClass() throwing IOException, messageName: " +messageName+ " is unknown, it does not match the axis2 operation, the method name: " + operation.getName());
+                throw new IOException("Bad Request");
+            }
             jsonReader.beginArray();
     
             int i = 0;
             for (Class paramType : paramClasses) {
                 jsonReader.beginObject();
                 argNames[i] = jsonReader.nextName();
+                log.debug("JsonUtils.invokeServiceClass() on messageName: " +messageName+ " , is currently processing argName: " + argNames[i]);
                 methodParam[i] = gson.fromJson(jsonReader, paramType);   // gson handle all types well and return an object from it
                 jsonReader.endObject();
                 i++;
@@ -77,9 +82,11 @@
         for (Method method : methodSet) {
             String mName = method.getName();
             if (mName.equals(methodName)) {
+                log.debug("JsonUtils.getOpMethod() returning methodName: " +methodName);
                 return method;
             }
         }
+        log.debug("JsonUtils.getOpMethod() returning null");
         return null;
     }
 
diff --git a/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java b/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java
index 324a5ec..1b7a1fe 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/JSONMessageHandler.java
@@ -65,10 +65,12 @@
     public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
         AxisOperation axisOperation = msgContext.getAxisOperation();
         if (axisOperation != null) {
+            log.debug("Axis operation has been found from the MessageContext, proceeding with the JSON request");
             MessageReceiver messageReceiver = axisOperation.getMessageReceiver();
             if (messageReceiver instanceof JsonRpcMessageReceiver || messageReceiver instanceof JsonInOnlyRPCMessageReceiver) {
                 // do not need to parse XMLSchema list, as  this message receiver will not use MoshiXMLStreamReader  to read the inputStream.
             } else {
+                log.debug("JSON MessageReceiver found, proceeding with the JSON request");
                 Object tempObj = msgContext.getProperty(JsonConstant.IS_JSON_STREAM);
                 if (tempObj != null) {
                     boolean isJSON = Boolean.valueOf(tempObj.toString());
@@ -82,9 +84,7 @@
                         OMElement omElement = stAXOMBuilder.getDocumentElement();
                         msgContext.getEnvelope().getBody().addChild(omElement);
                     } else {
-                        if (log.isDebugEnabled()) {
-                            log.debug("MoshiXMLStreamReader is null");
-                        }
+                        log.error("MoshiXMLStreamReader is null");
                         throw new AxisFault("MoshiXMLStreamReader should not be null");
                     }
                 } else {
@@ -92,10 +92,7 @@
                 }
             }
         } else {
-            if (log.isDebugEnabled()) {
-                log.debug("Axis operation is null");
-            }
-            // message hasn't been dispatched to operation, ignore it
+            log.debug("Axis operation is null, message hasn't been dispatched to operation, ignore it");
         }
         return InvocationResponse.CONTINUE;
     }
diff --git a/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java b/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java
index f2fabe8..09976cf 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/JsonBuilder.java
@@ -65,6 +65,7 @@
                 log.debug("Inputstream is null, This is possible with GET request");
             }
         }
+        log.debug("JsonBuilder.processDocument() has completed, returning default envelope");
         // dummy envelope
         SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
         return soapFactory.getDefaultEnvelope();
diff --git a/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java b/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java
index 93870ea..5785849 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/JsonFormatter.java
@@ -121,6 +121,7 @@
                     throw AxisFault.makeFault(e);
                 }
             }
+            log.debug("JsonFormatter.writeTo() has completed");
         } catch (Exception e) {
             msg = "Exception occurred when try to encode output stream using  " +
                     Constants.Configuration.CHARACTER_SET_ENCODING + " charset";
diff --git a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java
index b3221a2..6700902 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamReader.java
@@ -135,6 +135,7 @@
             configContext.setProperty(JsonConstant.XMLNODES, newNodeMap);
         }
         isProcessed = true;
+        log.debug("MoshiXMLStreamReader.process() completed");
     }
 
 
diff --git a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java
index f00caea..fc84652 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/MoshiXMLStreamWriter.java
@@ -130,6 +130,7 @@
         }
         isProcessed = true;
         this.jsonWriter.beginObject();
+        log.debug("MoshiXMLStreamWriter.process() completed");
     }
 
 
diff --git a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java
index 1959895..6f2c35d 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonInOnlyRPCMessageReceiver.java
@@ -57,6 +57,7 @@
                 Object serviceObj = getTheImplementationObject(inMessage);
                 AxisOperation op = inMessage.getOperationContext().getAxisOperation();
                 String operation = op.getName().getLocalPart();
+                log.debug("JsonInOnlyRPCMessageReceiver.invokeBusinessLogic() executing invokeService() with operation: " + operation);
                 invokeService(jsonReader, serviceObj, operation);
             } else {
                 throw new AxisFault("MoshiXMLStreamReader should have put as a property of messageContext " +
diff --git a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java
index 012ca3e..712f6ce 100644
--- a/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java
+++ b/modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java
@@ -104,6 +104,10 @@
     
             jsonReader.beginObject();
             String messageName=jsonReader.nextName();     // get message name from input json stream
+            if (messageName == null || !messageName.equals(operation.getName())) {
+                log.error("JsonUtils.invokeServiceClass() throwing IOException, messageName: " +messageName+ " is unknown, it does not match the axis2 operation, the method name: " + operation.getName());
+                throw new IOException("Bad Request");
+            }
             jsonReader.beginArray();
     
             int i = 0;
diff --git a/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java b/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java
index bc262c1..761dd1f 100644
--- a/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java
+++ b/modules/kernel/src/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcher.java
@@ -60,7 +60,7 @@
                 return service.getOperation(operationName);
             } else {
                 log.debug(messageContext.getLogIDString() +
-                        " Attempted to check for Operation using target endpoint URI, but the operation fragment was missing");
+                        " Attempted to check for Operation using target endpoint URI, but the operation fragment was missing on filePart: " + filePart + " , service name: " + service.getName());
                 return null;
             }
         } else {