diff --git a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/OperationInvokingMessageHandler.java b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/OperationInvokingMessageHandler.java
index 68e20b0e3e..dde0011a48 100644
--- a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/OperationInvokingMessageHandler.java
+++ b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/OperationInvokingMessageHandler.java
@@ -152,38 +152,35 @@ public class OperationInvokingMessageHandler extends AbstractReplyProducingMessa
}
/**
- * First checks for the presence of a {@link JmxHeaders#OBJECT_NAME} header,
- * then falls back to this handler's {@link #defaultObjectName} if available.
+ * First checks if defaultObjectName is set, otherwise falls back on {@link JmxHeaders#OBJECT_NAME} header.
*/
private ObjectName resolveObjectName(Message> message) {
- ObjectName objectName = null;
- Object objectNameHeader = message.getHeaders().get(JmxHeaders.OBJECT_NAME);
- if (objectNameHeader instanceof ObjectName) {
- objectName = (ObjectName) objectNameHeader;
- }
- else if (objectNameHeader instanceof String) {
- try {
- objectName = ObjectNameManager.getInstance(objectNameHeader);
+ ObjectName objectName = this.defaultObjectName;
+ if (objectName == null){
+ Object objectNameHeader = message.getHeaders().get(JmxHeaders.OBJECT_NAME);
+ if (objectNameHeader instanceof ObjectName) {
+ objectName = (ObjectName) objectNameHeader;
}
- catch (MalformedObjectNameException e) {
- throw new IllegalArgumentException(e);
+ else if (objectNameHeader instanceof String) {
+ try {
+ objectName = ObjectNameManager.getInstance(objectNameHeader);
+ }
+ catch (MalformedObjectNameException e) {
+ throw new IllegalArgumentException(e);
+ }
}
}
- else {
- objectName = this.defaultObjectName;
- }
Assert.notNull(objectName, "Failed to resolve ObjectName.");
return objectName;
}
/**
- * First checks for the presence of a {@link JmxHeaders#OPERATION_NAME} header,
- * then falls back to this handler's {@link #defaultOperationName} if available.
+ * First checks if defaultOperationName is set, otherwise falls back on {@link JmxHeaders#OPERATION_NAME} header.
*/
private String resolveOperationName(Message> message) {
- String operationName = message.getHeaders().get(JmxHeaders.OPERATION_NAME, String.class);
- if (operationName == null) {
- operationName = this.defaultOperationName;
+ String operationName = this.defaultOperationName;
+ if (operationName == null){
+ operationName = message.getHeaders().get(JmxHeaders.OPERATION_NAME, String.class);
}
Assert.notNull(operationName, "Failed to resolve operation name.");
return operationName;
diff --git a/spring-integration-jmx/src/main/resources/org/springframework/integration/jmx/config/spring-integration-jmx-2.0.xsd b/spring-integration-jmx/src/main/resources/org/springframework/integration/jmx/config/spring-integration-jmx-2.0.xsd
index dcab9bde80..8877b83f4c 100644
--- a/spring-integration-jmx/src/main/resources/org/springframework/integration/jmx/config/spring-integration-jmx-2.0.xsd
+++ b/spring-integration-jmx/src/main/resources/org/springframework/integration/jmx/config/spring-integration-jmx-2.0.xsd
@@ -26,15 +26,16 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -44,12 +45,13 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -60,11 +62,12 @@
-
-
-
-
-
+
+
+
+
+
+
@@ -75,13 +78,14 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -92,10 +96,12 @@
-
-
-
-
+
+
+
+
+
+
@@ -107,35 +113,70 @@
-
-
-
-
- The MBeanServer to which this Control Bus should export MBeans.
-
-
-
-
-
-
- The domain name for the MBeans exported by this Control Bus.
-
-
-
-
-
-
- The Message Channel that can be used to send operation commands to
- this Control Bus. It must implement SubscribableChannel.
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ The domain name for the MBeans exported by this Control Bus.
+
+
+
+
+
+
+ The Message Channel that can be used to send operation commands to
+ this Control Bus. It must implement SubscribableChannel.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines inbound operation invoking type
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines outbound operation invoking type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines the name of the MBeanServer bean to connect to.
+
+
+
+
\ No newline at end of file
diff --git a/spring-integration-jmx/src/test/java/org/springframework/integration/jmx/OperationInvokingMessageHandlerTests.java b/spring-integration-jmx/src/test/java/org/springframework/integration/jmx/OperationInvokingMessageHandlerTests.java
index 053a0766db..df6afdeaad 100644
--- a/spring-integration-jmx/src/test/java/org/springframework/integration/jmx/OperationInvokingMessageHandlerTests.java
+++ b/spring-integration-jmx/src/test/java/org/springframework/integration/jmx/OperationInvokingMessageHandlerTests.java
@@ -71,12 +71,12 @@ public class OperationInvokingMessageHandlerTests {
handler.setServer(this.server);
handler.setDefaultObjectName(this.objectName);
handler.setOutputChannel(outputChannel);
+ handler.setDefaultOperationName("x");
handler.afterPropertiesSet();
Map params = new HashMap();
params.put("p1", "foo");
params.put("p2", "bar");
- Message> message = MessageBuilder.withPayload(params)
- .setHeader(JmxHeaders.OPERATION_NAME, "x").build();
+ Message> message = MessageBuilder.withPayload(params).build();
handler.handleMessage(message);
Message> reply = outputChannel.receive(0);
assertNotNull(reply);
@@ -90,9 +90,9 @@ public class OperationInvokingMessageHandlerTests {
handler.setServer(this.server);
handler.setDefaultObjectName(this.objectName);
handler.setOutputChannel(outputChannel);
+ handler.setDefaultOperationName("y");
handler.afterPropertiesSet();
- Message> message = MessageBuilder.withPayload("foo")
- .setHeader(JmxHeaders.OPERATION_NAME, "y").build();
+ Message> message = MessageBuilder.withPayload("foo").build();
handler.handleMessage(message);
}
@@ -103,11 +103,11 @@ public class OperationInvokingMessageHandlerTests {
handler.setServer(this.server);
handler.setDefaultObjectName(this.objectName);
handler.setOutputChannel(outputChannel);
+ handler.setDefaultOperationName("x");
handler.afterPropertiesSet();
Map params = new HashMap();
params.put("p1", "foo");
- Message> message = MessageBuilder.withPayload(params)
- .setHeader(JmxHeaders.OPERATION_NAME, "x").build();
+ Message> message = MessageBuilder.withPayload(params).build();
handler.handleMessage(message);
Message> reply = outputChannel.receive(0);
assertNotNull(reply);
@@ -121,10 +121,10 @@ public class OperationInvokingMessageHandlerTests {
handler.setServer(this.server);
handler.setDefaultObjectName(this.objectName);
handler.setOutputChannel(outputChannel);
+ handler.setDefaultOperationName("x");
handler.afterPropertiesSet();
List