Невозможно заполнить BD с помощью ConfigBean и @RunAs - PullRequest
0 голосов
/ 18 декабря 2018

Я использую ConfigBean для заполнения моего BD, например так:

@Singleton
@Startup 
@RunAs("Administrator")
public class ConfigBean {

    @EJB
    private ClientBean clientBean;

    @EJB
    private AdministratorBean adminstratorBean;

    @PostConstruct
    public void populateDB() {
        try{
            clientBean.create(new ClientDTO("client1", "secret", "Manuel", "dae.ei.ipleiria@gmail.com", "Av. José Maceda", "918 923 232"));
            clientBean.create(new ClientDTO("client2", "secret", "Manuel", "dae.ei.ipleiria@gmail.com", "Av. Alberto Alves", "+00351 256 0033 12"));
            adminstratorBean.create(new AdministratorDTO("administrator1", "secret", "Manuel", "dae.ei.ipleiria@gmail.com", "Director"));
        }catch(Exception ex){
            System.out.println(ex);
        }
    }

Оба моих бина выглядят так:

@POST
@RolesAllowed("Administrator")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response create(AdministratorDTO administratorDTO){...}

Что касается моего web.xml:

...
<login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>dae_project_realm</realm-name>
    </login-config>
    <security-role>
        <description/>
        <role-name>Client</role-name>
    </security-role>
    <security-role>
        <role-name>Administrator</role-name>
    </security-role>
</web-app>

Все вроде нормально.Однако, когда я запускаю приложение и вызываю метод populateDB, я получаю сообщение об ошибке:

javax.ejb.AccessLocalException: Client not authorized for this invocation

Я увидел несколько интересных ссылок, но все еще не мог заставить его работать:

1 Ответ

0 голосов
/ 18 декабря 2018

Чтобы использовать @RunAs, нам нужно создать пользователя с этой ролью.Для этого вам необходимо выполнить следующие шаги:

  1. Открыть GlashFish в консоли администратора
  2. Открыть настройки> настройки сервера> безопасность> области
  3. Нажмите на файлenter image description here
  4. Нажмите «Управление пользователями» enter image description here
  5. Нажмите «Создать»
  6. Создайте пользователя следующим образом: enter image description here
  7. Обновите @RunAs, чтобы использовать нового созданного пользователя:

    @Singleton
    @Startup 
    @RunAs("BOB") //BOB belongs to the desired group 
    public class ConfigBean {
    
        @EJB
        private ClientBean clientBean;
    
        @EJB
        private AdministratorBean adminstratorBean;
    
        @PostConstruct
        public void populateDB() {
            try{
                clientBean.create(new ClientDTO("client1", "secret", "Manuel", "dae.ei.ipleiria@gmail.com", "Av. José Maceda", "918 923 232"));
                clientBean.create(new ClientDTO("client2", "secret", "Manuel", "dae.ei.ipleiria@gmail.com", "Av. Alberto Alves", "+00351 256 0033 12"));
                adminstratorBean.create(new AdministratorDTO("administrator1", "secret", "Manuel", "dae.ei.ipleiria@gmail.com", "Director"));
            }catch(Exception ex){
                System.out.println(ex);
            }
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...