Skip to content

17 Dependências e pré requisitos

Otávio Garcia edited this page Jan 11, 2014 · 18 revisions

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)

O Wildfly possui uma restrição para a classe MutableResponse. Para contornar isso você precisa adicionar o seguinte parâmetro no arquivo standalone.xml na tag servlet-container do subsystem undertown:

allow-non-standard-wrappers="true"

Maven

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.

Logging

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>

XStream e Gson

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>

Bean Validation

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>

Paranamer

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.

Commons-fileupload

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>
Clone this wiki locally