.classpath
| 8 ++--
modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentService.java
| 17 +++++++++-
modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemAdd.java
| 6 +++
modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemDefinition.java
| 8 ++++
modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemExtension.java
| 6 ++-
modules/enterprise/server/embeddedagent/src/main/resources/module/main/module.xml
| 3 +
modules/enterprise/server/embeddedagent/src/main/resources/org/rhq/embeddedagent/extension/LocalDescriptions.properties
| 1
modules/enterprise/server/embeddedagent/src/main/resources/schema/embeddedagent.xsd
| 1
modules/enterprise/server/embeddedagent/src/test/java/org/rhq/embeddedagent/extension/SubsystemParsingTestCase.java
| 1
modules/enterprise/server/embeddedagent/src/test/resources/org/rhq/embeddedagent/extension/subsystem.xml
| 2 +
10 files changed, 47 insertions(+), 6 deletions(-)
New commits:
commit de47fe216953166ed41e6efefaca243703c8282f
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Feb 3 13:43:15 2014 -0500
add ability to define agent binding addr/port in EAP config xml
diff --git a/.classpath b/.classpath
index 455f739..4916f67 100644
--- a/.classpath
+++ b/.classpath
@@ -334,9 +334,11 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-ejb3/7.2.0.Alpha1-redhat-4/jboss-as-ejb3-7.2.0.Alpha1-redhat-4.jar"
sourcepath="/M2_REPO/org/jboss/as/jboss-as-ejb3/7.2.0.Alpha1-redhat-4/jboss-as-ejb3-7.2.0.Alpha1-redhat-4-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/staxmapper/1.1.0.Final/staxmapper-1.1.0.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/modules/jboss-modules/1.1.1.GA/jboss-modules-1.1.1.GA.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-subsystem-test/7.1.1.Final/jboss-as-subsystem-test-7.1.1.Final.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-controller/7.1.1.Final/jboss-as-controller-7.1.1.Final.jar"
sourcepath="/M2_REPO/org/jboss/as/jboss-as-controller/7.2.0.Alpha1-redhat-4/jboss-as-controller-7.2.0.Alpha1-redhat-4-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-controller-client/7.1.1.Final/jboss-as-controller-client-7.1.1.Final.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-subsystem-test/7.2.0.Alpha1-redhat-4/jboss-as-subsystem-test-7.2.0.Alpha1-redhat-4.jar"
sourcepath="/M2_REPO/org/jboss/as/jboss-as-subsystem-test/7.2.0.Alpha1-redhat-4/jboss-as-subsystem-test-7.2.0.Alpha1-redhat-4-sources.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-controller/7.2.0.Alpha1-redhat-4/jboss-as-controller-7.2.0.Alpha1-redhat-4.jar"
sourcepath="/M2_REPO/org/jboss/as/jboss-as-controller/7.2.0.Alpha1-redhat-4/jboss-as-controller-7.2.0.Alpha1-redhat-4-sources.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-controller-client/7.2.0.Alpha1-redhat-4/jboss-as-controller-client-7.2.0.Alpha1-redhat-4.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-model-test/7.2.0.Alpha1-redhat-4/jboss-as-model-test-7.2.0.Alpha1-redhat-4.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/as/jboss-as-network/7.2.0.Alpha1-redhat-4/jboss-as-network-7.2.0.Alpha1-redhat-4.jar"
sourcepath="/M2_REPO/org/jboss/as/jboss-as-network/7.2.0.Alpha1-redhat-4/jboss-as-network-7.2.0.Alpha1-redhat-4-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-links/2.3.5.Final/resteasy-links-2.3.5.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jaxrs/2.3.5.Final/resteasy-jaxrs-2.3.5.Final.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/resteasy/resteasy-jackson-provider/2.3.5.Final/resteasy-jackson-provider-2.3.5.Final.jar"/>
diff --git
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentService.java
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentService.java
index 018519d..651f557 100644
---
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentService.java
+++
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentService.java
@@ -6,6 +6,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
+import org.jboss.as.network.SocketBinding;
import org.jboss.as.server.ServerEnvironment;
import org.jboss.logging.Logger;
import org.jboss.modules.Module;
@@ -18,6 +19,7 @@ import org.jboss.msc.service.StopContext;
import org.jboss.msc.value.InjectedValue;
import org.rhq.enterprise.agent.AgentMain;
+import org.rhq.enterprise.communications.ServiceContainerConfigurationConstants;
public class AgentService implements Service<AgentService> {
@@ -31,7 +33,13 @@ public class AgentService implements Service<AgentService> {
* This service gives us information about the server, like the install directory,
data directory, etc.
* Package-scoped so the add-step handler can access this.
*/
- InjectedValue<ServerEnvironment> envServiceValue = new
InjectedValue<ServerEnvironment>();
+ final InjectedValue<ServerEnvironment> envServiceValue = new
InjectedValue<ServerEnvironment>();
+
+ /**
+ * Our subsystem add-step handler will inject this as a dependency for us.
+ * This object will provide the binding address and port for the agent listener.
+ */
+ final InjectedValue<SocketBinding> agentListenerBinding = new
InjectedValue<SocketBinding>();
/**
* This service can be configured to be told explicitly about certain plugins to be
@@ -131,10 +139,17 @@ public class AgentService implements Service<AgentService> {
log.info("Starting the embedded agent now");
try {
// make sure we pre-configure the agent with some settings taken from our
runtime environment
+ SocketBinding agentListenerBindingValue = agentListenerBinding.getValue();
+ String agentBindAddress =
agentListenerBindingValue.getAddress().getHostAddress();
+ String agentBindPort =
String.valueOf(agentListenerBindingValue.getAbsolutePort());
+
configOverrides.put(ServiceContainerConfigurationConstants.CONNECTOR_BIND_ADDRESS,
agentBindAddress);
+
configOverrides.put(ServiceContainerConfigurationConstants.CONNECTOR_BIND_PORT,
agentBindPort);
+
ServerEnvironment env = envServiceValue.getValue();
boolean resetConfigurationAtStartup = true;
AgentConfigurationSetup configSetup = new AgentConfigurationSetup(
getExportedResource("conf/agent-configuration.xml"),
resetConfigurationAtStartup, configOverrides, env);
+
// prepare the agent logging first thing so the agent logs messages using
this config
configSetup.prepareLogConfigFile(getExportedResource("conf/log4j.xml"));
configSetup.preConfigureAgent();
diff --git
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemAdd.java
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemAdd.java
index c2cc801..937af70 100644
---
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemAdd.java
+++
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemAdd.java
@@ -9,6 +9,7 @@ import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationFailedException;
import org.jboss.as.controller.ServiceVerificationHandler;
+import org.jboss.as.network.SocketBinding;
import org.jboss.as.server.ServerEnvironment;
import org.jboss.as.server.ServerEnvironmentService;
import org.jboss.dmr.ModelNode;
@@ -41,6 +42,7 @@ class AgentSubsystemAdd extends AbstractAddStepHandler {
AgentSubsystemDefinition.SERVER_BIND_ADDRESS_ATTRIBDEF.validateAndSet(operation,
model);
AgentSubsystemDefinition.SERVER_TRANSPORT_PARAMS_ATTRIBDEF.validateAndSet(operation,
model);
AgentSubsystemDefinition.SERVER_ALIAS_ATTRIBDEF.validateAndSet(operation,
model);
+ AgentSubsystemDefinition.SOCKET_BINDING_ATTRIBDEF.validateAndSet(operation,
model);
log.info("Populating the embedded agent subsystem model: " + operation
+ "=" + model);
}
@@ -87,10 +89,14 @@ class AgentSubsystemAdd extends AbstractAddStepHandler {
service.setConfigurationOverrides(overrides);
// install the service
+ String binding =
AgentSubsystemDefinition.SOCKET_BINDING_ATTRIBDEF.resolveModelAttribute(context, model)
+ .asString();
ServiceName name = AgentService.SERVICE_NAME;
ServiceController<AgentService> controller = context.getServiceTarget() //
.addService(name, service) //
.addDependency(ServerEnvironmentService.SERVICE_NAME,
ServerEnvironment.class, service.envServiceValue) //
+ .addDependency(SocketBinding.JBOSS_BINDING_NAME.append(binding),
SocketBinding.class,
+ service.agentListenerBinding) //
.addListener(verificationHandler) //
.setInitialMode(Mode.ACTIVE) //
.install();
diff --git
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemDefinition.java
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemDefinition.java
index dec1a26..ad50c4e 100644
---
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemDefinition.java
+++
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemDefinition.java
@@ -9,6 +9,7 @@ import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.SimpleResourceDefinition;
import org.jboss.as.controller.descriptions.DefaultOperationDescriptionProvider;
import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler;
+import org.jboss.as.controller.operations.validation.StringLengthValidator;
import org.jboss.as.controller.registry.AttributeAccess;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.as.controller.registry.OperationEntry;
@@ -69,6 +70,12 @@ public class AgentSubsystemDefinition extends SimpleResourceDefinition
{
.setXmlName(AgentSubsystemExtension.ATTRIB_SERVER_ALIAS)
.setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES).setAllowNull(true).build();
+ protected static final SimpleAttributeDefinition SOCKET_BINDING_ATTRIBDEF = new
SimpleAttributeDefinitionBuilder(
+ AgentSubsystemExtension.ATTRIB_SOCKET_BINDING, ModelType.STRING)
+ .setFlags(AttributeAccess.Flag.RESTART_RESOURCE_SERVICES)
+ .setDefaultValue(new ModelNode("embeddedagent")).setValidator(new
StringLengthValidator(1)).setAllowNull(false)
+ .build();
+
private AgentSubsystemDefinition() {
super(AgentSubsystemExtension.SUBSYSTEM_PATH,
AgentSubsystemExtension.getResourceDescriptionResolver(null),
AgentSubsystemAdd.INSTANCE, AgentSubsystemRemove.INSTANCE);
@@ -85,6 +92,7 @@ public class AgentSubsystemDefinition extends SimpleResourceDefinition
{
registerReloadRequiredWriteAttributeHandler(rr, SERVER_BIND_ADDRESS_ATTRIBDEF);
registerReloadRequiredWriteAttributeHandler(rr,
SERVER_TRANSPORT_PARAMS_ATTRIBDEF);
registerReloadRequiredWriteAttributeHandler(rr, SERVER_ALIAS_ATTRIBDEF);
+ registerReloadRequiredWriteAttributeHandler(rr, SOCKET_BINDING_ATTRIBDEF);
}
private void
registerReloadRequiredWriteAttributeHandler(ManagementResourceRegistration rr,
AttributeDefinition def) {
diff --git
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemExtension.java
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemExtension.java
index a74bafb..4374c7e 100644
---
a/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemExtension.java
+++
b/modules/enterprise/server/embeddedagent/src/main/java/org/rhq/embeddedagent/extension/AgentSubsystemExtension.java
@@ -62,11 +62,10 @@ public class AgentSubsystemExtension implements Extension {
protected static final String ATTRIB_SERVER_BIND_ADDRESS =
AgentConfigurationConstants.SERVER_BIND_ADDRESS;
protected static final String ATTRIB_SERVER_TRANSPORT_PARAMS =
AgentConfigurationConstants.SERVER_TRANSPORT_PARAMS;
protected static final String ATTRIB_SERVER_ALIAS =
AgentConfigurationConstants.SERVER_ALIAS;
+ protected static final String ATTRIB_SOCKET_BINDING = "socket-binding";
protected static final PathElement SUBSYSTEM_PATH =
PathElement.pathElement(SUBSYSTEM, SUBSYSTEM_NAME);
-
-
static StandardResourceDescriptionResolver getResourceDescriptionResolver(final
String keyPrefix) {
String prefix = SUBSYSTEM_NAME + (keyPrefix == null ? "" :
"." + keyPrefix);
return new StandardResourceDescriptionResolver(prefix, RESOURCE_NAME,
@@ -133,6 +132,8 @@ public class AgentSubsystemExtension implements Extension {
opAdd.get(ATTRIB_SERVER_TRANSPORT_PARAMS).set(reader.getElementText());
} else if (elementName.equals(ATTRIB_SERVER_ALIAS)) {
opAdd.get(ATTRIB_SERVER_ALIAS).set(reader.getElementText());
+ } else if (elementName.equals(ATTRIB_SOCKET_BINDING)) {
+ opAdd.get(ATTRIB_SOCKET_BINDING).set(reader.getElementText());
} else {
throw ParseUtils.unexpectedElement(reader);
}
@@ -188,6 +189,7 @@ public class AgentSubsystemExtension implements Extension {
writeElement(writer, node, ATTRIB_SERVER_BIND_ADDRESS);
writeElement(writer, node, ATTRIB_SERVER_TRANSPORT_PARAMS);
writeElement(writer, node, ATTRIB_SERVER_ALIAS);
+ writeElement(writer, node, ATTRIB_SOCKET_BINDING);
// <plugins>
writer.writeStartElement(PLUGINS_ELEMENT);
diff --git
a/modules/enterprise/server/embeddedagent/src/main/resources/module/main/module.xml
b/modules/enterprise/server/embeddedagent/src/main/resources/module/main/module.xml
index 56419c3..faa971f 100644
--- a/modules/enterprise/server/embeddedagent/src/main/resources/module/main/module.xml
+++ b/modules/enterprise/server/embeddedagent/src/main/resources/module/main/module.xml
@@ -48,5 +48,8 @@
<!-- the standalone agent had this in its endorsed dir, but the embedded agent
adds it as a dependency -->
<module name="javax.xml.bind.api"/>
+
+ <!-- other dependencies we need -->
+ <module name="org.jboss.as.network"/>
</dependencies>
</module>
diff --git
a/modules/enterprise/server/embeddedagent/src/main/resources/org/rhq/embeddedagent/extension/LocalDescriptions.properties
b/modules/enterprise/server/embeddedagent/src/main/resources/org/rhq/embeddedagent/extension/LocalDescriptions.properties
index 80ea9e5..e2badfc 100644
---
a/modules/enterprise/server/embeddedagent/src/main/resources/org/rhq/embeddedagent/extension/LocalDescriptions.properties
+++
b/modules/enterprise/server/embeddedagent/src/main/resources/org/rhq/embeddedagent/extension/LocalDescriptions.properties
@@ -6,6 +6,7 @@ embeddedagent.stop=Stops the RHQ Agent if it is running.
embeddedagent.status=Tells you if the RHQ Agent is currently started or stopped.
embeddedagent.enabled=When true, the RHQ Agent will be deployed and started. Otherwise,
it will be disabled.
embeddedagent.plugins=Indicates what plugins should be enabled or disabled.
+embeddedagent.socket-binding=Determines the binding address and port the agent listens to
for incoming server messages.
embeddedagent.rhq.agent.name=Name to uniquely identify this agent among all other agents
in the environment
embeddedagent.rhq.agent.disable-native-system=The RHQ Agent has a native system on
certain supported platforms to help the \n\
plugin container perform discovery of native components on those platforms. \n\
diff --git
a/modules/enterprise/server/embeddedagent/src/main/resources/schema/embeddedagent.xsd
b/modules/enterprise/server/embeddedagent/src/main/resources/schema/embeddedagent.xsd
index b9a3689..d587e23 100644
--- a/modules/enterprise/server/embeddedagent/src/main/resources/schema/embeddedagent.xsd
+++ b/modules/enterprise/server/embeddedagent/src/main/resources/schema/embeddedagent.xsd
@@ -17,6 +17,7 @@
<xs:element name="rhq.agent.server.bind-address"
type="xs:string" use="optional"/>
<xs:element name="rhq.agent.server.transport-params"
type="xs:string" />
<xs:element name="rhq.agent.server.alias"
type="xs:string" use="optional"/>
+ <xs:element name="socket-binding"
type="xs:string"/>
<xs:element name="plugins" type="pluginsType"/>
</xs:all>
</xs:complexType>
diff --git
a/modules/enterprise/server/embeddedagent/src/test/java/org/rhq/embeddedagent/extension/SubsystemParsingTestCase.java
b/modules/enterprise/server/embeddedagent/src/test/java/org/rhq/embeddedagent/extension/SubsystemParsingTestCase.java
index 0a8758f..0f3a8fa 100644
---
a/modules/enterprise/server/embeddedagent/src/test/java/org/rhq/embeddedagent/extension/SubsystemParsingTestCase.java
+++
b/modules/enterprise/server/embeddedagent/src/test/java/org/rhq/embeddedagent/extension/SubsystemParsingTestCase.java
@@ -198,6 +198,7 @@ public class SubsystemParsingTestCase extends
SubsystemBaseParsingTestCase {
List<Property> attributes =
content.get("attributes").asPropertyList();
List<String> expectedAttributes = Arrays.asList( //
+ AgentSubsystemExtension.ATTRIB_SOCKET_BINDING, //
AgentSubsystemExtension.ATTRIB_SERVER_TRANSPORT, //
AgentSubsystemExtension.ATTRIB_SERVER_BIND_PORT, //
AgentSubsystemExtension.ATTRIB_SERVER_BIND_ADDRESS, //
diff --git
a/modules/enterprise/server/embeddedagent/src/test/resources/org/rhq/embeddedagent/extension/subsystem.xml
b/modules/enterprise/server/embeddedagent/src/test/resources/org/rhq/embeddedagent/extension/subsystem.xml
index e8641f1..09da3f6 100644
---
a/modules/enterprise/server/embeddedagent/src/test/resources/org/rhq/embeddedagent/extension/subsystem.xml
+++
b/modules/enterprise/server/embeddedagent/src/test/resources/org/rhq/embeddedagent/extension/subsystem.xml
@@ -7,6 +7,8 @@
<rhq.agent.server.transport-params>test-transport-params</rhq.agent.server.transport-params>
<!-- <rhq.agent.server.alias>test-alias</rhq.agent.server.alias>
-->
+ <socket-binding>embeddedagent</socket-binding>
+
<plugins>
<plugin name="platform" enabled="true" />
<plugin name="blah" enabled="false" />