| Autor |
Mensagem |
|
|
jaboot wrote:Caros,
Tenho algumas dúvidas em relação ao pool de strings do java. Estou recebendo algumas informações, alguns dados do usuário e veio também a senha do mesmo. Não gostaria de forma alguma que essa informação fosse para o pool.
A senha vem junto com vários outros dados, então não posso simplesmente transformar tudo em char[]. Acho que ficaria muito ruim para as coisas depois.
Dúvidas:
1 - O StringBuffer/StringBuilder vai para o pool?
2 - Existe ataque ao pool de Strings? Alguém conseguiria acessar essa informação?
3 - Existe alguma forma de dizer: quero que tudo isso vá para o pool, MENOS esta informação?
Valeu galera
Só vai pra o pool o que vc coloca entre ASPAS e o que vc chama intern().
Ataque pode existir a qualquer coisa.
Sim, chama intern nas strings que vc quer que vá para o pool.
|
 |
|
|
Valeu pelo feedback, Flávio. Achei o seu comentário lá na lista de comentários sobre o framework.
O framework evoluiu bastante desde 2006, mas a filosofia, a API e o core ainda são os mesmos. Recomendo dar uma olhada no código-fonte da aplicacão de referencia: http://websvn.mentaframework.org/listing.php?repname=MentaTutorials&path=%2FMentaRefApp%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2Fadd3186eadc3225fa7327869c7ea70ac7
Segue abaixo o seu feedback:
Flávio Reis wrote:
Por fim, posso relatar que o mentawai suportou cargas de trabalho enorme, utilizando o HibernateFilter, sem apresentar nenhum problema. Um AthlonXP 2600+ conseguiu atender a uma média de 700 requisições/segundo para consultas. Junto o cluster passou perto de 2000 requisições/segundo, pena eu não possuir mais clientes em meu mini-laboratório caseiro pra colocar o cluster em sua carga máxima de trabalho. Acredito que conseguiria chegar perto de 2500 requisições/segundo.
|
 |
|
|
jyoshiriro wrote:Olá, saoj.
Na boa cara, fica parecendo que você quer a qualquer custo fazer conhecido e usado teu framework. Pergunta pelo menos se o criador do tópico fez a pergunta por estar lidando com um sistema legado (nesse caso ele não pode chegar lá e dizer "galera, não mexam mais nada, vamos mudar de framework").
A pergunta do amigo foi no Struts2. Deve ter motivo pra isso. Não sei se responder "olha, no MEU framework é assim" é a resposta que ele esperava, entende?
Veja, não estou criticando teu framework. Até recomendo ao criador do tópico que considere usá-lo mesmo, caso sua dúvida não tenha sido originada pela manutenção de sistema legado. Não é questão de defender framework A ou B, mas de responder uma pergunta feita sobre framework A.
Só quero que pense que é bem possível que muita gente ao ler tua resposta pense "oh, já tá fazendo propaganda do projeto dele!". Assim, as pessoas vão temer que qualquer dúvida sobre programação Web, IoC, persistência ou outras coisas que o Mentawai atenda sejam sempre repondidas por você assim:
"Olha, no Mentawai se faz assim, olha como é mais simples o possível".
Por favor, não me entenda mal. De coração lhe admiro pela enorme capacidade e conhecimento técnicos que tem por criar tantas tecnologias. É apenas um conselho de amigo.
Tranquilo. Me perdoe. O Struts2 é parecido com o Mentawai (ambos se basearam no WebWork).
Vc disse:
Amigo, desculpe mas acho que tá meio confusa sua pergunta. Pode detalhar melhor sua dúvida?
Eu tb não entendi o que é uma action no escopo da session. Por isso coloquei o stateful action do Mentawai.
Mas ok, da próxima vez irei fazer o que vc falou.
Obrigado pelo toque e me desculpe.
|
 |
|
|
|
Vc diz algo parecido com isso: http://www.mentaframework.org/mtw/Page/Sticky/mentawai-stateful-actions
|
 |
