Согласно чистому коде Роберту Мартину, методы должны иметь небольшую подпись. Лучшим случаем был бы метод без каких-либо параметров. Вместо этого рекомендуется использовать переменные состояния. Это действительно полезно. Но как насчет сессии без состояния beans?
Название немного путано, потому что SLSB может иметь состояние. Вам просто нужно сделать свое хозяйство, чтобы вы не использовали состояние из предыдущего вызова EJB.
Возвращаясь к чистому коду: я бы тоже хотел использовать переменные экземпляра в SLSB. Это прекрасно работает, и если вы достаточно осторожны, у вас нет проблем с несогласованностью состояния, поскольку состояние перезаписывается при каждом вызове публичного метода.
Пока все хорошо. Но что произойдет, если используемый bean вернется в пул? Он берет свое государство с этим. В зависимости от размера состояния это может быть реальной утечкой памяти. JBoss очень щедрый с beans и генерирует довольно много из них, что вызывает некоторое серьезное потребление памяти - ни для чего.
Таким образом, одним из способов было бы очистить состояние до того, как будет существовать метод bean, и bean будет возвращен в пул. Но это кажется мне ненужным кодом, которого следует избегать.
Есть ли способ справиться с этой проблемой? Какая наилучшая практика в этой ситуации?