Módulo WildFly9 JASPI aislado de la aplicación

Estoy tratando de crear un JASPI ServerAuthModule personalizado totalmente aislado de mi aplicación EAR. Depende de una versión heredada de Spring Framework 2.5.5. Estoy ejecutando WildFly 9.0.2.Final.

Definí un dominio de seguridad adecuado:

<security-domain="sample">
    <authentication-jaspi>
        <login-module-stack name="...">
          <login-module code="..." flag="...">
            <module-option name="..." value="..."/>
          </login-module>
        </login-module-stack>
        <auth-module code="..." login-module-stack-ref="...">
          <module-option name="..." value="..."/>
        </auth-module>
    </authentication-jaspi>
</security-domain>

Y luego definí un módulo JBoss personalizado para mis dependencias del módulo de autenticación.

$WILDFLY/modules/com/my/module/main/module.xml
$WILDFLY/modules/com/my/module/main/spring-core-2.5.5.jar 
$WILDFLY/modules/com/my/module/main/etc.jar (..)

Luego conecté mi módulo como una dependencia de piquete.

cat $WILDFLY/system/layers/base/modules/org/picketbox/main/module.xml

<module xmlnx="..." name="org.picketbox">
   ...
   <dependency>
      ...
      <module name="org.my.module" />
   </dependency>
</module>

Cuando intento implementar un campo común my-app.earque se envía my-app.warcon jboss-web.xmlesos puntos al dominio de seguridad "muestra", encuentra con éxito las clases que quería, inicia el ciclo de vida de JASPI, pero luego, cuando comienza a crear Contexto de primavera y Frijoles de primavera, cae en el my-app.ear.my-app.warCargador de clases del módulo y como se esperaba no encuentra las clases.

ClassNotFoundException: com.my.module.ClassX de [Módulo "despliegue.my-app.ear.my-app.war: main" del Cargador de módulos de servicio]

No quiero agregar com.my.modulecomo dependencia en jboss-deployment-structure.xml. Hacer eso hace que la aplicación funcione como se desea. Aunque lo necesito aislado.

Mis preguntas son:

  • ¿Es posible aislar las clases del módulo JASPI de mi aplicación?
  • ¿Se org.picketboxrecomienda este enfoque (enganchar como dependencia)?
  • ¿Es una limitación de Spring Framework 2.5.5? Tal vez use un cargador de clases que no sea el cargador de clases Current Thread.

Gracias por adelantado.

Respuesta 1

Encontré una guía interesante que nos explica mucho sobre los módulos JBoss y los problemas de carga de clases.

Aquí: https://developer.jboss.org/wiki/ModuleCompatibleClassloadingGuide

Dice que TCCL puede ser un cáncer en ciertos casos.

Descubrí que el Spring 2.5.5 heredado usa TCCL para cargar clases e instanciar sus beans.

Para corregir este comportamiento, extendí ClassPathXmlApplicationContexty anulé lo getClassLoader()que originalmente se obtiene de TCCL ( ClassUtils.getDefaultClassLoader).

Todo comenzó a funcionar, aislado de la aplicación principal. Problema resuelto.

Si alguien intenta hacer una implementación de módulo aislada y tiene un comportamiento extraño, sugiero comenzar a sospechar de sus marcos subyacentes.

Respuesta: 2

Tengo ese objeto oracle: CREATE O REPLACE tipo employee_obj AS object (id NUMBER (10), ...) función de procedimiento almacenado get_employee_obj () return employee_obj es ...

Acabo de habilitar Session en mi aplicación Google AppEngine / Java + GWT. ¿Y cómo lo uso? ¿Cómo obtengo el ID de sesión y reproduzco todas las cosas buenas de él? ¿Hay ejemplos reales de inicio de sesión simple ...

Tengo dos clases Una (Persona) para captadores y establecedores, y otra (Personas) para calcular los datos. Cuál es mi situación es que obtengo los datos de la base de datos usando ResultSet, luego creé un Objeto persona para ...

Quiero desmarcar mediante programación la fila (o filas) actualmente seleccionada en una JTable. Básicamente quiero lo opuesto a esto: JTable table = ...; table.setRowSelectionInterval (x, x); Lo intenté (con ...