[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: trgpwild  XML
Profile for trgpwild -> Messages posted by trgpwild [65] Go to Page: Previous  1, 2, 3, 4, 5 Next 
Author Message
Eu estive fazendo uns testes de stress na autenticação/autorização do mentawai num projeto de testes meu e percebi que algumas vezes perdia a autenticação.

Por exemplo:

Eu logo no sistema e qdo entra a página logada eu aperto F5 para o refresh do browser e algumas vezes a página é redirecionada para o login novamente como se não estivesse autenticado e outras vezes o teste acontece de forma esperada.

Já tentei diversas coisas, para ver o que acontece, mas ainda não identifiquei. Estou pensando em usar JAAS numa aplicação aqui do trampo, mas gostaria muito de usar o esquema de autorização/autenticação do Mentawai.

Eu estou debugando com o setDebugMode do mentawai e jah debuguei com o eclipse e nossa, naum to conseguindo entender o pq do erro.
Acontece que ele chega validar e redireciona para a página do usuario e depois eh que ele perde a autenticação e se eu busco do session.getAttribute("user") ele me traz o usuario logado... e se eu dou F5 ele redireciona se contradizendo...

Eh claro q isso acontece às vezes e naum sempre... eu to ficando perdido pessoal... serah q seria algo q vcs pudessem me dar uma dica?

PS.: eu vou mudando de login e crio novos para me certificar que a aplicação não está se valendo de alguma forma de cache.

aorocha wrote:
Preciso usar 2 bancos no meu app, e estou usando hibernate com o HibernateFilter, assim:Code:
 		sessionFactory = new AnnotationConfiguration().configure("hibernate_requisicao.cfg.xml").buildSessionFactory();
 		sessionFactoryAgencia = new AnnotationConfiguration().configure("hibernate_agencia.cfg.xml").buildSessionFactory();
 
 

Code:
public void loadActions() {
 
  filter(new HibernateFilter(sessionFactory));
  filter(new HibernateFilter(sessionFactoryAgencia));
 
Funcionou mano hehehe... irado...
Ow eh verdade rss... será que é possível pessoal????
Seria algo assim Sérgio?

ApplicationManager:
Code:
 filter(new HibernateAnnotationFilterBancoA((AnnotationConfiguration)new AnnotationConfiguration().configure("hibernate_a.cfg.xml")));
 filter(new HibernateAnnotationFilterBancoB((AnnotationConfiguration)new AnnotationConfiguration().configure("hibernate_b.cfg.xml")));
 


Filtros:
Code:
 public class HibernateAnnotationFilterBancoA extends HibernateFilter {
 
 	public HibernateAnnotationFilterBancoA(AnnotationConfiguration cfg) {
 		super(cfg.buildSessionFactory());
 		setKey("sessionA");
 	}
 
 	public HibernateAnnotationFilterBancoA(SessionFactory factory) {
 		super(factory);
 		setKey("sessionA");
 	}
 
 }
 
 public class HibernateAnnotationFilterBancoB extends HibernateFilter {
 
 	public HibernateAnnotationFilterBancoB(AnnotationConfiguration cfg) {
 		super(cfg.buildSessionFactory());
 		setKey("sessionB");
 	}
 
 	public HibernateAnnotationFilterBancoB(SessionFactory factory) {
 		super(factory);
 		setKey("sessionB");
 	}
 
 }
 
 
Eu resolvi dessa maneira:
http://forum.mentaframework.org/posts/list/1834.page
Eu percebi que o código anterior tinha problemas qdo era forçado o encode para en_US e foi corrigido:
Code:
 package org.extjsmentawai.utils.renderer;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Locale;
 
 import org.mentawai.ajax.AjaxRenderer;
 import org.mentawai.util.InjectionUtils;
 
 public class BeanCollectionAjaxRenderer implements AjaxRenderer {
 	
     public static final String DEFAULT_ROOT_TAG = "father";
     
     public static final String DEFAULT_ENTRY_TAG = "child";
 	
 	private String root = DEFAULT_ROOT_TAG;
     private String child = DEFAULT_ENTRY_TAG;
     
 	private String[] subTagsAttrs; // bean attributes for sub tags...
     private String[] attrsAttrs;   // bean attributes for tag attributes...
     
     private String CHARSET;
     
     private void printCR(StringBuilder sb, boolean pretty) {
     	
     	if (!pretty) return;
     	
     	sb.append('\n');
     }
     
     private void printTab(StringBuilder sb, boolean pretty, int x) {
     	
     	if (!pretty) return;
     	
     	for(int i=0;i<x;i++) sb.append("   ");
     }
 	
     public String encode(Object obj, Locale loc, boolean pretty) throws Exception {
     	
     	if (CHARSET.equals("") || CHARSET == null) CHARSET = "UTF-8"; //**********CORREÇÃO***********
     	
     	if (!(obj instanceof Collection)) throw new IllegalArgumentException("Object is not a Collection: " + obj);
     	
     	Collection coll = (Collection) obj;
     	
         StringBuilder sb = new StringBuilder();
         
         sb.append("<?xml version='1.0' encoding='").append(CHARSET).append("' ?>").append((char)13);
         
         sb.append('<').append(root).append('>');
         
         printCR(sb, pretty);
         
         for(Iterator iter = coll.iterator(); iter.hasNext();) {
         	
         	Object bean = iter.next();
         	
             Class<? extends Object> klass = bean.getClass();
             
             printTab(sb, pretty, 1);
             
             sb.append('<').append(child);
         	
             if (attrsAttrs != null) {
             	
             	for (int i = 0; i < attrsAttrs.length; i++) {
             		
             		String attrName = attrsAttrs[i];
             		
                     Method method = InjectionUtils.findMethodToGet(klass, attrName);
                     
                     if (method == null) throw new Exception("Cannot find method to get: " + klass + " / " + attrName);
                     	
                     sb.append(' ').append(attrName).append("=\"").
                     
                     append(method.invoke(bean, (Object[]) null)).append("\"");
             	}
             	
             } else {
             	
             	sb.append(' ');
             }
             
             sb.append('>');
             
             printCR(sb, pretty);
             
             if (subTagsAttrs != null) {
             	
             	for (int i = 0; i < subTagsAttrs.length; i++) {
             		
             		String attrName = subTagsAttrs[i];
             		
             		Method method = InjectionUtils.findMethodToGet(klass, attrName);
             		
             		if (method == null) throw new Exception("Cannot find method to get: " + klass + " / " + attrName);
             		
             		printTab(sb, pretty, 2);
             		
             		sb.append('<').append(attrName).append('>').
             		
             		append(method.invoke(bean, (Object[]) null)).append("</").append(attrName).append('>');
             		
             		printCR(sb, pretty);
             	}
             }
             
             printTab(sb, pretty, 1);
             
             sb.append("</").append(child).append('>');
             
             printCR(sb, pretty);
         }
         
         sb.append("</").append(root).append('>');
         
         printCR(sb, pretty);
         
     	return sb.toString();
 	}
 
 	public BeanCollectionAjaxRenderer(String rootTag, String childTag,  String[] subTagsAttrs, String[] attrsAttrs) {
 		
 		this.root = rootTag;
 		
 		this.child = childTag;
 
 		this.attrsAttrs = attrsAttrs;
 		
 		this.subTagsAttrs = subTagsAttrs;
 		
 	}
 
 	public BeanCollectionAjaxRenderer(String rootTag, String childTag,  String[] subTagsAttrs, String[] attrsAttrs, String CHARSET) {
 		
 		this.root = rootTag;
 		
 		this.child = childTag;
 
 		this.attrsAttrs = attrsAttrs;
 		
 		this.subTagsAttrs = subTagsAttrs;
 		
 		this.CHARSET = CHARSET;
 		
 	}
 
 	public String getContentType() {
         return TEXT_XML;
     }
     
 }
 


E no AplicationManager é instanciada a classe desta maneira, como exemplo:
Code:
 new BeanCollectionAjaxRenderer("father", "child", new String[] { "name", "username", "email" } , new String[] { "name", "username", "email" }, "ISO-8859-1")
 


Acho q assim fica melhor, o q vcs acham?
Estive tendo alguns problemas com o BeanCollectionAjaxRenderer no caso do Internet Explorer abrir o xml e não saber qual o encode correto que seria o ISO-5589-1 e no caso de dúvida o i.e. colocava o UTF-8 no lugar e naum conseguia ler os nodes com acento....
Peguei o source do BeanCollectionAjaxRenderer e adicionei algumas coisinhas que achei nescessárias:

Code:
 package org.extjsmentawai.utils.renderer;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Locale;
 
 import org.mentawai.ajax.AjaxRenderer;
 import org.mentawai.util.InjectionUtils;
 
 public class ExtjsBeanCollectionAjaxRenderer implements AjaxRenderer {
 	
     //public static final String DEFAULT_COLLECTION_ATTR = "beanCollection";
     
     public static final String DEFAULT_ROOT_TAG = "father";
     
     public static final String DEFAULT_ENTRY_TAG = "child";
 	
 	private String root = DEFAULT_ROOT_TAG;
     private String child = DEFAULT_ENTRY_TAG;
     
 	private String[] subTagsAttrs; // bean attributes for sub tags...
     private String[] attrsAttrs;   // bean attributes for tag attributes...
     
     private String CHARSET;
     
     private void printCR(StringBuilder sb, boolean pretty) {
     	
     	if (!pretty) return;
     	
     	sb.append('\n');
     }
     
     private void printTab(StringBuilder sb, boolean pretty, int x) {
     	
     	if (!pretty) return;
     	
     	for(int i=0;i<x;i++) sb.append("   ");
     }
 	
     public String encode(Object obj, Locale loc, boolean pretty) throws Exception {
     	
     	if (loc.toString().startsWith("en")) {
     		CHARSET = "UTF-8";
     	} else {
     		CHARSET = "ISO-8859-1";
     	}
     	
     	if (!(obj instanceof Collection)) throw new IllegalArgumentException("Object is not a Collection: " + obj);
     	
     	Collection coll = (Collection) obj;
     	
         StringBuilder sb = new StringBuilder();
         
         sb.append("<?xml version='1.0' encoding='").append(CHARSET).append("' ?>").append((char)13);
         
         sb.append('<').append(root).append('>');
         
         printCR(sb, pretty);
         
         for(Iterator iter = coll.iterator(); iter.hasNext();) {
         	
         	Object bean = iter.next();
         	
             Class<? extends Object> klass = bean.getClass();
             
             printTab(sb, pretty, 1);
             
             sb.append('<').append(child);
         	
             if (attrsAttrs != null) {
             	
             	for (int i = 0; i < attrsAttrs.length; i++) {
             		
             		String attrName = attrsAttrs[i];
             		
                     Method method = InjectionUtils.findMethodToGet(klass, attrName);
                     
                     if (method == null) throw new Exception("Cannot find method to get: " + klass + " / " + attrName);
                     	
                     sb.append(' ').append(attrName).append("=\"").
                     
                     append(method.invoke(bean, (Object[]) null)).append("\"");
             	}
             	
             } else {
             	
             	sb.append(' ');
             }
             
             sb.append('>');
             
             printCR(sb, pretty);
             
             if (subTagsAttrs != null) {
             	
             	for (int i = 0; i < subTagsAttrs.length; i++) {
             		
             		String attrName = subTagsAttrs[i];
             		
             		Method method = InjectionUtils.findMethodToGet(klass, attrName);
             		
             		if (method == null) throw new Exception("Cannot find method to get: " + klass + " / " + attrName);
             		
             		printTab(sb, pretty, 2);
             		
             		sb.append('<').append(attrName).append('>').
             		
             		append(method.invoke(bean, (Object[]) null)).append("</").append(attrName).append('>');
             		
             		printCR(sb, pretty);
             	}
             }
             
             printTab(sb, pretty, 1);
             
             sb.append("</").append(child).append('>');
             
             printCR(sb, pretty);
         }
         
         sb.append("</").append(root).append('>');
         
         printCR(sb, pretty);
         
     	return sb.toString();
 	}
 
 	public ExtjsBeanCollectionAjaxRenderer(String rootTag, String childTag,  String[] subTagsAttrs, String[] attrsAttrs) {
 		
 		this.root = rootTag;
 		
 		this.child = childTag;
 
 		this.attrsAttrs = attrsAttrs;
 		
 		this.subTagsAttrs = subTagsAttrs;
 	}
 
     public String getContentType() {
         return TEXT_XML;
     }
     
 }
 


public class BeanCollectionAjaxRenderer implements AjaxRenderer {

//public static final String DEFAULT_COLLECTION_ATTR = "beanCollection";

public static final String DEFAULT_ROOT_TAG = "father";

public static final String DEFAULT_ENTRY_TAG = "child";

private String root = DEFAULT_ROOT_TAG;
private String child = DEFAULT_ENTRY_TAG;

private String[] subTagsAttrs; // bean attributes for sub tags...
private String[] attrsAttrs; // bean attributes for tag attributes...

private String CHARSET;

[...]
public String encode(Object obj, Locale loc, boolean pretty) throws Exception {

if (loc.toString().startsWith("en")) {
CHARSET = "UTF-8";
} else {
CHARSET = "ISO-8859-1";
}


[...]
sb.append("<?xml version='1.0' encoding='").append(CHARSET).append("' ?>").append((char)13);

sb.append('<').append(root).append('>');

printCR(sb, pretty);
[...]
Este problema foi resolvido ou é nescessário realmente criar um renderer de acordo com essas necessidades?
Estou escrevendo de Santos-SP.
Há muito tempo, venho procurando um framework como o mentawai. Realmente dava preferência para coisas feitas por brasucas, já havia encontrado a vraptor que também é muito boa e procurava, assim como eu, livrar-se de ficheiros xml para configurar aplicações web (xml foi concebido para padronizar transferência de informações).
O que eu havia percebido, porém, na vraptor era que para projetos muito grandes e complexos poderia tornar-se um pesadelo tanta configuração espalhada, ainda assim com uso de CoC.
Eu procurava algo com flexibilidade em suas configurações, que me desse mais opções. Falando assim, parece que eu estou descrevendo o Mentawai(rss).
O mais incrível, é que em uma semana, no máximo, construí uma aplicação pequena usando recursos complexos com muita facilidade, que provavelmente com outra framework, somente para aprender a manipular suas classes e heranças levaria no mínimo um mês.
Os pré-requisitos para pegar o Mentawai e já sair desenvolvendo com ele sem problemas, é ter conhecimento da tecnologia java e boas noções de POO, até mesmo Design Patterns você aprende com ele, pois é muito intuitivo.
Bom, é melhor parar por aqui, senão vai ficar muito extenso..hehe.
MENTAWAI RULES...
Me desculpe Sergio, realmente você tinha razão sobre o ConverterFilter, o estranho eh que o DateConverter estava funcionando mesmo sem eu ter colocado o ConverterFilter no stack... bom, enfim...
Já terminei o projeto de exemplo de integração do "www.extjs.com" com o mentawai e logo estarei te mandando o .war pelo email do google.
Uma curiosidade kra... a quantas anda o projeto de componentização do mentawai? eu vi seus posts de indignação contra alguns "profissionais" conservadores e com complexo de zelo com "testes", muitas vezes inúteis, e concordo plenamente com você, ainda mais agora como o mentawai está sendo usado em larga escala, não faz muita diferença teste unitário ou não...
e MUITO OBRIGADO a todos do projeto pela atenção... espero em breve ter conhecimento suficiente para contribuir mais do que apenas com aplicações exemplo...
Intaum, eu olhei o que vc disse sobre colocar o ConverterFilter no stack e realmente eu naum tinha colocado ele... mas como o DateConverter tava funcionando nem tinha me ligado... estranho neh???
Eu achei que fosse bug, por que antes eu jah usava o DateConverter na propria Action e qdo eu coloquei meu Converter personalizado naum funcionou... E sem ter muito sentido, qdo eu coloquei o Converter personalizado utilizando extends ele funcionou... entendeu?
Mas se naum eh bug, melhor ainda... daqui pra frente soh vou fazer com extends, pq do outro jeito, me parece que naum entendi... hehe
Me desculpe qq coisa... ainda acho o mentawai o melhor framework web
Existe alguma forma de enviar o projeto pra vcs????
Bom, era isso mesmo. Eu fiz com extends ConversionFilter e funcionou. Estranho neh?
Acho q isso é um bug
Bom, vou fazer mais alguns testes na aplicação que estou construindo e assim que estiver pronta, como posso mandar pra vcs do mentawai disponibilizarem na seção de downloads?
Intaum, o problema eh esse mesmo. Eu coloquei uns System.out no Converter pra ver se ele passava por ele, mas naum aparecia nada...
Vou tentar extendendo o ConversionFilter pra ver se funciona, ateh entao eu estou implementando a interface Convertable...
 
Profile for trgpwild -> Messages posted by trgpwild [65] Go to Page: Previous  1, 2, 3, 4, 5 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team