|
|
johnny quest wrote:
Na verdade não usaria EJB 2, mas com certeza utilizaria o EJB 3.0 ou o EJB 3.1, pois foi uma evolução de uma tecnologia no decorrer do tempo, baseada no JCP e no Spring
e tende a somente melhorar no futuro.
Muita empresa grande usou EJB1, EJB2, JSF1 e outras "especificações oficiais" e o resultado foi o que foi.
Esse foi o ponto que perguntei, quem me garante que a tecnologia implementada terá uma evolução natural no decorrer dos anos, e não ficará depois de um determinado ponto
parado no tempo. Falo isso porque estou cansado de pegar projeto legado, com frameworks open source, que foram descontinuados e ter que se virar sem documentação, suporte ou ser vivo que tenha trabalhado com tal solução antes.
Isso é chato mesmo. Talvez seja mais um motivo para usar um framework full-stack e minimizar a salada de frameworks, tão comum no mundo Java. E mais uma razão para abraçar de corpo e alma o princípio KISS. Complexidade é o que há de pior em software development. Se o framework for simples e o mais alto nível possível (abstração alta) o cara consegue entender o que está acontecendo. Já se para ir de um ponto ao outro vc tem que passar por dezenas de atalhos intermediários vai ser um pé no saco. EJB e JSF começaram assim. Depois de muito marretarem e reclamarem os caras tentaram simplificar a coisa.
Eu já vi os dois lados da moeda. É realmente triste quando vc pega um sistema ou um framework onde a ZONA é tamanha e a quantidade de classes, entidades e interfaces é tão grande que vc fica de saco cheio de ter que entender aquela merda que um maluco fez achando que estava abafando. E claro: tem 90% de testes unitários.
|
 |
|
|
johnny quest wrote:Acredito que o mentawai deva ser um excelente framework,
mas tenho algumas dúvidas..
Existe alguma empresa que investe, documenta e melhora a cada dia o framework ?
Como todo projeto open-source existe pessoas que investem o seu tempo vago para melhorar o framework a cada dia. Eles usam o framework em diversos projetos e é de interesse deles que o projeto evolua. Também recebemos feedback de pessoas que não são da equipe mas usam o framework e colaboram com opiniões, sugestões e patches.
Quantas pessoas desenvolveram os frameworks relacionados ao Mentawai ?
http://www.mentaframework.org/mtw/Page/Team/mentawai-team?lang=pt
Existe alguma comunidade, igual ao JCP, que define uma lista de possíveis melhorias para a próxima versão ?
Não.
Uma empresa que investe hoje milhões em um projeto, pode confiar que daqui 10 anos ainda terá documentação e
suporte caso necessite ?
A grande maioria dos projetos open-source não oferecem essa garantia e por isso mesmo são open-sources, ou seja, a empresa é livre para modificar o código daqui a 10 anos caso queira ou necessite.
Uma nova versão sem documentação é uma versão inexistente na prática. Se um projeto lança uma versão nova e não documenta ninguém vai usar.
Tudo tem seus prós e contras. Acho que a alternativa seria investir em algo de uma grande empresa como Oracle e Microsoft. Por exemplo, vc pode pagar zero por mysql ou pagar uma grana preta pelo Oracle e ter a Oracle por trás para te garantir. É uma questão de estratégia, gosto e grana disponível.
|
 |
|
|
|
programar catando milho naquele teclado !? sem mouse !? nem me pagando... o use-case não é esse.
|
 |
|
|
kdoigor wrote:saoj
não conhecia o projeto e vi que ele tem várias features.
mas se pode me responedr se ele é mais simples que o apache click ?
O Click é component-based, uma abordagem bem diferente então fica difícil de comparar. Mas eu sou suspeito para opinar. Recomendo dar uma olhada no site para ver como as funcionalidades do Mentawai são implementadas e comparar você mesmo. O site está bem organizado e tranquilo de entender. A documentação está em português e inglês.
OBS: O site do Mentawai foi feito utilizando o http://www.kawaiwiki.org que é feito com o Mentawai.
daveiga wrote:
Sobre IoC por tipo...
Isso foi implementado na versão 2.5.2 já liberada. A documentação foi atualizada: http://www.mentaframework.org/mtw/Page/IoC/mentawai-inversao-de-controle
Fiz um esquema bem simples:
O MentaContainer (e o Mentawai) continua por NOME, só que internamente ele faz:
Então vc pode usar o tipo sem problemas. E se tiver conflito aí vc abandona o tipo vai por nome mesmo. O método ioc(...) aceita ambos.
A única desvantagem pequena disso é que para o IoC:
A seguinte injeção por setter não vai funcionar, o que não faz muito sentido de qualquer jeito:
Continua tendo que ser:
Valeu pela dica. Vale lembrar que o Lucas Cavalcanti também deu ótimas dicas para o MentaContainer aqui: http://www.guj.com.br/java/213719-mentacontainer-ioc-simples-e-rapido
|
 |
