Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

Status 404 Mágico

Estava tudo funcionando, até eu injetar o ProdutoDao o e definir o @Produces do EntityManager, aí começou a dar Status 404 - /vraptor-produtos/produto/lista. (na verdade, qualquer uri que deveria ser válido)

Já restartei o tomcat, já reiniciei o computador e nada. Simplesmente parou de de achar o projeto vraptor-produtos

O que é isto ????????????????????????????????????

Outra coisa que está acontecendo é o conflito de portas entre o javaw e o tomcat. Já troquei as portas do tomcat e depois de restartar o tomcat algumas vezes, o conflito recomeça a dar na nova porta.

13 respostas

Oi Robson,

E o log? Mostra algo?

Não mostra nenhum erro.

Quando eu subo o tomcat pelo eclipse em outro projeto(produtos) que está em outro workspace(workspaceJSF2), ele funciona normalmente. Mas quando eu volto para o workspace(workspaceVraptor4) que contem o projeto em questão(vraptor-produtos) ele da o erro 404. Mas estava funcionando. Foi depois de injetar o ProdutoDao.

Quando eu subo o tomcat pelo eclipse em outro projeto(produtos) que está em outro workspace(workspaceJSF2), ele funciona normalmente. Mas quando eu volto para o workspace(workspaceVraptor4) que contem o projeto em questão(vraptor-produtos) ele da o erro 404. Mas estava funcionando. Foi depois de injetar o ProdutoDao.

Vou testar o seguinte: vou retirar os injects que inseri no programa e ver se volta a funcionar. Mas só amanhã, pois hoje estou ocupado.

Oi Robson,

Já passei também sua dúvida para alguém que manja mais de VRaptor do que eu!

Oi Robson, tudo bem? Pode mandar o log que aparece ao startar o tomcat com esse projeto?

Por ele conseguimos ver o que o servidor publicou, quais rotas foram registradas e etc.

Segue, conforme solicitado, o LOG exibido no console ao subir o tomcat: Parece que tem erros. Não mandei antes porque achei que era outro log gerado em ../tomcat 7.0/logs/commoms-daemon ... . Lá não aparece erros.

Set 18, 2015 9:55:17 AM org.apache.tomcat.util.digester.SetPropertiesRule begin ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:desenvolvimento-web-com-vraptor-4-master' did not find a matching property. Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Server version: Apache Tomcat/7.0.63 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Server built: Jun 30 2015 08:08:33 UTC Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Server number: 7.0.63.0 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: OS Name: Windows 7 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: OS Version: 6.1 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Architecture: amd64 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Java Home: C:\Program Files\Java\jre7 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: JVM Version: 1.7.0_79-b15 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: JVM Vendor: Oracle Corporation Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: CATALINA_BASE: C:\Users\Robson\workspaceVraptor4.metadata.plugins\org.eclipse.wst.server.core\tmp0 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: CATALINA_HOME: C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Command line argument: -Dcatalina.base=C:\Users\Robson\workspaceVraptor4.metadata.plugins\org.eclipse.wst.server.core\tmp0 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Command line argument: -Dcatalina.home=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0 Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Command line argument: -Dwtp.deploy=C:\Users\Robson\workspaceVraptor4.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\endorsed Set 18, 2015 9:55:17 AM org.apache.catalina.startup.VersionLoggerListener log INFORMAÇÕES: Command line argument: -Dfile.encoding=Cp1252 Set 18, 2015 9:55:17 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Intel\Shared Files\cpp\bin\Intel64;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jdk1.7.0_79\bin;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\Doctrine extensions for PHP\;C:\Program Files (x86)\Brackets\command;C:\apache-ant-1.9.6\bin;C:\apache-maven-3.3.3\bin;. Set 18, 2015 9:55:30 AM org.apache.coyote.AbstractProtocol init INFORMAÇÕES: Initializing ProtocolHandler ["http-bio-8080"] Set 18, 2015 9:55:30 AM org.apache.coyote.AbstractProtocol init INFORMAÇÕES: Initializing ProtocolHandler ["ajp-bio-8009"] Set 18, 2015 9:55:30 AM org.apache.catalina.startup.Catalina load INFORMAÇÕES: Initialization processed in 14807 ms Set 18, 2015 9:55:31 AM org.apache.catalina.core.StandardService startInternal INFORMAÇÕES: Starting service Catalina Set 18, 2015 9:55:31 AM org.apache.catalina.core.StandardEngine startInternal INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/7.0.63 Set 18, 2015 9:55:34 AM org.apache.catalina.startup.TldConfig execute INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. Set 18, 2015 9:55:43 AM org.apache.catalina.core.StandardContext listenerStart GRAVE: Exception sending context initialized event to listener instance of class org.jboss.weld.environment.servlet.Listener org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public br.com.caelum.vraptor.dao.ProdutoDao(EntityManager) at br.com.caelum.vraptor.dao.ProdutoDao.(ProdutoDao.java:0)

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:361) at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:282) at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:133) at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:164) at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:507) at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Set 18, 2015 9:55:43 AM org.apache.catalina.core.StandardContext startInternal GRAVE: One or more listeners failed to start. Full details will be found in the appropriate container log file Set 18, 2015 9:55:43 AM org.apache.catalina.core.StandardContext startInternal GRAVE: Context [/vraptor-produtos] startup failed due to previous errors Set 18, 2015 9:55:43 AM org.apache.catalina.core.StandardContext listenerStop GRAVE: Exception sending context destroyed event to listener instance of class org.jboss.weld.environment.servlet.Listener java.lang.NullPointerException at org.jboss.weld.servlet.WeldInitialListener.contextDestroyed(WeldInitialListener.java:102) at org.jboss.weld.servlet.api.helpers.ForwardingServletListener.contextDestroyed(ForwardingServletListener.java:30) at org.jboss.weld.environment.servlet.Listener.contextDestroyed(Listener.java:85) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5064) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5726) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Set 18, 2015 9:55:43 AM org.apache.coyote.AbstractProtocol start INFORMAÇÕES: Starting ProtocolHandler ["http-bio-8080"] Set 18, 2015 9:55:43 AM org.apache.coyote.AbstractProtocol start INFORMAÇÕES: Starting ProtocolHandler ["ajp-bio-8009"] Set 18, 2015 9:55:43 AM org.apache.catalina.startup.Catalina start INFORMAÇÕES: Server startup in 12541 ms

