Vraptor 3.3.1 + run-jetty-run

Olá a todos,

Após atualizar a versão do vRaptor 3.2.0 para a 3.3.1 não consegui mais subir meu projeto com o run-jetty-run do eclipse, passou a dar a exceção abaixo. Alguém já passou por isso ?

Obrigado desde já.

2011-04-01 09:23:46.897:WARN::failed vraptor: br.com.caelum.vraptor.scan.ScannerException: Could not scan WEB-INF/classes
2011-04-01 09:23:46.898:WARN::Failed startup of context org.mortbay.jetty.webapp.WebAppContext@13829d5{/blumar_ws_config,WebContent}
br.com.caelum.vraptor.scan.ScannerException: Could not scan WEB-INF/classes
	at br.com.caelum.vraptor.scan.ScannotationComponentScanner.scanWebInfClasses(ScannotationComponentScanner.java:71)
	at br.com.caelum.vraptor.scan.ScannotationComponentScanner.scan(ScannotationComponentScanner.java:54)
	at br.com.caelum.vraptor.scan.WebAppBootstrapFactory.create(WebAppBootstrapFactory.java:65)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:83)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
	at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
	at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
	at org.mortbay.jetty.Server.doStart(Server.java:224)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at runjettyrun.Bootstrap.main(Bootstrap.java:210)
2011-04-01 09:23:46.922:INFO::Started SelectChannelConnector@0.0.0.0:8080

Lucas Pérez

mude o diretório de compilação das classes para WEB-INF/classes, e esse erro para de acontecer

Oi Lucas,

Obrigado pela ajuda e pela pronta resposta. Tudo funcionando perfeitamante.

Abs,
Lucas

Aonde que altera a compilacao?

propriedades do projeto, build Path …

Achei.

Obrigado.

Amigos estou com problema… não consigo rodar o vraptor no jetty do gradle…

eu fiz o seguinte:

[code]apply plugin: 'java’
apply plugin: 'eclipse’
apply plugin: 'eclipse-wtp’
apply plugin: 'war’
apply plugin: 'jetty’
apply plugin:‘application’

sourceCompatibility = 1.7
version = '1.0’
jar {
manifest {
attributes ‘Implementation-Title’: ‘Gradle Quickstart’, ‘Implementation-Version’: version
}
}

repositories {
mavenCentral()
}

sourceSets {
main {
java {
srcDir ‘src/main/java’
}
resources {
srcDir ‘src/main/resources’
}
output.classesDir ‘WEB-INF/classes’
}
test {
java {
srcDir ‘src/test/java’
}
resources {
srcDir ‘src/test/resources’
}
}
}

jettyRun.scanIntervalSeconds=3
[jettyRun,jettyRunWar].contextPath = ‘/portaldeservicos’
[jettyRunWar,jettyStop]
.stopPort = 8081
[jettyRunWar,jettyStop]*.stopKey = ‘stopKey’

dependencies {
compile group: ‘commons-collections’, name: ‘commons-collections’, version: ‘3.2’

compile group: 'com.google.code.gson', name: 'gson', version: '2.2.4'

compile group: 'br.com.caelum', name: 'vraptor', version: '3.5.1'
			
compile group: 'br.com.caelum.vraptor', name: 'vraptor-plugin-hibernate4', version: '1.0.2'				
	
compile group: 'net.sourceforge.jtds', name: 'jtds', version: '1.3.0'		
	
compile group: 'org.hibernate', name: 'hibernate-core', version: '4.1.10.Final'		
	
compile group: 'org.hibernate', name: 'hibernate-c3p0', version: '4.1.10.Final'
	
compile group: 'org.postgresql', name: 'postgresql', version: '9.2-1003-jdbc4'		



testCompile group: 'junit', name: 'junit', version: '4.+'

}

[/code]

e coloquei o seguinte no controller:

[/code]@Resource
public class CidadeController {

private final Cidades cidades;
private final Result result;

public CidadeController(Result result, final Cidades cidades) {
	this.cidades = cidades;
	this.result = result;
}

@Get("/cidade")
public void listar(){
	List<Cidade> r = cidades.listarTodas();
	result.use(Results.json()).from(r).serialize();
}

}[code]

quando eu rodo o projeto dentro do tomcat no eclipse ele funciona normalmente porem quando dou o gradle jR ele nao acessa o /cidade

se eu acessar localhost:8080/portaldeservicos ele me mostra o meu index.jsp

mas nao quando chamo o /cidades

alguem sabe o pq?? isso somente via jetty

obrigado

esse cara:

output.classesDir 'WEB-INF/classes' 