|
|
daveiga wrote:
O Conteiner carre todos os setters procurando quais deles esperam um tipo injetável?
Sim, se vc tira o "nome" do IoC e deixa apenas o TIPO então tem que fazer isso mesmo. Teria ver se tem como colocar algum cache para fazer isso APENAS uma vez e cachear o setter encontrado. Se bem que o hit de performance aí deve ser irrelevante, acredito eu.
Por nome vc vai direto ao ponto, ou seja pega o método setNome.
É para pensar mas via interface é muito melhor para a refatoracao e evitar typos, o ponto forte da configuracao programática.
Esse caso de vc usar duas implementacoes diferentes na mesma aplicacao ao mesmo tempo me parece bem raro. É meio contraditório. Vc vai querer usar uma coisa ou outra.
|
 |
|
|
jmmenezes wrote:
Participo a pouco tempo do GUJ (embora o leia a muito... muito tempo)... e tem um pensamento parecido com o seu em relação a como deve ser o desenvolvimento Web... eu gostei do Menta mas nunca o utilizei em um projeto... pois a maior parte dos sistemas que defini a arquitetura do zero precisavam compartilhar componentes entre desktop e web e preferi fazer tudo na unha com POJOs para não perder flexibilidade... talvez o Menta atendesse bem...
Vou testar a nova versão e quem sabe não migre alguns sistemas próprios para ela.
Para aplicacoes distribuídas ou que precisem de integracao com EJB, WebServices, Desktop, etc. é legal adicionar uma segunda camada na sua aplicacao de SERVICE. Logo ao invés de:
Action -> DAO -> VIEW
Action -> SERVICE -> DAO -> VIEW
A aplicacao de referencia também foi implementada com essa arquitetura aqui: http://websvn.soliveirajr.com/listing.php?repname=MentaTutorials&path=%2FMentaRefAppWithService%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2Fa481b86b6eecd19ba856562af62299f20
(Gracas ao Robert que implementou uma aplicacao sinsitra de reserva de passagens aéreas com o Mentawai)
|
 |
|
|
daveiga wrote:@saoj, muito legal o fw, de cara impressiona pela quantidade de recursos, é muito trabalho, e pelo que vi muito bem feito.
Parabéns.
Só um detalhe, no IoC, não seria mais legal usar Classe da interface e não a String?
Por isso que eu gosto e falar que é o melhor que existe, para alguém se sentir desafiado, pensar e colocar uma sugestão de alto nível como essa sua.
Mas acho que não, pelo seguinte:
Quando vc faz injection via construtor, o nome é IRRELEVANTE como vc muito bem notou. Mas quando vc faz INJECTION vai setter o nome é o nome da propriedade. Mas poderia também tentar adivinhar o setter pelo seu parâmetro, como é feito com o construtor.
Entretanto o que vc falou é muito certo e facilita refatoracao. String são sempre propensas ao erro. No caso de injection por construtor o nome do componente é irrelevante, pois em Java os parametros de um construtor ou método não possuem "nomes" que podem ser acessados por reflection.
Poderia haver o caso de vc ter a mesma interface e dois componentes diferentes para a mesma interface !? Daí isso que vc falou não funcionarei, certo? Mas estou pensando aqui e acho que esse caso deve ser bem raro.
Vou pensar nisso que vc falou. Realmente faz um certo sentido. Eu falei que o IoC era bom e não perfeito. Tudo pode ser sempre melhorado ad eterno. Valeu pela dica!
UPDATE1: O Spring se eu não me engando marca componentes por NOME e não por interface. A única coisa que me vem a mente aqui é que para descobri o setter apenas pelo tipo do parametro vai dar um trabalho e pode gerar ambiguidade. Por nome vc vai direto na propriedade. Mas não sei se isso é uma boa desculpa não... Vou avaliar essa mudanca no MentaContainer.
UPDATE2: Nem que eu tenha que fazer um smiples UserDAO.class.getSimpleName() por trás dos panos já seria muito melhor.
Bom, acho que depois dessa sua dica a coisa vai ficar no ponto, mas dessa vez não vou falar nada.
|
 |
