Boa tarde a todos(as)!
Estou aprendendo a trabalhar com JSF e CDI. Fiz um projeto pequeno, como poderão ver, o “xhtml” tem praticamente uma linha de código e, ainda assim, não funciona.
Sempre que eu executo este projeto o navegador apresenta a pág 404. Outros projetos, sem CDI funcionam normalmente.
Segue o código-fonte:
PrecoProduto.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<h:outputText value="#{meuBean.preco}" />
</h:body>
</html>
CalculadoraPreco.java
package cursojavaee.service;
public class CalculadoraPreco {
public double calcularPreco(int quantidade, double precoUnitario) {
return quantidade * precoUnitario;
}
}
PrecoProdutoBean.java
package cursojavaee.controller;
import javax.inject.Inject;
import javax.inject.Named;
import cursojavaee.service.CalculadoraPreco;
@Named("meuBean")
public class PrecoProdutoBean {
@Inject
private CalculadoraPreco calculadora;
public double getPreco() {
return calculadora.calcularPreco(12, 44.55);
}
}
beans.xml
// Arquivo vazio localizado em /resources/META-INF
POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.algaworks</groupId>
<artifactId>ConfigurandoProjetoJSFeCDI</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Weld (implementação do CDI) -->
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0</version>
</dependency>
<!-- Mojarra (implementação do JSF 2) -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.8</version>
<scope>compile</scope>
</dependency>
<!-- PrimeFaces (biblioteca de componentes) -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
context.xml localizado em /webapp/META-INF
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- disables storage of sessions across restarts -->
<Manager pathname=""/>
<Resource name="BeanManager" auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory"/>
</Context>
web.xml localizado em /webapp/WEB-INF
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
<resource-env-ref>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
</resource-env-ref>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
faces-config.xml localizado em /webapp/WEB-INF
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
version="2.1">
</faces-config>
É isto. Eu utilizo o Eclipse. Este código sempre apresenta a página 404 e eu não consigo identificar o erro de jeito nenhum.
Se alguém puder ajudar, de antemão deixo aqui meus agradecimentos.
Edwar Saliba Jr.