| Autor |
Mensagem |
|
|
verifico esses golpes assim: copio o link e colo na barra de endereços do Firefox. Aperto enter.
É bom lembrar que versões antigas do IE já apresentaram brechas onde código malicioso se instalava sem pedir confirmações.
No firefox não ouvi falar de nada gritante assim, mas eu não arriscaria fazer isso no Windows.
|
 |
|
|
zanatto,
Desculpe a ignorâcia:
Se eu tiver uma aplicação simples, que funcione como um context do tomcat, qual é a vantagem de se usar o JBOSS?
Eu penso que o JBOSS é útil se eu precisar de um servidor de EJB...
Obrigado.
|
 |
|
|
Não o sei se resolve o seu problema, mas para mim melhora:
Tenho uma dúzia de contexts que desenvolvo. Todos dependem de uma mesma biblioteca também desenvolvida internamente.
Quando estou desenvolvendo posso manter os 12 contexts ligados no tomcat, mas para melhorar o desempenho só faço deploy daquele que vou usar. Os demais eu retiro completamente do tomcat. Isso é importante, pois tem programador que deixa os context descriptors no $TOMCAT_HOME/conf/Catalina/localhost, e isso deixa o tomcat mais lento para iniciar.
Outra coisa importante: se a mudança no context é boba, atualize a bobeira e dê um reload no context somente. Mesmo alterações de classe ou libraries são atualizadas com este procedimento, que só não funciona se o lib estiver no $TOMCAT_HOME/common/lib.
Espero que fique mais rápida sua experiência com o Tomcat.
|
 |
|
|
Companheiros,
Pesquisei neste tópico se já havia post de código de formatação de CEP. Como não encontrei estou enviando. Espero ser útil.
Ah, ele vai junto de um teste de aceitação.
|
 |
|
|
Bem, neste caso você deveria ter dito ao professor que o seu programa está ficando pronto, mas que ainda falta um bom tanto para ficar pronto.
Daí ao invés de implementar linguiça você estaria tomando um sorvete
|
 |
|
|
Eu nunca tinha pensado a respeito do singleton dessa maneira.
Eu conheço alguns sistemas que possuem classes com regras de negócio. Classes que recebem parâmetros, fazem um processamento em cima destes parâmetros e retornam um valor ou objeto.
É razoável defender que o método que faça a formatação do cnpj deva estar na Classe onde fica o cnpj, por exemplo, uma classe PessoaJutidica.
Todavia existem situações onde pode fazer sentido colocar um método static em uma classe não instanciável. O java.lang.Math é um exemplo de classe não instanciável, mas NÃO SE TRATA DE UM SINGLETON.
Voltando à questão levantada:
Eu tenho um sistema web e preciso de um método que processe Strings para mim. Eu envio um "Não" e ele me devolve um "Não". A priori uma Classe com um método estático e um HashSet privado, com a minha lista de Strings resolveria o caso, certo? Mas e se eu quiser puxar a lista de Strings de um properties? Não vale a pena ser um singleton para evitar a abertura do arquivo a cada chamada?
|
 |
|
|
Eu utilizo o Jasper com o iReport e é bem mais produtivo do que trabalhar diretamente com o iText.
Só recomendo um planejamento de separação por camadas, pois é bastante comum eu ver por aí consultas escritas duas ou três vezes: uma vez para gerar o html (jsp) e outra para o pdf (Jasper). O ideal é o jasper não fazer nenhuma conexão com o banco, mas receber todos os objetos populados e simplesmente gerar o pdf.
|
 |
|
|
Não sei se há como configurar o cache do hibernate.
Eu tive problemas de carregar muitos objetos, e objetos complexos, em uma messa sessão. Algo do genero:
for (int i = 0; i <= lstIdPessoa; i++) {
Integer idDaPessoa = lstIdPessoa.get(i);
Pessoa pessoa = sessaoDoHibernate.get(Pessoa.class, idDaPessoa);
//efetua operações com pessoa
}
No fim do bloco a referencia pessoa deixa de existir e o objeto pessoa pode ser coletado pelo garbage collector, certo? Errado. O objeto para o qual pessoa apontava contina referenciado pela sessaoDoHibernate, e o uso de memória cresce consideravelmente, dependendo do tamanho do objeto pessoa e da quantidade de pessoa, claro.
Dessa forma o tempo de execução do código seguia uma pg.
Resolvemos o problema desassociando pessoa da sessaoDoHibernate assim:
for (int i = 0; i <= lstIdPessoa; i++) {
Integer idDaPessoa = lstIdPessoa.get(i);
Pessoa pessoa = sessaoDoHibernate.get(Pessoa.class, idDaPessoa);
//efetua operações com pessoa
sessaoDoHibernate.evict(pessoa);
}
Com isso o tempo de execução diminuiu, em função do uso melhor da memória.
|
 |
