[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Messages posted by: pablo  XML
Profile for pablo -> Messages posted by pablo [57] Go to Page: 1, 2, 3, 4 Next 
Author Message
Isso resolve em partes.

Tenho um DAO para cada entidade, todos eles herdam do dao mais genérico. Sendo assim teria que ter um Componente para cada Dao?
Boa tarde a todos!

Utilizo o ioc do menta em meus projetos. Tenho alguns daos genéricos e surgiu a solicitação de usar mais um banco de dados na aplicação. Como solução tenho um parâmetro no construtor do DAO informando o banco.

A questão é! Como passar parâmetros (dinâmicos) para o construtor do meu DAO usando IOC
Não existe uma maneira de fazer isso?
minha aplicação usa a internacionalização do mentawai. indico na tela de login qual idioma.

Gostaria de dentro da aplicação (depois de me logar) também poder alterar o idioma. Até aí tudo bem. Uso uma actiom pra isso. Porém eu indico para essa action (LocaleAction) o retorno, que é uma página de boas vindas.

Como faço para retornar para a mesma página que o usuário estava antes de invocar a action?
1. Pablo Faria
2. Mais ou menos 3 anos
3. Um ano e meio
4. nenhum
5. A capacidade de se criar filtros customisados muito facilmente e poder usar os já criados pela equipe (IOC é o meu preferido)
6. Nenhuma
7. algumas tags, como o paginator
8. Acredito que o framework esteja muito bom, mais na minha opinião o mentawai poderia abolir algumas configurações, tratar mais especificações do que configuração, como o rails faz, isso concerteza ajudaria e muito. (Ex.: nar precisar mapear alguma action, nem template, esse tipo de coisa que seria opicional se usar....)
Cara, nem idéia não, tenta dar uma debuga e dar mais detalhes do que está acontecendo.  


Justamente.. Debuguei e na classe JpaTransaction a variável de instância "session" que é um "EntityManager" vem null e por isso ocorre o erro...

JPA não depende do hibernate, tanto que a implementação de referência do JPA é o TopLink da oracle.
 


Sim ele não depende, mais eu o uso como implementação e gostaria de usar no mentawai também

talvez essa linha não esteja legal:
di("session", EntityManager.class);
 


Mais como seria a implementação correta?
to tentando passar o projeto news-persistent(dos exemplos não oficiais), para usar o filtro do JPA e controlar as transações igual ao hibernate, só que depois de trocar a codificação ele ne retorna um erro quando vou acessar a aplicação:

Code:
HibernateTransaction does not have a hibernate session!


O meu ApplicationManager:
Code:
 import javax.persistence.EntityManager;
 import org.mentawai.core.ActionConfig;
 import org.mentawai.core.Context;
 import org.mentawai.core.Forward;
 import org.mentawai.core.Redirect;
 import org.mentawai.example.news.HibernateNewsDAO;
 import org.mentawai.example.news.News;
 import org.mentawai.example.news.NewsAction;
 import org.mentawai.example.news.NewsServiceImpl;
 import org.mentawai.example.news.NewsValidationFilter;
 import org.mentawai.filter.DIFilter;
 import org.mentawai.filter.InjectionFilter;
 import org.mentawai.filter.IoCFilter;
 import org.mentawai.filter.JpaFilter;
 import org.mentawai.filter.OutputFilter;
 import org.mentawai.filter.TransactionFilter;
 import org.mentawai.filter.VOFilter;
 import org.mentawai.i18n.LocaleManager;
 import org.mentawai.transaction.JpaTransaction;
 
 public class ApplicationManager extends org.mentawai.core.ApplicationManager {
 
     public void init(Context context) {
         ioc("newsService", NewsServiceImpl.class);
         ioc("newsDAO", HibernateNewsDAO.class);
         ioc("transaction", JpaTransaction.class);
     }
 
     public void loadActions() {
 
         addGlobalFilter(new IoCFilter());
         addGlobalFilter(new JpaFilter("punit"));
         addGlobalFilter(new DIFilter());
         di("session", EntityManager.class);
         di("newsDAO", HibernateNewsDAO.class);
         addGlobalFilter(new TransactionFilter());
         addGlobalFilter(new InjectionFilter());
         addGlobalFilter(new OutputFilter());
 
         ActionConfig actionConfig = new ActionConfig("news", NewsAction.class);
         actionConfig.addConsequence(NewsAction.LIST_JSP, new Forward("/list.jsp"));
         actionConfig.addConsequence(NewsAction.LIST, new Redirect("news.mtw"));
         actionConfig.addConsequence(NewsAction.SHOW, new Forward("/update.jsp"));
         actionConfig.addFilter(new NewsValidationFilter(), "update");
         actionConfig.addFilter(new NewsValidationFilter(), "add");
         
         actionConfig.addConsequence(NewsAction.ERROR, "add", new Forward("add.jsp"));
         actionConfig.addConsequence(NewsAction.ERROR, "update", new Forward("update.jsp"));
         actionConfig.addFilter(new VOFilter(News.class, "news"));
         add(actionConfig);
     }
 
     public void loadLocales() {
         LocaleManager.add("en");
         LocaleManager.add("pt");
     }
 }
 


alguém pode me dar uma luz?
Existe uma maneira de uma action ou uma inner action não retornarem nenhum Forward ou Redirect? Apenas fazer um processamento.

Estou usando Flex e gostaria de integrar ao Mentawai...
Nas páginas jsps se eu colocar um filtro de autorização, se o acesso estiver negado, é redirecionado para uma página de acesso negado ex.: denied.html.

Mas e usando templates???
Já tentei e o que acontece é a página em questão ficar em branco, (atende as nessecidades de segurança), mais não é redirecionada para o denied.html por exemplo.

A pergunda é a seguinte: Usando templates tem como criar um acessonegado.page e restringir o acesso na page???

Att
Mais é isso que quero, quanto a sessão expirar, isso fica por conta do tomcat.

Caras valeu mesmo pela ajuda.
Consegui resolver

fiz o seguinte (se puder ajudar alguém depois, por isso resolvi postar)

Minha classe
Code:
 
 package com.eclinica.util;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
 import org.mentawai.core.Context;
 
 import com.eclinica.pessoa.model.Usuario;
 
 public class CentralDeUsuarios {
 	private static ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
 	private static Map<String, Context> idSessions = new HashMap<String, Context>();
     public static void add(Usuario u, Context e) {
         usuarios.add(u);
         idSessions.put(u.getPessoa().getNome(), e);
     }
     
     public static void remove(Usuario u) {
     	if (u != null) {
           usuarios.remove(u);
     	}
     }
     
     public static int qtdUsuariosLogados() {
         return usuarios.size();
     }
     
     public static ArrayList getUsuariosLogados() {
         return usuarios;
     }
     
     public static void derrubaSessao(String id){
     	Iterator it = idSessions.keySet().iterator();
     	while (it.hasNext()){
     		String chave = (String) it.next();
     		if (chave.equals(id)){
     			Context c = idSessions.get(chave);
     			c.reset();
     		}
     	}
     }
     
 
 }


Quando quero derrubar a sessão de alguém chamo o método derrubaSessao(String id) com o nome do usuário
Cara, eu armazeno os ids das sessions em um xml, mais não sei como derrubar.
Tem como derrubar uma sessão específica usando código, algo como um id do HttpSessionEvent ou alguma coisa do tipo.

Ex.: Tenho um controler de usuários, onde vejo quem está logado ou não no sistema, quero derrubar a sessão de um deles (aleatorio).
Tem como chamar uma áction de outra???

Se tiver acho que também resolve meu problema!!

Att
Quero fazer o seguinte:

Quando a sessão do usuário encerrar ou ele fechar o browser
a action de logout ser chamada

Tenho a minha actiom de Logout

Code:
 package com.frameworkpj.acesso;
 
 import org.mentawai.core.BaseAction;
 
 import com.frameworkpj.usuarios.CentralDeUsuarios;
 import com.frameworkpj.usuarios.UsuarioUtil;
 
 public class ActionLogout extends BaseAction{
 
     protected void logout() {
         session.reset();
     }
     
     public String execute() throws Exception {
     	UsuarioUtil u = (UsuarioUtil) session.getAttribute("user");
     	CentralDeUsuarios.remove(u);
         logout();
         return SUCCESS;
     }
 }
 


E tenho meu Servlet de controle de sessão

Code:
 
 package com.frameworkpj.session;
 
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 
 public class SessionControler implements HttpSessionListener{
 
 	private static int activeSessions = 0;
 	
 	public void sessionCreated(HttpSessionEvent arg0) {
 		activeSessions++;		
 	}
 
 	public void sessionDestroyed(HttpSessionEvent arg0) {
 		activeSessions--;		
              //aqui quero chamar a action de logout!!!
 	}
 
 }
 


Se puderem me ajudar

 
Profile for pablo -> Messages posted by pablo [57] Go to Page: 1, 2, 3, 4 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team