Bug do vRaptor?

20 respostas
bruno.costa

Ou cagada minha kkkkk

seguinte, fiz 1 projeto web criei uma classe qualquer anotei com @Stateless e fiz deploy no glassfish v3… ao jogar os jars do vRaptor no lib do projeto web ele apresenta o seguinte erro.

deploy war ejb fail Unable to load EJB module.  DeploymentContext does not contain any EJB

e ao tirar os jars ele funciona normalmente

pra constar, ja testei com pico, spring

alguem passou por isso ?

20 Respostas

Lucas_Cavalcanti

isso só acontece se vc tem o jar do VRaptor?

creio que isso aconteça pq o projeto é web e não aceita @Stateless

bruno.costa

é Java EE 6 ejb 3.1 projeto web aceita @Stateless, se eu manipular o servlet na mão funciona inclusive CDI.

e é só com os jars do vRaptor

Lucas_Cavalcanti

se vc tira só o vraptor-3.x.x.jar o problema pára?

o problema, talvez, seja por causa do web-fragments.xml que o jar tem pra que vc não precise registrá-lo no web.xml

bruno.costa

Lucas Cavalcanti:
se vc tira só o vraptor-3.x.x.jar o problema pára?

o problema, talvez, seja por causa do web-fragments.xml que o jar tem pra que vc não precise registrá-lo no web.xml

tirei somente o jar do vraptor-3.2.0 e o problema parou !

pra resolver eu tenho que remover o web-fragments.xml e registrar o vraptor no web.xml ? isso resolve? se puder colocar um exemplo de como fazer ajuda rsrs obrigado.

Lucas_Cavalcanti

abra o jar com o seu programa que abre zips, vá na pasta META-INF e delete o web-fragments.xml

e registrar no web.xml:

<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
bruno.costa
Lucas Cavalcanti:
abra o jar com o seu programa que abre zips, vá na pasta META-INF e delete o web-fragments.xml e registrar no web.xml:
<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
Lucas fiz isso

meu web.xml



xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="HungrooControlPanelWEB" version="3.0">

WebEscolhe



*.jsp
true


vraptor
br.com.caelum.vraptor.VRaptor


vraptor
/*


Erro persiste


java.lang.RuntimeException: Unable to load EJB module. DeploymentContext does not contain any EJB Check archive to ensure correct packaging for /Users/brunocosta/Desenvolvimento/Java/AppServer/glassfishv3/glassfish/domains/domain1/eclipseApps/WebEscolhe
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:133)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:63)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:175)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:680)

GRAVE: Exception while loading the app
java.lang.RuntimeException: Unable to load EJB module. DeploymentContext does not contain any EJB Check archive to ensure correct packaging for /Users/brunocosta/Desenvolvimento/Java/AppServer/glassfishv3/glassfish/domains/domain1/eclipseApps/WebEscolhe
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:133)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:63)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:175)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:680)

bruno.costa

Lucas se vc quiser eu te mando o projeto é um teste somente.

Lucas_Cavalcanti

não tenho glassfish na minha máquina, não tenho como simular o seu erro…

já tentou procurar por esse erro no google?

bruno.costa

https://glassfish.dev.java.net/issues/show_bug.cgi?id=10592

From the bug:

Ok, found the cause (thanks much for providing the test case!):

  1. EjbSniffer was retrieved after scanning the archive: one (or more) of the library jars packaged in the archive contains EJBs with component annotations. So the ejb container was asked to load the module later.
  2. The ejb container was not able to find the corresponding metadata because the web.xml is 2.4 version so the meta-data processing skipped the annotation processing (we only process annotations for Java EE 5+ schema versions).

After I changed the web.xml to reference 2.5 schema (you can do 3.0 schema as well): http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

The app deployed successfully.

Please give it a try and let me know if it works for you.

link|flag
answered Jan 24 at 20:47
dpb
45729

porém meu web.xml ja está no esquema 3.0

<?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_3_0.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebEscolhe" version="3.0">

	<display-name>WebEscolhe</display-name>

	<session-config>
		<session-timeout>10</session-timeout>
	</session-config>
	
	<jsp-config>
		<jsp-property-group>
			<url-pattern>*.jsp</url-pattern>
			<trim-directive-whitespaces>true</trim-directive-whitespaces>
		</jsp-property-group>
	</jsp-config>
</web-app>
Lucas_Cavalcanti

se vc roda sua aplicação num tomcat normal funciona?

se sim, tenta tirar o jar do VRaptor, criar um filter na sua aplicação, registrar no seu web.xml e ver se a aplicação funciona

bruno.costa

Lucas Cavalcanti:
se vc roda sua aplicação num tomcat normal funciona?

se sim, tenta tirar o jar do VRaptor, criar um filter na sua aplicação, registrar no seu web.xml e ver se a aplicação funciona

tomcat suporta ejb? acho que não.

Lucas_Cavalcanti

mas vc tem um projeto web, certo? coloca só ele no tomcat

bruno.costa

tenho um projeto web com uma classe @Stateless (EJB 3.1) não existe essa anotação

Lucas_Cavalcanti

se vc tira essa anotação @Stateless o projeto chega a subir no glassfish? ou tanto faz?

bruno.costa

se eu tirar o @Stateless ele sobe, se eu deixar a anotação e retirar o jar do vRaptor ele também sobe (publica o EJB no JNDI e tudo) por isso to achando estranho. o problema é só com o jar do vRaptor, estou baixando o jBoss 6 pra ver se funciona.

Lucas_Cavalcanti

bruno, a gente conseguiu reproduzir o problema aqui, vou ver se há alguma solução fácil, senão eu corrijo no vraptor e te mando um snapshot

[]'s

bruno.costa

Lucas Cavalcanti:
bruno, a gente conseguiu reproduzir o problema aqui, vou ver se há alguma solução fácil, senão eu corrijo no vraptor e te mando um snapshot

[]'s

Muito obrigado, eu to achando que o vRaptor sobrescreve alguma coisa do container.

Lucas_Cavalcanti

bruno, consegui resolver do seguinte jeito: colocando o jar do hibernate*.jar

aparentemente o Glassfish tá escaneando o jar do vraptor, e como o SessionFactoryCreator tem a anotação @PostConstruct e @PreDestroy, o glassfish o interpreta como sendo um ejb, mas dá um NoClassDefFound.

se vc não puder colocar o hibernate*.jar, a gente pode tentar ver outras opções:

  • criar as classes org.hibernate.Session e org.hiberante.SessionFactory na sua aplicação, sem nenhuma implementação
  • abrir o jar do VRaptor e apagar o pacote br.com.caelum.vraptor.util.hibernate
bruno.costa

Lucas, vou testar mais tarde se der tempo e te aviso, obrigado pela solução.

bruno.costa

Lucas, funcionou perfeito, obrigado, eu apaguei o pacote br.com.caelum.vraptor.util.hibernate

Criado 1 de dezembro de 2010
Ultima resposta 9 de dez. de 2010
Respostas 20
Participantes 2