Я использую jboss-as-7.1.0.Final-SNAPSHOT
и пытаюсь настроить пользовательский модуль входа в систему, который использует базу данных.Я следовал инструкциям в документации AS7 для настройки нового домена безопасности в standalone.xml, security-domain в jboss-security.xml и security-constraint в web.xml, и я установил для JBoss 'logging значение TRACE, чтобы я мог видеть, что мойпользовательские методы модуля входа в систему успешно вызываются (например, login (), authenticate ()).
Я не хочу использовать разграничение транзакций вручную в моем модуле входа в систему, поэтому было бы здорово, если бы мой модуль входа могбудьте в курсе состояния ejb.
Взгляните на статью JBoss AS7: модель предметной области безопасности , в которой говорится:
Просто напишите FQCN в атрибуте кодаи он должен работать "из коробки".
Чтобы поместить файлы классов пользовательского модуля входа в систему, вы можете поместить их в jar-файл и поместить его так:
путь к классу приложения вашего веб-архива (war) или ejb jar или корпоративный архив (ear) ИЛИ отдельный модуль в каталоге модулей.
Похоже, что небо - это предел того, где я могу разместить своймодуль джина, в том числе в модуле EJB моего приложения.Означает ли это, что мой пользовательский модуль входа в систему может быть ejb с отслеживанием состояния?Я не читал ничего, что говорит "Нет"Однако при развертывании моего модуля входа в систему как управляемых bean-компонентов ejb с сохранением состояния, так и внедренного EntityManager, похоже, не вводятся;Я получаю NullPointerException, когда пытаюсь вызвать методы для них.
Я взглянул на org.jboss.security.auth.spi.DatabaseServerLoginModule, который предоставляется в качестве одного из модулей входа по умолчанию в JBoss.Я хотел посмотреть, как там обрабатывается доступ к базе данных.Поиск источника данных осуществляется через InitialContext, например,
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(dsJndiName);
conn = ds.getConnection();
, и все транзакции обрабатываются вручную.Я не хочу использовать этот подход, если это возможно.
Могу ли я использовать EJB с сохранением состояния?Или я далеко от базы в моем подходе к этому?