Я видел следующий код в приложении Java EE, развернутом в Payara:
public class MyClass {
@Resource
ManagedScheduledExecutorService scheduler;
<...>
}
Это было приложение с поддержкой CDI, если это имеет значение.
В Payara существует ресурс для ManagedScheduledExecutorService с именем JNDI concurrent/__defaultManagedScheduledExecutorService
и логическим именем JNDI java:comp/DefaultManagedScheduledExecutorService
.
Имя ресурса JNDI создается из имени класса и поля. Это не будет соответствовать именам выше.
Мое понимание внедрения ресурсов до сих пор заключалось в том, что вы используете атрибут поиска для ссылки на существующую запись JNDI исключительно по имени. Но, как вы можете видеть, атрибут не используется, и он все еще работает.
Почему? Существует ли какой-то механизм отката, специфичный для контейнера, или некоторые спецификации Java определяют это поведение?