Wildfly and Modules

62 views
Skip to first unread message

Ivo Sestren Junior

unread,
Apr 16, 2018, 2:26:38 PM4/16/18
to caelum-...@googlegroups.com
Bom, estou voltando as tentativas de colocar o vraptor como modulo do wildfly.

O cenário é o seguinte:
Tenho vários projetos que utilizam o vraptor, todos eles feito deploy direto no wildfly.
Para não ter que ir o mesmo jar de dependências dentro de todos os war's, acabo instalando estas dependências no modules do wildfly ou utilizando as que estão nativas no mesmo.
Todas elas funcionando perfeitamente, exceto a dependência "vraptor-4.2.0.Final".
Testei com todas as dependências que o vraptor tem, e todas elas estão ok.

Meu jboss-deployment-structure.xml esta assim:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="com.google.guava"/>
<module name="javax.ejb.api"/>
<module name="javax.validation.api"/>
<module name="org.antlr"/>
<module name="org.dom4j"/>
<module name="org.javassist"/>
<module name="org.jboss.jandex"/>

<module name="javax.persistence.api"/>
<module name="org.hibernate"/>
<module name="org.hibernate.commons-annotations"/>
<module name="org.hibernate.infinispan"/>
<module name="org.hibernate.validator"/>
<module name="org.hibernate.validator.cdi"/>

<module name="org.firebirdsql"/>

<module name="com.thoughtworks.xstream.xstream"/>
<module name="com.google.code.gson.gson"/>
<module name="net.vidageek.mirror"/>
<module name="br.com.caelum.iogi"/>
<module name="com.thoughtworks.paranamer.paranamer"/>
<module name="org.slf4j"/>
<module name="javax.annotation.api"/>
<module name="com.zaxxer.hikaricp"/>

<!--<module name="br.com.caelum.vraptor"/>-->
</dependencies>
</deployment>
</jboss-deployment-structure>

Ja o arquivo module.xml de instalação do vraptor como modulo no wildfly esta assim:

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="br.com.caelum.vraptor">
    <resources>
        <resource-root path="vraptor-4.2.0.Final.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
<module name="javax.enterprise.api"/>
<module name="javax.inject.api"/>
<module name="com.google.guava"/>
<module name="br.com.caelum.iogi"/>
<module name="org.javassist"/>
<module name="org.slf4j"/>
<module name="net.vidageek.mirror"/>
<module name="com.thoughtworks.paranamer.paranamer"/>
<module name="com.thoughtworks.xstream.xstream"/>
<module name="com.google.code.gson.gson"/>
<module name="javax.annotation.api"/>
<module name="javax.interceptor.api"/>
<module name="javax.ejb.api"/>
<module name="javax.validation.api"/>
<module name="org.hibernate.validator.cdi"/>
<module name="javax.servlet.jstl.api"/>
<module name="javax.servlet.jsp.api"/>
<module name="javax.servlet.api"/>
<module name="org.jboss.weld.api"/>
<module name="org.jboss.weld.core"/>
<module name="org.jboss.weld.probe"/>
<module name="org.jboss.weld.spi"/>
<module name="org.jboss.as.weld"/>

<module name="javax.persistence.api"/>
<module name="org.hibernate"/>
<module name="org.hibernate.commons-annotations"/>
<module name="org.hibernate.infinispan"/>
<module name="org.hibernate.validator"/>
<module name="org.hibernate.validator.cdi"/>
    </dependencies>
</module>

Tem algumas dependencias do vraptor que não existem dentro do wildfly nativamente, mas mesmo assim fiz a instalação das mesmas e testes das mesmas excluindo-as do war, e o projeto continuou funcionando corretamente.
No ultimo caso, ficando somente o jar do vraptor dentro do war, funciona, mas ao remover o jar do vraptor e pedir que o utiliza o mesmo do modules do wildfly, ai neste caso não funciona mais.
Ele até chega a fazer o deploy corretamente do war sem o vraptor.jar dentro dele.
Mas ao tentar chamar a url do projeto não carrega nada, parece que o vraptor não inicializou.
Alguém ja passou por isto ou sabe como resolver, ou até mesmo alguma ideia do que testar?

Att,

Ivo Sestren Junior

unread,
Apr 17, 2018, 9:19:07 AM4/17/18
to caelum-...@googlegroups.com
Continuando os testes.

Parece que falta um Listener a ser adicionado no web.xml para fazer o start do vraptor.
Alguém saberia me dizer qual exatamente?

Ivo Sestren Junior

unread,
Apr 17, 2018, 10:18:37 AM4/17/18
to caelum-...@googlegroups.com
Identifiquei que não estava encontrando a anotação @WebFilter que tem na classe do VRaptor.

Criei uma classe dentro do meu projeto e estendi a classe VRaptor e coloquei a mesma anotação @WebFilter na minha classe.

@WebFilter(filterName = "vraptor", urlPatterns = "/*", dispatcherTypes = {DispatcherType.FORWARD, DispatcherType.REQUEST}, asyncSupported = true)
public class MngVRaptor extends VRaptor {
}

Assim começou a inicializar o VRaptor, mas agora mostra erro dizendo que o CDI não conseguiu rodar o produces do ServletContext

org.jboss.weld.exceptions.IllegalProductException: WELD-000052: Cannot return null from a non-dependent producer method: Producer for Producer Method [ServletContext] with qualifiers [@Any @Default] declared as [[BackedAnnotatedMethod] @Produces @ApplicationScoped public br.com.caelum.vraptor.ioc.cdi.ServletContextFactory.getInstance()] declared on Managed Bean [class br.com.caelum.vraptor.ioc.cdi.ServletContextFactory] with qualifiers [@Any @Default] at br.com.caelum.vraptor.ioc.cdi.ServletContextFactory.getInstance(ServletContextFactory.java:41)
Reply all
Reply to author
Forward
0 new messages