-
Notifications
You must be signed in to change notification settings - Fork 329
17 Dependências e pré requisitos
O VRaptor 4 depende do JDK 1.7 e do CDI 1.1, portanto só funcionará nos servidores que suportem essa versão do CDI. Os servidores já testados e suportados são:
- Glassfish 4
- WildFly 8.0
- Tomcat 7 (+ jars do Weld 2.0)
- Jetty 8 (+ jars do Weld 2.0)
Ao usar um Servlet Container como o Tomcat ou Jetty, é preciso adicionar os jars do Weld 2.x, além do seguinte listener em seu web.xml:
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
Para usar CDI no Tomcat é necessário adicionar o conteúdo abaixo no arquivo META-INF/context.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="BeanManager"
auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory" />
</Context>
Para ativar os recursos do CDI no Jetty, você precisa adicionar o conteúdo abaixo no arquivo WEB-INF/jetty-env.xml
:
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="webAppCtx" class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="serverClasses">
<Array type="java.lang.String">
<Item>org.eclipse.jetty.servlet.ServletContextHandler.Decorator</Item>
</Array>
</Set>
<New id="BeanManager" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>
<Ref id="webAppCtx" />
</Arg>
<Arg>BeanManager</Arg>
<Arg>
<New class="javax.naming.Reference">
<Arg>javax.enterprise.inject.spi.BeanManager</Arg>
<Arg>org.jboss.weld.resources.ManagerObjectFactory</Arg>
<Arg />
</New>
</Arg>
</New>
</Configure>
O VRaptor 4 usa como padrão o Maven para gerenciar as dependências. Com isso basta você adicionar o artefato do vraptor como dependência, e o Maven irá se encarregar de fazer o download de todas as dependências.
<dependency>
<groupId>br.com.caelum</groupId>
<artifactId>vraptor</artifactId>
<version>4.0.0</version> <!--or the latest version-->
</dependency>
A estrutura do projeto baseado no Maven é um pouco diferente da estrutura convencional usada pelas IDEs. No entanto quando o projeto é empacotado, o Maven irá gerar a estrutura padrão de um WAR.
Local Maven Descrição Local no pacote WAR src/main/java fontes Java /WEB-INF/classes src/main/resources arquivos de configuração /WEB-INF/classes src/main/webapp arquivos web / src/test/java fontes Java para testes - ignorado - src/test/resources arquivos de config. para testes - ignorado -
Se você não quiser usar o Maven, basta criar um projeto em branco na sua IDE preferida e adicionar o jar do VRaptor com as dependências. Na área de downloads você encontra um zip com todas as dependências necessárias para seu projeto.
Esta é a dependência mais importante do VRaptor 4. Se você usa um Application Server, ele já possui esta dependência, portanto você pode declarar no seu pom.xml
como provided
conforme exemplo:
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>provided</scope>
</dependency>
E se você utiliza um Servler Container (como o Tomcat ou Jetty) você precisa adicionar a implementação de referência do CDI: o Weld.
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>2.1.2.Final</version>
</dependency>
Utilizamos o SLF4J (Simple Logging Facade for Java) para imprimir os logs dos eventos internos. SLF4J pode direcionar o logging para vários frameworks de logging como NOP, Simple, log4j e JDK Logging. Para configurar o logging você precisa adicionar no seu classpath o artefato org.slf4j:slf4j-api
juntamente com o jar de binding que você escolher. Veja mais sobre o assunto na documentação do SLF4J.
A maioria dos projetos preferem usar o log4j como implementação de logging. Caso você queira usá-lo, basta adicionar nas dependências do projeto o seguinte artefato:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version> <!-- ou a última versão disponível -->
</dependency>
Incluir um arquivo de configuração chamado log4j.xml
na pasta de src/main/resources
do projeto, por exemplo:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %5p [%-20c{1}] %m%n" />
</layout>
</appender>
<category name="br.com.caelum.vraptor">
<priority value="DEBUG" />
<appender-ref ref="stdout" />
</category>
<!-- incluir outras definições aqui -->
</log4j:configuration>
São utililizadas para serialização e deserialização XML e JSON respectivamente. Ambas são opcionais. Ou seja, se você não usar os recursos de serialização e deserialização, você pode removê-los do classpath.
Para XStream:
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.4</version>
</dependency>
E para o Gson
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
Necessário para utilizar a funcionalidade de validação. Você precisará adicionar a API validation-api
e alguma implementação, como por exemplo, o Hibernate Validator.
Se você estiver usando um servidor de aplicações como Wildfly ou Glassfish, você não precisa adicionar nenhuma dependência. Porém se você usar apenas um servlet container, é necessário adicionar o Hibernate validator em seu projeto maven, basta incluir no classpath o artefato:
Para usar o Hibernate Validator:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-cdi</artifactId>
<version>5.0.1.Final</version>
</dependency>
Joda-time é uma API para facilitar o trabalho de dados temporais em Java. Os componentes do Joda-time são opcionais e ativados somente se o Joda-time for encontrado no classpath.
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1.0</version>
</dependency>
Infelizmente, o Java não realiza reflection de parâmetros em métodos e construtores, pois esses dados não ficam disponíveis em bytecode (a não ser se compilado em debug mode, porém é algo opcional). Isso faz com que a maioria dos frameworks que precisem desse tipo de informação criem uma anotação própria para isso, o que polui muito o código (exemplo no JAX-WS, onde é comum encontrar um método como o acima com a assinatura void add(@WebParam(name="cliente") Cliente cliente)
.
O VRaptor tira proveito do framework Paranamer, que consegue tirar essa informação por meio da pré compilação ou dos dados de debug, evitando criar mais uma anotação. Alguns dos desenvolvedores do VRaptor também participam no desenvolvimento do Paranamer.
Dependência opcional utilizada apenas se sua aplicação possui funcionalidade de upload de arquivos. Para adicionar o commons-fileupload
é necessário adicionar também o commons-io
no classpath.
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>