Uso de API Rest en JBOSS

1
0
-1

Buenas tardes,

Estoy usando Bonita en su versión 5.10.1.

Tengo una aplicación web en Java que conecta con la API Rest de Bonita y lanza un proceso. La aplicación funciona correctamente en Apache Tomcat, pero cuando intento ejecutarla en JBoss 5.1 me da el siguiente error:

Exception occurred in target VM: Missing users.properties file.
javax.security.auth.login.LoginException: Missing users.properties file.
    at org.jboss.security.auth.spi.UsersRolesLoginModule.login(UsersRolesLoginModule.java:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:762)
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203)
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:690)
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:687)
    at javax.security.auth.login.LoginContext.login(LoginContext.java:595)
    at com.bintertechnic.sms.controllers.RegistroController.arrancarProceso(RegistroController.java:449)
    at com.bintertechnic.sms.controllers.RegistroController.doPost(RegistroController.java:182)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:744)

He leído algo de que debo adaptar el fichero del Jboss (login-config.xml) para incluir la información que ahora mismo tengo en mi fichero jaas, pero no sé qué debo hacer exactamente.

Este es el código de conexión a la API:

       System.setProperty(BonitaConstants.JAAS_PROPERTY, propiedades.getProperty("jaasFile"));
        // Type of API to use
        System.setProperty(BonitaConstants.API_TYPE_PROPERTY, org.ow2.bonita.facade.Context.REST.toString());
        // REST web application URL
        System.setProperty(BonitaConstants.REST_SERVER_ADDRESS_PROPERTY, propiedades.getProperty("direccionRestServer"));
        // Verification of username and password using BonitaAuth login context
        // If the login operation failed (incorrect username and/or password, it will raise an exception and program
        // execution will be aborted
        // This operation is optional.
        LoginContext bonitaAuth = new LoginContext("BonitaAuth", new SimpleCallbackHandler(propiedades.getProperty("adminUser"), propiedades.getProperty("adminPass")));
        bonitaAuth.login();
        bonitaAuth.logout();
        // Use the BonitaStore to share with the BEE the username of the user performing the APIs calls
        LoginContext bonitaStore = new LoginContext("BonitaStore", new SimpleCallbackHandler(propiedades.getProperty("adminUser"), "doesn't matter"));
        bonitaStore.login();

        // Get process definition
        ProcessDefinition processDefinition = null;
        QueryDefinitionAPI queryDefinitionAPI = AccessorUtil.getQueryDefinitionAPI();
        processDefinition = queryDefinitionAPI.getProcess(propiedades.getProperty("nombreProceso"), propiedades.getProperty("versionProceso"));
        // Initialize process variables - key = name of process variable.
        Map<String, Object> mapData = new HashMap<String, Object>();
        mapData.put("codigoNotificacion", notificacion.getCodigoNotificacion());
        // Start process
        RuntimeAPI runtimeAPI = AccessorUtil.getRuntimeAPI();
        ProcessInstanceUUID processInstanceUUID = runtimeAPI.instantiateProcess(processDefinition.getUUID(), mapData);
        bonitaStore.logout();

Y este es mi fichero JAAS

BonitaAuth {
  org.ow2.bonita.identity.auth.BonitaIdentityLoginModule required;
};

BonitaStore {
    org.ow2.bonita.identity.auth.BonitaRESTLoginModule required restUser="restuser" restPassword="restbpm";
};

BonitaAuth-default {
  org.ow2.bonita.identity.auth.BonitaIdentityLoginModule required domain="default";
  org.ow2.bonita.identity.auth.LocalStorageLoginModule required domain="default";
};

BonitaStore-default {
  org.ow2.bonita.identity.auth.LocalStorageLoginModule required domain="default";
};

/**
 * Used by the REST server
 */

BonitaRESTServer {
  org.ow2.bonita.identity.auth.BonitaRESTServerLoginModule required logins="restuser" passwords="restbpm" roles="restuser";
};

Alguna idea?

Muchas gracias

No answers yet.
Notifications