Hi to all,
I need to be able to do property replacement inside an MDB, for instance:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationLookup",
propertyValue = "java:global/jms/myAsyncQueue${short-postfix}"
),
@ActivationConfigProperty(
propertyName="connectionFactoryLookup",
propertyValue="java:jboss/exported/jms/RemoteConnectionFactory"
)
})
public class TestMDB implements MessageListener {
I do this small patch:
diff --git
a/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
b/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
index 5d01865..7494d0f 100644
---
a/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
+++
b/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
@@ -52,6 +52,9 @@
import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
import org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData;
+import org.jboss.metadata.property.PropertyReplacer;
+import org.jboss.metadata.property.PropertyReplacers;
+import org.jboss.metadata.property.PropertyResolver;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceRegistry;
@@ -108,7 +111,9 @@
final MessageDrivenBeanMetaData beanMetaData =
getEnterpriseBeanMetaData(deploymentUnit, beanName,
MessageDrivenBeanMetaData.class);
final String beanClassName;
final String messageListenerInterfaceName;
- final Properties activationConfigProperties =
getActivationConfigProperties(messageBeanAnnotation);
+ final PropertyResolver propertyResolver =
deploymentUnit.getAttachment(org.jboss.as.ee.metadata.property.Attachments.FINAL_PROPERTY_RESOLVER);
+ final PropertyReplacer propertyReplacer =
PropertyReplacers.resolvingReplacer(propertyResolver);
+ final Properties activationConfigProperties =
getActivationConfigProperties(messageBeanAnnotation, propertyReplacer);
final String messagingType;
if (beanMetaData != null) {
beanClassName = override(beanClassInfo.name().toString(),
beanMetaData.getEjbClass());
@@ -244,13 +249,13 @@
addComponent(deploymentUnit, mdbComponentDescription);
}
- private Properties getActivationConfigProperties(final
AnnotationInstance messageBeanAnnotation) {
+ private Properties getActivationConfigProperties(final
AnnotationInstance messageBeanAnnotation, PropertyReplacer
propertyReplacer) {
final Properties props = new Properties();
final AnnotationValue activationConfig =
messageBeanAnnotation.value("activationConfig");
if (activationConfig == null)
return props;
for (final AnnotationInstance propAnnotation :
activationConfig.asNestedArray()) {
- props.put(propAnnotation.value("propertyName").asString(),
propAnnotation.value("propertyValue").asString());
+ props.put(propAnnotation.value("propertyName").asString(),
propertyReplacer.replaceProperties(propAnnotation.value("propertyValue").asString()));
}
return props;
}
Do you have any suggestions?
Luca
Show replies by date