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