//============================================================= Código Fonte : Class ProdutoController //=============================================================

package br.com.caelum.vraptor.controller;

import java.util.List;

import javax.inject.Inject; import javax.persistence.EntityManager;

import br.com.caelum.vraptor.Controller; import br.com.caelum.vraptor.Delete; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Path; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.dao.ProdutoDao; import br.com.caelum.vraptor.model.Produto; import br.com.caelum.vraptor.util.JPAUtil; import br.com.caelum.vraptor.view.Results;

@Controller public class ProdutoController {

private final Result result; private final ProdutoDao dao;

@Inject public ProdutoController(Result result, ProdutoDao dao) { this.result = result; this.dao = dao;

}

public ProdutoController() { this(null, null); }

@Get("/") public void inicio() { }

@Get public List lista() {

return dao.lista();

}

@Get public void listaXML() {

result.use(Results.xml()).from(dao.lista()).serialize();

}

@Get public void formulario() {

}

@Post public void adiciona(Produto produto) {

dao.adiciona(produto);; result.include("mensagem", "Produto adicionado com sucesso!"); result.redirectTo(this).lista();

}

@Get public void remove(Produto produto){

dao.remove(produto); result.include("mensagem", "Produto removido com sucesso!"); result.redirectTo(this).lista();

} }

//============================================================= Código Fonte : Class ProdutoDao //=============================================================

package br.com.caelum.vraptor.dao;

import java.util.List;

import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.persistence.EntityManager;

import br.com.caelum.vraptor.model.Produto;

public class ProdutoDao {

private final EntityManager em;

@Inject public ProdutoDao(EntityManager em) { this.em = em; }

public ProdutoDao() { this(null); }

public void adiciona(Produto produto) { em.getTransaction().begin(); em.persist(produto); em.getTransaction().commit(); }

public void remove(Produto produto) { em.getTransaction().begin(); em.remove(busca(produto)); em.getTransaction().commit(); }

public Produto busca(Produto produto) { return em.find(Produto.class, produto.getId()); }

@SuppressWarnings("unchecked") public List lista() { return em.createQuery("select p from Produto p").getResultList(); } }

//============================================================= Código Fonte : Class EntityManagerProducer //=============================================================

package br.com.caelum.vraptor.util;

import javax.enterprise.context.RequestScoped; import javax.enterprise.inject.Produces; import javax.persistence.EntityManager;

public class EntityManagerProducer {

@Produces public EntityManager criaEM() {

return JPAUtil.criaEntityManager(); }

}

A formatação ficou um pouco estranha.

Oi Robson.

Pela descrição do erro:

"Unsatisfied dependencies for type EntityManager with qualifiers @Default"

O CDI não está conseguindo enxergar a classe que contém o método produtor de EntityManager. Lá no arquivo beans.xml, o atributo bean-discovery-mode está com o valor "all"?

bean-discovery-mode="all"

Se não tiver, testa com "all" e nos avisa o resultado. Abraço.

solução!

Oi Robson, tudo bem? Basta tirar desse pacote que vai funcionar.

O problema é que o pacote br.com.caelum.vraptor.util, onde sua classe está, é reservado do vraptor, e não é gerenciado pelo CDI.

Mova pra qualquer outro pacote que funcionará como esperado ;)

Movi para outro pacote e funcionou legal. Valeu. Obrigado.

Quanto ao beans.xml , o bean-discovery-mode está setado para "all". Foi carregado assim do arquivo disponibilizado pelo curso. Mas valeu também. Obrigado pela atenção.

Opa, valeu. Eu não tinha ideia que o pacote era reservado pelo VRaptor. Que bom que funcionou! :)

Abraço.