Fala Galera,
É o seguinte. Estou trabalhando novamente com o Struts2. E decidi implementar o uso de JPA com o hibernate. Mes estou com um dificuldade que gostaria que vocês, se possível me ajudassem. É o seguinte. Dentro de um interceptor que intercepta todas as actions do sistema o seguinte código:
public class ConexaoInterceptor implements Interceptor{
	
	private static final long serialVersionUID = -4319863830820604374L;
	private EntityManagerFactory factory;
	
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		this.factory.close();
	}
	@Override
	public void init() {
		// TODO Auto-generated method stub
		this.factory = Persistence.createEntityManagerFactory("Arquitetura");
	}
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		// TODO Auto-generated method stub
		EntityManager manager = this.factory.createEntityManager();
		invocation.getInvocationContext().getValueStack().setValue("manager", manager);
		manager.getTransaction().begin();
		
		String result = invocation.invoke();
		
		try{
			manager.getTransaction().commit();
		}catch(Exception e){
			manager.getTransaction().rollback();
		}finally{
			manager.clear();
		}
		
		return result;
	}
}
Como vocês podem ver, eu envio o EntityManager para as actions. Dessa forma preciso apenas declarar um objeto EntityManager e seu get e set que o Struts mesmo faz o trabalho de populá-lo. Porém existem algumas Actions que precisam devolver um Json, pois estão respondendo a uns plugins do JQuery. Ai entra uma treta, pq o Json tenta transformar o objeto EntityManager em Json, e dá bug. Pensando existem duas possibilidades de resolver esse problema, porém não sei como e por isso queria perguntar a vcs.
- 
Tem como declarar um objeto que a Action com @ParentPackage(“json-default”) não transforme em json. Sei lá, tipo colocar uma annotation @NaoViraJason?? HAhaha …
 - 
É possível eu enviar um objeto do interceptor para as Actions mas sem precisar declará-lo. Tentei esse código abaixo mas não funcionou:
 
	private EntityManager getEntityManager() {
	
		ValueStack stack = ActionContext.getContext().getValueStack();
		EntityManager manager = (EntityManager) stack.findValue("manager");
		return manager;
	}
Valeuuu galera. Se tiverem um terceira opinião e que resolva meu problema, eu agradeço.