#java #jboss #jndi #ejb-3.1 #jboss-eap-7
#java #jboss #jndi #ejb-3.1 #jboss-eap-7
Вопрос:
У нас есть приложение EJB с jboss-ejb3.xml который определяет ссылки на ресурсы для ресурсов, сопоставленных JNDI. В нашем варианте использования не все ресурсы доступны во всех средах. С тех пор как jboss-ejb3.xml не может быть экстернализирован, я надеялся, что если есть способ, которым определения могут быть каким-то образом помечены как необязательные, чтобы развертывание не завершилось с ошибкой, когда сопоставленный ресурс не настроен?
Например, у нас есть jboss-ejb3.xml определяется как:
<resource-ref>
<res-ref-name>cache/ErrorDataCache</res-ref-name>
<res-type>java.util.Map</res-type>
<jndi-name>java:jboss/infinispan/cache/ejb/ErrorDataCache</jndi-name>
<!-- what to add to make this optional ?? -->
</resource-ref>
На нашем сервере разработки JBOSS EAP 7.2 мы настраиваем внутренний кэш, поэтому, когда сервер запускается и развертывает приложение, он регистрирует контекст JNDI (java:comp/env/cache/ErrorDataCache) в сопоставленный ресурс (java:jboss/infinispan/cache/ejb/ErrorDataCache).
Однако на наших производственных серверах той же версии EAP нам запрещено кэшировать эти значения. Также нам запрещено изменять архив EAR для поддержания отдельного jboss-ejb3.xml .
Я также пытался использовать замену / заполнитель системных свойств, но должен быть запасной вариант по умолчанию, иначе он по-прежнему завершается ошибкой «неразрешенное значение свойства app.module.env.${mappedjndi.errordatacache}»
<resource-ref>
<res-ref-name>cache/ErrorDataCache</res-ref-name>
<res-type>java.util.Map</res-type>
<jndi-name>${mappedjndi.errordatacache:"what default value??"}</jndi-name>
</resource-ref>
Я прочитал, что есть <ignore-dependency/>
тег, который я пробовал, но он завершается ошибкой: недопустимый тег, не определенный в XSD.