Olá pessoal,
Estou rodando uma aplicação EJB3 no JBOSS e estou com um problema. Sempre que tento acessar javax.persistence.Version.class acontece um null pointer. Consigo acessar a classe Id (do mesmo pacote) normalmente, mas especificamente com a Version acontece o problema.
Segue o código:
[code]public class ChangeLoggerInterceptor {
@PersistenceContext(unitName = "agenda")
private EntityManager entityManager;
public ChangeLoggerInterceptor() {
}
@AroundInvoke
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public Object registrar(InvocationContext context) throws Exception {
Object parametroNovo = context.getParameters()[0];
Object id = null;
Long version = null;
Method[] methods = parametroNovo.getClass().getDeclaredMethods();
int i = 0;
while ((id == null || version == null) && i < methods.length) {
methods[i].setAccessible(true);
try {
if ((id == null) && methods[i].getAnnotation(Id.class) != null) {
id = methods[i].invoke(parametroNovo);
}
if (methods[i].getAnnotation(Version.class) != null) {
version = (Long) methods[i].invoke(parametroNovo);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
i++;
}
}
if (version == null) {
version = new Long(0);
}
Object parametroAntigo = entityManager.find(parametroNovo.getClass(),
id);
Date d = Calendar.getInstance().getTime();
Object ref = new InitialContext().lookup("ChangeLoggerBean/remote");
ChangeLogger logger = (ChangeLogger) PortableRemoteObject.narrow(ref,
ChangeLoggerRemote.class);
logger.log("eu", d, parametroNovo, parametroAntigo, (Integer) id,
version);
return context.proceed();
}
}[/code]
O problema está aqui:
if (methods[i].getAnnotation(Version.class) != null)
Só pelo Version.class acontece um NullPointerException. E o mais estranho de tudo: esse código já funcionou, mas após adicionar segurança aos EJBs o problema começou a acontecer. Alguém já teve problema parecido?
Grato,
Thiago Jamir