Arquivo da tag: Java

Manipulação de Calendar para montar só ano, mês e último do mês

Caso queira montar seu calendar e só tenha o mês e o ano, porém quando for salvar no banco quer salvar com último dia do mês que foi selecionado basta fazer isso:

daily.getMonth().set(report.getMonth().get(Calendar.YEAR), (report.getMonth().get(Calendar.MONDAY)+1), report.getMonth().getActualMaximum(Calendar.DAY_OF_MONTH));

javax.net.ssl.SSLHandshakeException

Caso já tenha passado por esse erro no java é simples de resolver:

Failed to send out e-mail
 
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
  nested exception is:
	javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
        ...

Na maioria das vezes esse problema acontece quando a data do seu Sistema Operacional está muito adiantada, ai quando o Java vai validar os seus certificados ocasiona esse erro.
Então para ser resolvido basta ajeitar o calendário.

Como pegar a conexão usando JPA ou Hibernate

Eu passei por um problema que era usar a mesma conexão que eu usava no projeto para usar no meu relatório com o ireports.
Para resolver esse problema usei esse código.

public class ReportsRepository {
 
    private EntityManager entityManager;
 
    public ReportsRepository(EntityManager entityManager) {
        this.entityManager = entityManager;
    }
 
    public Connection getConnection() {
        try {
            EntityManagerImpl factory = (EntityManagerImpl) entityManager;
            SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) factory.getSession().getSessionFactory();
            return sessionFactoryImpl.getConnectionProvider().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

Modos de pegar a URI do projeto Java

Existem 3 modos de pegar a URI do projeto usando Java Web.
1º É ${pageContext.request.contextPath}:

<form action="${pageContext.request.contextPath}/livros/salva" method="post">

2º É “c:url”:

<form action="<c:url value="/livros/salva"/>" method="post">

3º É ${linkTo[NomeDoController].nomeDoMetodo}:

<form action="${linkTo[LivrosController].salva}" method="post">

Você só pode usar a opção 3 só com o VRaptor.