não deveria ser:

output.classesDir '<a pasta web>/WEB-INF/classes' 

?

lucas ja estava assim anteriormente e tbm nao funcionou output.classesDir 'src/main/webapp/WEB-INF/classes'

vc tá com o log4j configurado? aparece algo no log do servidor?

[quote] Servlet 3 Container
13-09-13 15:27:15,584 [INFO] br.com.caelum.vraptor.config.BasicConfiguration - br.com.caelum.vraptor.scanning = null
13-09-13 15:27:15,586 [INFO] br.com.caelum.vraptor.scan.WebAppBootstrapFactory - Dynamic WebAppBootstrap found.
13-09-13 15:27:15,728 [ERROR] br.com.caelum.vraptor.scan.ScannotationComponentScanner - There’s no occurence of package
br.com.caelum.vraptor.util.hibernate in classpath
13-09-13 15:27:16,025 [INFO] org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.
1.Final}
13-09-13 15:27:16,035 [INFO] org.hibernate.Version - HHH000412: Hibernate Core {4.1.10.Final}
13-09-13 15:27:16,039 [INFO] org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
13-09-13 15:27:16,043 [INFO] org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
13-09-13 15:27:16,069 [INFO] org.hibernate.cfg.Configuration - HHH000044: Configuring from URL: file:/C:/java/projetos/p
ortaldeservicos/build/resources/main/hibernate.cfg.xml
13-09-13 15:27:16,126 [INFO] org.hibernate.cfg.Configuration - HHH000041: Configured SessionFactory: null
13-09-13 15:27:16,377 [INFO] org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH00
0402: Using Hibernate built-in connection pool (not for production use!)
13-09-13 15:27:16,476 [INFO] org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH00
0115: Hibernate connection pool size: 20
13-09-13 15:27:16,483 [INFO] org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH00
0006: Autocommit mode: false
13-09-13 15:27:16,491 [INFO] org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH00
0401: using driver [org.postgresql.Driver] at URL [jdbc:postgresql://ec2-54-232-228-32.sa-east-1.compute.amazonaws.com:5
432/portalservicos]
13-09-13 15:27:16,497 [INFO] org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH00
0046: Connection properties: {user=postgres, password=****}
13-09-13 15:28:15,729 [INFO] org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLD
ialect
13-09-13 15:28:15,750 [INFO] org.hibernate.engine.jdbc.internal.LobCreatorBuilder - HHH000424: Disabling contextual LOB
creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
13-09-13 15:28:15,773 [INFO] org.hibernate.engine.transaction.internal.TransactionFactoryInitiator - HHH000399: Using de
fault transaction strategy (direct JDBC transactions)
13-09-13 15:28:15,784 [INFO] org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTransla
torFactory
13-09-13 15:28:16,396 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000228: Running hbm2ddl schema update
13-09-13 15:28:16,399 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000102: Fetching database metadata
13-09-13 15:28:16,446 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema
13-09-13 15:28:17,420 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000261: Table found: public.cidade
13-09-13 15:28:17,427 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000037: Columns: [id, nome]
13-09-13 15:28:17,435 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000108: Foreign keys: []
13-09-13 15:28:17,442 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000126: Indexes: [cidade_pkey]
13-09-13 15:28:17,451 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete
13-09-13 15:28:17,498 [INFO] br.com.caelum.vraptor.core.DefaultConverters - Registering bundled converters
13-09-13 15:28:17,514 [INFO] br.com.caelum.vraptor.view.LinkToHandler - Registering linkTo component
13-09-13 15:28:17,594 [INFO] br.com.caelum.vraptor.http.route.DefaultRouteBuilder - /cidade
[GET] -> CidadeController.listar()
13-09-13 15:28:17,616 [INFO] br.com.caelum.vraptor.VRaptor - VRaptor 3.5.0 successfuly initialized

Building > :jettyRun > Running at http://localhost:8080//portaldeservicos
[/quote]

parece que subiu normalmente mas quando acesso: http://localhost:8080/portaldeservicos/cidade

ele da o seguinte erro:
HTTP ERROR 404

Problem accessing /portaldeservicos/cidade. Reason:

NOT_FOUND

Powered by Jetty://

Ele registrou a rota:

13-09-13 15:28:17,594 [INFO] br.com.caelum.vraptor.http.route.DefaultRouteBuilder - /cidade 
[GET] -> CidadeController.listar() 

Running at http://localhost:8080//portaldeservicos

então vc tem que acessar: http://localhost:8080//portaldeservicos/cidade

muda a conf pra tirar essa / adicional

