Я использую Payara 5.194 и создал веб-приложение (война). Это веб-приложение содержит синглтон с @Schedule, который периодически запускает какой-либо метод. Он использует @RunAs (), чтобы указать роль для использования.
@Singleton
@RunAs("system")
public class MySingleton {
@EJB
MyEjb myEjb;
@Schedule(hour = "*", minute = "*", second = "*", persistent = false)
public void go()
{
myEjb.doSomething(strings);
}
}
Я использую файловую область по умолчанию, предоставленную Payara. Я добавил туда пользователя с системной ролью, и она отлично работает.
Теперь мне нужно было создать специфицированную c область файла для моего проекта:
asadmin \
create-auth-realm \
--classname com.sun.enterprise.security.auth.realm.file.FileRealm \
--property "file=/opt/payara/appserver/glassfish/config/project_keyfile:jaas-context=fileRealm" \
ProjectRealm
Я добавил пользователь
asadmin \
--passwordfile passwordfile.txt \
create-file-user \
--authrealmname ProjectRealm \
--groups group1:system \
test
Когда я удаляю пользователя из области по умолчанию, вещи перестают работать, что логично.
Я хочу, чтобы система начала использовать новую область. Я попытался установить его в Интернете. xml без удачи:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>ProjectRealm</realm-name>
</login-config>
Я знаю, что можно сказать Payara, что мое новое царство по умолчанию, но я не хочу этого делать. Кстати, это можно сделать следующим образом:
set configs.config.server-config.security-service.default-realm=ProjectRealm
. После дальнейшего исследования я обнаружил, что, если я заверну эту войну в ухо и предоставлю следующее в приложении glassfi sh. xml, тогда все будет работать нормально. .
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-application PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Java EE Application 6.0//EN" "http://glassfish.org/dtds/glassfish-application_6_0-1.dtd">
<glassfish-application>
<realm>ProjectRealm</realm>
</glassfish-application>
Таким образом, с помощью уха вполне возможно указать область по умолчанию для использования. И @RunAs будут соблюдать это. Но это приложение / ухо, и это не то, что я хочу.
Но мой вопрос: если я не использую ухо, есть ли способ указать область для использования?