如何解决Java EJB:用环境变量替换 JNDI
我有以下使用 JNDI 并托管在 Weblogic 中的 MDB。我想用环境变量替换 JNDI 查找值,以便我可以外部化这些值并在 TomEE plus 中部署应用程序。
注意:此应用程序也使用 Spring。
@MessageDriven(
name = "MyMDB",activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",propertyValue = "javax.jms.Queue"),@ActivationConfigProperty(
propertyName = "connectionFactoryJndiName",propertyValue = "jms/myConnectionFactoryJndiName"),@ActivationConfigProperty(
propertyName = "destinationJndiName",propertyValue = "jms/myDestinationJndiName")
}
)
@Interceptors(SpringBeanAutowiringInterceptor.class)
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.required)
public class MyMDB implements MessageListener
{
@Resource
private MessageDrivenContext ctx;
/** The exception conn factory. */
@Resource(name = "jms/myConnectionFactoryExceptionJndiName")
private ConnectionFactory exceptionConnFactory;
/** The exception queue. */
@Resource(name = "jms/myDestinationExceptionJndiName")
private Queue exceptionQueue;
@Autowired
private MessageProcessorService messageProcessorService;
@Autowired
private MessageSenderService messageSenderService;
@Autowired
private AppConfig appConfig;
@Override
public void onMessage(Message message) {
log.debug("START onMessage");
}
private void publishexceptionQueueMessage(String textMessage) {
jmstemplate jmstemplate = new jmstemplate(getExceptionConnFactory());
jmstemplate.convertAndSend(getExceptionQueue(),textMessage);
log.info("Message has been published to exception queue");
}
....
}
在这种情况下,我会将 jms/myConnectionFactoryJndiName
、jms/myDestinationJndiName
、jms/myConnectionFactoryExceptionJndiName
和 jms/myDestinationExceptionJndiName
替换为环境变量。
更新:到目前为止,我已经尝试更新下面提到的 MessageDriven 部分
@MessageDriven(activationConfig = {
@ActivationConfigProperty(
propertyName = "destination",propertyValue = "tutorialQueue"),@ActivationConfigProperty(
propertyName = "destinationType",propertyValue = "javax.jms.Queue")
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。