Я использую 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
Я увидел несколько интересных ссылок, но все еще не мог заставить его работать: