estou fazendo o projeto da nova apostila da caelum fj28, mas na parte de rest dá dando erro ao tentar abrir o formulario(“produtos/novo”), no atualizar e remover(não faz ação nenhuma no botão), o erro de abertura do formulário é:
23/12/2009 16:15:31 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:vraptor-blank-project' did not find a matching property.
23/12/2009 16:15:31 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre6/bin/client;C:/Arquivos de programas/Java/jre6/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ARQUIV~1\Borland\Delphi6\Bin;C:\ARQUIV~1\Borland\Delphi6\Projects\Bpl;C:\Arquivos de programas\Microsoft SQL Server\80\Tools\Binn\;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\binn\;C:\Arquivos de programas\Arquivos comuns\Autodesk Shared\;c:\Arquivos de programas\Java\jdk1.6.0_12\bin\;c:\Arquivos de programas\Java\jdk1.6.0_12\bin;.;
16:15:32,078 INFO [VRaptorApplicationContext] Refreshing Root WebApplicationContext: startup date [Wed Dec 23 16:15:32 BRST 2009]; root of context hierarchy
16:15:32,359 INFO [VRaptorApplicationContext] Scanning WEB-INF/classes: C:\Documents and Settings\Carlos Vinicios\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\vraptor-blank-project\WEB-INF\classes
16:15:32,515 INFO [DefaultListableBeanFactory] Overriding bean definition for bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor': replacing [Root bean: class [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [br.com.caelum.vraptor.ioc.spring.InjectionBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]
23/12/2009 16:15:31 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
23/12/2009 16:15:31 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 564 ms
23/12/2009 16:15:31 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
23/12/2009 16:15:31 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
16:15:32,890 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@100bac2: defining beans [defaultRoutes,encodingHandlerFactory,pathAnnotationRoutesParser,objenesisProxifier,XStreamXMLDeserializer,defaultMethodNotAllowedHandler,defaultResourceNotFoundHandler,emptyElementsRemoval,defaultAcceptHeaderToFormat,defaultDeserializers,defaultTypeFinder,asmBasedTypeCreator,defaultResourceTranslator,noRoutesConfiguration,defaultInterceptorRegistry,defaultMultipartConfig,defaultRouter,defaultConverters,paranamerNameProvider,defaultTypeNameExtractor,stereotypeHandler,converterHandler,interceptorStereotypeHandler,deserializesHandler,stereotypedBeansRegistrar,defaultSpringLocator,defaultMethodInfo,defaultStatus,defaultRefererResult,deserializingInterceptor,defaultPageResult,defaultOutjector,XStreamXMLSerialization,downloadInterceptor,defaultPathResolver,multipartInterceptor,interceptorListPriorToExecutionExtractor,outjectResult,defaultValidator,defaultResult,resourceLookupInterceptor,XStreamJSONSerialization,defaultRepresentationResult,jstlLocalization,defaultFormatResolver,executeMethodInterceptor,applicationConfiguration,defaultValidationViewsFactory,forwardToDefaultViewInterceptor,flashInterceptor,defaultHttpResult,parametersInstantiatorInterceptor,emptyResult,ognlParametersProvider,defaultLogicResult,instantiateInterceptor,bigDecimalConverter,bigIntegerConverter,booleanConverter,byteConverter,characterConverter,doubleConverter,enumConverter,floatConverter,integerConverter,localeBasedCalendarConverter,localeBasedDateConverter,longConverter,primitiveBooleanConverter,primitiveByteConverter,primitiveCharConverter,primitiveDoubleConverter,primitiveFloatConverter,primitiveIntConverter,primitiveLongConverter,primitiveShortConverter,shortConverter,uploadedFileConverter,VRaptorRequestProvider,httpServletRequestProvider,httpServletResponseProvider,httpSessionProvider,defaultRequestExecution,defaultInterceptorStack,produtosController,produtoDao,criadorDeSessionFactory,criadorDeSessoes,mundo,indexController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.aop.config.internalAutoProxyCreator,cacheBasedTypeCreator]; root of factory hierarchy
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
16:15:34,531 INFO [DefaultConverters ] Registering bundled converters
16:15:34,593 INFO [RouteBuilder ] /produtos/novo --> public void br.com.caelum.goodbuy.controller.ProdutosController.formulario()
16:15:34,593 INFO [RouteBuilder ] /produtos/{id} --> public br.com.caelum.goodbuy.Modelo.Produto br.com.caelum.goodbuy.controller.ProdutosController.edita(java.lang.Long)
16:15:34,609 INFO [RouteBuilder ] /produtos/{produtos.id} --> public void br.com.caelum.goodbuy.controller.ProdutosController.altera(br.com.caelum.goodbuy.Modelo.Produto)
16:15:34,609 INFO [RouteBuilder ] /produtos --> public java.util.List br.com.caelum.goodbuy.controller.ProdutosController.lista()
16:15:34,609 INFO [RouteBuilder ] /produtos --> public void br.com.caelum.goodbuy.controller.ProdutosController.adiciona(br.com.caelum.goodbuy.Modelo.Produto)
23/12/2009 16:15:34 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
23/12/2009 16:15:34 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
23/12/2009 16:15:34 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47 config=null
23/12/2009 16:15:34 org.apache.catalina.startup.Catalina start
INFO: Server startup in 3475 ms
16:15:34,609 INFO [RouteBuilder ] /produtos/{id} --> public void br.com.caelum.goodbuy.controller.ProdutosController.remove(java.lang.Long)
16:15:34,609 INFO [RouteBuilder ] /mundo/boasVindas --> public java.lang.String br.com.caelum.goodbuy.Mundo.boasVindas()
16:15:34,609 INFO [RouteBuilder ] /mundo/paises --> public java.util.List br.com.caelum.goodbuy.Mundo.paises()
16:15:34,609 INFO [RouteBuilder ] /mundo/num --> public int br.com.caelum.goodbuy.Mundo.num()
16:15:34,609 INFO [RouteBuilder ] /mundo/exibir --> public br.com.caelum.goodbuy.Modelo.Produto br.com.caelum.goodbuy.Mundo.exibir()
16:15:34,625 INFO [RouteBuilder ] / --> public void br.com.caelum.vraptor.blank.IndexController.index()
16:15:34,625 INFO [VRaptor ] VRaptor 3 successfuly initialized
23/12/2009 16:15:36 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: There are two rules that matches the uri '/produtos/novo' with method GET: [[FixedMethodStrategy: uri /produtos/novo methods [GET]], [FixedMethodStrategy: uri /produtos/{id} methods [GET]]] with same priority. Consider using @Path priority attribute.
at br.com.caelum.vraptor.http.route.DefaultRouter.checkIfThereIsAnotherRoute(DefaultRouter.java:106)
at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:97)
at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:52)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:64)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
ProdutosController
package br.com.caelum.goodbuy.controller;
import java.util.List;
import br.com.caelum.goodbuy.dao.ProdutoDao;
import br.com.caelum.goodbuy.Modelo.Produto;
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.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Hibernate;
import br.com.caelum.vraptor.view.Results;
@Resource
public class ProdutosController {
private ProdutoDao dao;
private Result result;
private Validator validator;
public ProdutosController(ProdutoDao dao, Result result, Validator validador)
{
this.dao = dao;
this.result = result;
this.validator = validador;
}
@Get
@Path("/produtos/novo")
public void formulario()
{
}
@Get
@Path("/produtos/{id}")
public Produto edita(Long Id)
{
return dao.carrega(Id);
}
@Put
@Path("/produtos/{produtos.id}")
public void altera(Produto produto)
{
dao.atualizar(produto);
result.redirectTo(ProdutosController.class).lista();
}
@Post
@Path("/produtos")
public void adiciona(Produto produto)
{
validator.addAll(Hibernate.validate(produto));
validator.onErrorUse(Results.page()).of(ProdutosController.class).formulario();
dao.salva(produto);
result.redirectTo(ProdutosController.class).lista();
}
@Delete
@Path("/produtos/{id}")
public void remove(Long id)
{
Produto produto = dao.carrega(id);
dao.remover(produto);
result.redirectTo(ProdutosController.class).lista();
}
@Get
@Path("/produtos")
public List<Produto> lista()
{
return dao.listaTudo();
}
}
como corrigir isto?
