[RESOLVIDO] Implementação simples, Java, CDI, só mostra "página 404"

,

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.

Qual servidor você usa? Tomcat, Wildfly…

Tomcat

Aqui está a implementação do CDI. Troca e faz o teste.

        <!-- Weld (implementação do CDI) -->
		<dependency>
			<groupId>org.jboss.weld.servlet</groupId>
			<artifactId>weld-servlet</artifactId>
			<version>2.4.7.Final</version>
			<scope>compile</scope>
		</dependency>
1 curtida

Sr. Antônio Santos,

Funcionou perfeitamente.

Muitíssimo obrigado!

1 curtida