Bug do vRaptor?

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 ?

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

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

é 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

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

[quote=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[/quote]

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.

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>

[quote=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:

[code]

vraptor
br.com.caelum.vraptor.VRaptor

<filter-mapping>
	<filter-name>vraptor</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

[/code][/quote]
Lucas fiz isso

meu web.xml

Erro persiste

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

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

já tentou procurar por esse erro no google?

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>

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

[quote=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[/quote]

tomcat suporta ejb? acho que não.

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

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

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

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.

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

[quote=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[/quote]

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

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

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