Lucas eu tinha percebido isso, e arrumei apos fazer essa postagem, mas continua dando o mesmo erro. nao consigo acessar via jetty

outra duvida, vc sabe se tem como eu configurar o vraptor para sempre trabalhar com JSON?? quero deixar por padrao se eu der um return em um metodo ele ja retornar o json do objeto e nao ter que transformar via result

exemplo


public void t(){
 return Obejct
}

e ele ja retornar o json do objeto

obrigado

É razoavelmente fácil de implementar…

acho que isso resolve:

@Lazy
@Interceptor(after=ExecuteMethodInterceptor.class, before=ForwardToDefaultViewInterceptor.class)
public class JSONInterceptor implements Interceptor {
   
   public JSONInterceptor(Result result, MethodInfo info) {
      this.result = result;
      this.info = info;
   }

   public boolean accepts(ResourceMethod method) {
       return !method.getMethod().getReturnType().equals(void.class);
   }

   public void intercept(....) {
       result.use(Results.json()).from(info.getResult()).serialize();
       stack.next(....);
   }
}

vc provavelmente vai ter que colocar uns ifs no info.getResult(), ver se ele não é um Download por exemplo.

show. vou tentar… e em relacao ao jetty, tem alguma ideia??

vlw

se o log do vraptor falou que criou a rota, deveria funcionar…

precisa ver qual é o context path certinho…

dá uma olhada no fim do log, se estiver assim:

13-09-13 15:28:17,594 [INFO] br.com.caelum.vraptor.http.route.DefaultRouteBuilder - /cidade 
[GET] -> CidadeController.listar() 
13-09-13 15:28:17,616 [INFO] br.com.caelum.vraptor.VRaptor - VRaptor 3.5.0 successfuly initialized 
> Building > :jettyRun > Running at http://localhost:8080/portaldeservicos 

deveria funcionar: http://localhost:8080/portaldeservicos/cidade

lucas. ficou assim agora:

[quote]13-09-13 22:54:20,177 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000228: Running hbm2ddl schema update
13-09-13 22:54:20,181 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000102: Fetching database metadata
13-09-13 22:54:20,983 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000396: Updating schema
13-09-13 22:54:21,937 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000261: Table found: public.cidade
13-09-13 22:54:21,940 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000037: Columns: [id, nome]
13-09-13 22:54:21,944 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000108: Foreign keys: []
13-09-13 22:54:21,949 [INFO] org.hibernate.tool.hbm2ddl.TableMetadata - HHH000126: Indexes: [cidade_pkey]
13-09-13 22:54:21,958 [INFO] org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000232: Schema update complete
13-09-13 22:54:21,990 [INFO] br.com.caelum.vraptor.core.DefaultConverters - Registering bundled converters
13-09-13 22:54:21,998 [INFO] br.com.caelum.vraptor.view.LinkToHandler - Registering linkTo component
13-09-13 22:54:22,061 [INFO] br.com.caelum.vraptor.http.route.DefaultRouteBuilder - /cidade
[GET] -> CidadeController.listar()
13-09-13 22:54:22,096 [INFO] br.com.caelum.vraptor.VRaptor - VRaptor 3.5.0 successfuly initialized

Building > :jettyRun > Running at http://localhost:8080/portaldeservicos[/quote]

porem nao consegui acesso… uma coisa eu vi aqui que apareceu a seguinte mensagem:

[quote]13-09-13 22:53:57,461 [INFO] br.com.caelum.vraptor.scan.WebAppBootstrapFactory - Dynamic WebAppBootstrap found.
13-09-13 22:53:57,522 [ERROR] br.com.caelum.vraptor.scan.ScannotationComponentScanner - There’s no occurence of package
br.com.caelum.vraptor.util.hibernate in classpath
13-09-13 22:53:57,839 [INFO] org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.
1.Final}[/quote]

esse ERROR ai… pode ter interferir em algo?? mas teoricamente se interfere ai, teria que interferir quando eu subo no tomcat dentro do eclipse tbm nao e?
abracos

será que o 404 não é pq não existe o jsp?

esse log da falta do pacote é pq na versão 3.5.0 o plugin do hibernate foi extraído:

Hibernate 3: https://github.com/caelum/vraptor-hibernate
Hibernate 4: https://github.com/garcia-jj/vraptor-plugin-hibernate4

Então mas eu estou retornando um json, e nao redirecionando para um jsp…

ele teria que me mostrar o json no navegador igual acontece no tomcat do eclipse

liga o log de debug do VRaptor, e veja o que acontece no meio da requisição…