|
|
Renato,
Dê mais informações do seu problema.
Em algum momento o pdf chegou a ser gerado com as informações dinâmicas? Você usa query sql dentro do jasper? Ou passa todos dados por uma classe java?
|
 |
|
|
Liliana,
Eu tive o mesmo problema um tempo atrás, e depois de pesquisar um certo tempo me rendi ao javascript. Parece que não tem jeito de descobrir isso somente com o java.
No meu caso eu coloquei o nome do browser (a propriedade navigator.userAgent que o Rodrigo indicou) em um campo hidden do login da aplicação, e no momento do login eu guardo apropriedade na sessão.
Sem isso eu tive de passar o nome do browser em links, e não ficou bom.
Espero que minha dica ajude.
|
 |
|
|
Dieval,
Obrigado pelo post. Consegui calcular direitinho. O meu problema era o seguinte: no manual vem 5 datas para testarmos o código. Pois é, no meu manual a última data estava errada! Eu fiz uma busca no google e encontrei um manual com a data que você passou (21.02.2025 para 9999 dias).
Bem, ainda bem que era só isso. Mas até eu descobrir perdi algumas horas.
Muito obrigado.
|
 |
|
|
Estou montando a linha do código de barras do boleto segundo as normas da FEBRABAN.
Um dos trechos é o campo fator de vencimento que possui 4 posições e é o número de dias entre 07/nov/1997 e a data de vencimento.
Estou tentando fazer a conta assim:
Calendar cal = new GregorianCalendar(2025, Calendar.DECEMBER, 21);
Calendar base = new GregorianCalendar(1997, Calendar.NOVEMBER, 07);
long diff = cal.getTimeInMillis() - base.getTimeInMillis();
System.out.println("^"+(diff/1000/60/60/24));
Segundo o manual da FEBRABAN, deveria resultar em 9999, mas eu recebo 10271. Quando as datas são mais próximas a diferença de dias cai proporcionalmente, o que me faz crer que o bug deve serelacionar a ano bissexto.
Alguém sabe como eu deveria fazer paracalcular isso?
|
 |
|
|
Qual das classes será chamada depende do classloader. Saber qual das classes iria carregar depende do ambiente em que o código vai rodar.
Acho que não vale a pena especular. Concordo o PadrE: reveja o código. Não está bom.
|
 |
|
|
Icavalera,
Se você está criando um .jar com uma aplicação java, então a solução é a seguinte:
O jar que você está criando possui as suas classes, e possivelmente existe um META-INF indicando qual a classe a ser executada (aquela que tem o método static main).
Para executar esse jar você chama o java assim:
java -jar meujar.jar
Mas como o driver jdbc não é localizado você recebe uma exceção. Você pode colocar o jar do mysql na chamada acima, ou colocar as classes jdbc dentro do seu próprio jar. A segundaopção é melhor para quem vai distribuir o .jar para final user.
Descompacte ambos jar em uma mesma pasta, compacte de novo em um única arquivo jar (zip) e pronto. As classes jdbc serão encontradas sem a necessidade de incluir o jar no classpath.
PS: no início achei meio estranho ter de fazer isso, mas no final é o que a ferramenta da Borland, por exemplo, faz quando você pede que ela gere um jar auto suficiente. Eu faço isso de forma automatizada com o ant.
Boa sorte.
|
 |
|
|
Bem, ao invés de
Date data = new Date();
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.MILLISECOND, Integer.valueOf(""+data.getTime()).intValue());
Eu usei o seguinte:
Date data = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
Shame on me.
|
 |
|
|