Tengo algunos problemas para acceder a un bean de sesión con estado (SFSB) desde un cliente de aplicación. Estoy usando JBoss 5.0.1.GA. El cliente de la aplicación y los EJB están empaquetados en un EAR que se implementa y tengo otros clientes de aplicaciones que funcionan sin problemas. beans de sesión sin estado hasta ahora, sólo he utilizado (SLSBs), pero en lo que a Unterstand que, las diferencias entre SLSBs y SFSBs no deben afectar a la forma en que se puede acceder desde una aplicación cliente.EJB 3: Acceder a un bean de sesión con estado desde un cliente de aplicación
La estructura de las clases/interfaces:
@Local public interface A {...}
@Stateless public class ABean implements A {...}
@Remote public interface B {...}
@Stateful public class BBean implements B {
@EJB private A anInstanceOfA;
@PostConstruct private void init() {
this.anInstanceOfA.someMethod();
}
}
El cliente de la aplicación se ejecuta a través de la "appclient-lanzador" como se describe en "How to use an application client in JBoss 5". Hacer la búsqueda de "BBean" funciona bien hasta que se invoque someMethod() en el ABean (local) durante la ejecución de init(). Durante esa llamada, el contenedor arroja una InvalidStateException ("Llamada local: el contexto de seguridad es nulo") (como causa raíz). Cuando cambio el bean con estado a un bean sin estado, todo funciona bien (excepto, por supuesto, que el estado no se conserva). Curiosamente, puedo usar exactamente el mismo SFSB de una aplicación web (en un frijol administrado JSF) bien.
¿Estoy haciendo algo mal? ¿Cómo se supone que debo usar un SFSB desde un cliente de aplicación?
No he encontrado nada útil sobre este problema en particular hasta el momento. La excepción es mencionado en un contexto similar en [#JBAS-4317] Security Context over the invocation, pero teniendo en cuenta que ya se realizó, y se fija en JBoss 5.0.0.Beta3, parece no ser el mismo problema.
información interesante. Sin embargo, no estoy seguro de cómo esto explica el comportamiento, especialmente porque "funciona" en un bean sin estado y el problema solo ocurre cuando uso mi propio dominio de seguridad. De todos modos, como ya no tengo nada que ver con el proyecto y no he hecho ningún desarrollo de Java EE desde entonces, no estoy realmente motivado para descubrir cómo funciona esto realmente. ¡Gracias de cualquier manera! –