|
|
Pra mim funciona no firefox mas no chrome não aparece nada... Que ótimo !!!
Acho que agora está ok !!!! Dá uma olhada aí.... Era pau no meu Chrome !!!
|
 |
|
|
(Alarme falso)
|
 |
|
|
drsmachado wrote:Eu vou aceitar o desafio.
Preciso desenvolver um aplicativo de controle de estoque, para um ramo de atividade de intensa movimentação, com alto consumo de banco de dados, devido às idas e vindas dos produtos.
Pois bem, hoje mesmo irei baixar as libs do menta e irei desenvolver o projeto.
Vamos ver se daqui a 3 meses ele está concluído e rodando perfeitamente, sem qualquer outro framework.
Caso esteja, eu volto aqui e dou o relato e toda a informação a respeito de como foi desenvolver o projeto com o mentawai.
Não vai precisar de FRAMEWORK nenhum. Nem Spring, nem Hibernate, nem nada. Eu gosto de SQL mas entendo que muitos gostam do Hiberante, logo o Mentawai oferece um ótimo suporte ao Hibernate caso e apenas caso vc queira usá-lo.
Esse é o grande barato dos frameworks FULL-STACK como Ruby on Rails, Play e Mentawai. Tudo, tudo mesmo, foi abstraído. Vc não precisa trazer Spring, Hibernate, Log4J, commons email, file upload, JSTL, JAAS, blah, blah, blah. Com essa salada de frameworks, exterminar a complexidade e ABSTRAIR vira uma tarefa impossível.
Há vários sistemas em producao usando o Mentawai com milhares de acessos simultâneos.
|
 |
|
|
digaoneves wrote:Você poderia dar uma breve descrição do que é Configuração Programática?
Para nós mortais que não temos acesso a quase nada além do GUJ, rs.
Sendo bem objetivo, sem enrolar:
Num framework FULL-STACK há diversas coisas que precisam ser setadas ou configuradas. Por exemplo, IoC é bem óbvio. No Mentawai você faz isso na classe AppManager que é a tal da configuracão programática, ou seja, é PROGRAMA ou código Java ao invés de XML ou Annotation.
Em outros frameworks você faria isso via XML central ou Annotations espalhadas pelo seu código. No Mentawai a configuracão é CENTRAL e PROGRAMÁTICA. Vantagens disso:
- Mais prazerosa e natural.
- Menos propensa a erros pois a IDE compila e checa pra vc.
- Auto-complete, auto-compile e refactoring e todas as sacadas do Eclipse pra Java.
- Flexibilidade. Como vc configura 100 actions diferentes num XML ou via annotations? Com o Mentawai vc faz um for loop ou o que quiser. A configuracao está no seu comando e não o oposto.
Isso em 2005 foi uma pequena revolucão. Todos foram contra, claro. Só que hoje em dia quase todos os frameworks comecam a se render a configuracao programatica. Spring, Hibernate, etc.
Etnretanto essa não é o grande diferencial do Mentawai. É parte do diferencial mas o grande barato do framework é a:
- PRODUTIVIDADE
- SIMPLICIDADE
- FACILIDADE
- FULL-STACK
- STAY OUT OF THE WAY APPROACH
Querendo ver a configuracao programática na prática, veja aqui: http://websvn.soliveirajr.com/filedetails.php?repname=MentaTutorials&path=%2FMentaRefApp%2Ftrunk%2Fsrc%2Fmain%2Fjava%2Forg%2Fmenta%2FAppManager.java
Veja como as actions, os filtros, o envio de email, o IoC, etc são configurados.
|
 |
|
|
|
|