Сделать необязательным в том смысле, что развертывание не завершается с ошибкой, когда имя JNDI не указывает на допустимый ресурс

#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.