Бин Singleton, как определение, может быть создан только один раз. Это означает, что по умолчанию @lock ("write") устанавливается в синглтоне каждый раз, когда вызывается его метод.
Все запросы будут сериализованы контейнером EJB, если метод компонента уже вызван.
Время запускается, когда запрос сериализуется. @AccessTimeout относится к этому времени. Если асинхронный запрос еще не завершен и время, заданное вами в @AccessTimeout, уже прошло, возникает исключение. Некоторые EJB-контейнеры используют свои собственные значения по умолчанию, и в вашем случае EJB-КОНТЕЙНЕР для wildfly - это тот, который появляется в ошибке.
Таким образом, решение вашей проблемы будет зависеть от того, что вы хотите сделать, и в каждом случае есть много возможных решений, но если вы просто хотите избежать этого времени, вы должны использовать аннотацию, подобную этой:
@ AccessTimeout (0), это означает, что запрос не может быть сериализован, и он должен быть выполнен немедленно, если синглтон свободен, в противном случае он будет потерян.
Я рекомендую передать эту обработку параллелизма на уровень метода, чтобы вы могли легко манипулировать bean-компонентом.