@FacesConverter e @FacesValidate não funcionam no Jetty em uma aplicação multi-módulos!

Pessoal, estou trabalhando com uma aplicação web e foi necessário modulariza-la, nesse momento o @FacesConverter e @FacesValidate deixaram de de funcionar!

Antes eu executava a aplicação o utilizando o plugin do jetty para o maven agora estou usando o plugin Jetty Eclipse.

Conversor:

@FacesConverter("converter.numeroParaComanda")
public class ConverterNumeroParaComanda implements Converter, Serializable {
...
}

Página:

	<pe:inputNumber
		id="inputNumero"
		value="#{variavelLancamentos.comanda}"
		binding="#{variavelLancamentos.inputNumero}"
		decimalPlaces="0"
		required="true"
		thousandSeparator=""
		converter="converter.numeroParaComanda"/>

Agora, se eu fizer:
Conversor:

@Named
public class ConverterNumeroParaComanda implements Converter, Serializable {
...
}

Página:

	<pe:inputNumber
		id="inputNumero"
		value="#{variavelLancamentos.comanda}"
		binding="#{variavelLancamentos.inputNumero}"
		decimalPlaces="0"
		required="true"
		thousandSeparator=""
		converter="#{numeroParaComanda}"/>

Funciona normalmente! Tenho a impressão que e o Jetty não está mapeando as classes nomeadas com @FacesConverter ou @FacesValidate.

Obrigado!

Dispara alguma exceção? Ou simplesmete não funcionada e nada acontece? Enfim, detalhes.

Dispara a exceção abaixo:

javax.faces.FacesException: Erro de expressão: Objeto denominado: converter.numeroParaComanda não encontrado. at com.sun.faces.application.ApplicationImpl.createConverter(ApplicationImpl.java:1341) at org.jboss.weld.environment.servlet.jsf.ForwardingApplication.createConverter(ForwardingApplication.java:134) at com.sun.faces.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:85) at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81) at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129) at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:412) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:175) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at com.sun.faces.facelets.tag.ui.DecorateHandler.apply(DecorateHandler.java:170) at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395) at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366) at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:111) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:189) at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312) at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371) at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:350) at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) at com.sun.faces.facelets.tag.ui.DecorateHandler.apply(DecorateHandler.java:148) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:189) at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312) at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371) at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:350) at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:120) at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:116) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:161) at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:980) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:505) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:564) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:213) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1094) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:432) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1028) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:445) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:267) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:224) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532) at java.lang.Thread.run(Thread.java:722)

Já tentou declarar o converter no faces-config? Dependendo da versão do java EE, parece que em alguns casos, só declarando.

Já, mas não funcionou!

PS: Correção, Funciona no faces-config.xml

Outra tentativa: e usando

[quote=Roselito Fávero da Silva]Outra tentativa: e usando

Sim, declarando como um ManagedBean, funciona. Já havia colocado no post inicial. Mas não entendo porque deixou de funcionar. Mas obrigado.

É que @FacesConverter ainda não é válido para ser injetado diretamente. Parece que isso ia ser resolvido a partir da JSF 2.2, não sei se já aconteceu. Em outras versões, só declarando explicitamente…

Fiz um pequeno projeto de teste para confirmar o problema, executei no Jetty e funcionou direitinho, o converter foi reconhecido apenas com a anotação!

Infelizmente não deu para reproduzir o erro…

Só para ter uma referência, o que usei foi Jetty 9.0.6 e MyFaces 2.1.13

Ainda não ficou claro pra mim:

Só funciona quando você anota com @FacesValidator, e não funciona quando você anota com @Named? Esse é o problema?

[quote=rodrigo.uchoa]Ainda não ficou claro pra mim:

Só funciona quando você anota com @FacesValidator, e não funciona quando você anota com @Named? Esse é o problema? [/quote]

O contrário!

[quote=gomesrod]Fiz um pequeno projeto de teste para confirmar o problema, executei no Jetty e funcionou direitinho, o converter foi reconhecido apenas com a anotação!

Infelizmente não deu para reproduzir o erro…

Só para ter uma referência, o que usei foi Jetty 9.0.6 e MyFaces 2.1.13[/quote]

Também estou usando o Jetty 9.0.6, mas estou usando o mojarra. 2.1.1.

O estranho disso é que antes de modularizar a aplicação, com o plugin do maven funcionava. Porém, como tive que modularizar, não posso mais executar a aplicação pelo plugin. O problema deve estar em alguma configuração do plugin do jetty para eclipse!

Correção 2.2.1

Pessoal, eu havia colocado que com faces-config não funcionava, eu estava errado. Com ele ele funciona!

Bom pessoal, testei a aplicação rodando direto no jetty e funcionou tranquilamente.

O problema realmente está em alguma configuração dos plugins para o eclipse. Eu testei em dois, Eclipse Jetty Plugin e no Run Jetty Run e obtive o mesmo problema em ambos. Caso declare no faces-config, o problema desaparece. Utilizo o maven para realizar o gerenciamento de dependências e a aplicação foi desenvolvida utilizando CDI e JSF (Mojarra 2.2.4). Para que o CDI funcione, necessito habilitar o JNDI no plugin do Jetty, talvés esteja ai o problema.