JBoss 7.1, OmniFaces 1.6, Eclipse Keplero, CDI 1.0Come utilizzare OmniFaces 1.6 in due WAR in un EAR?
ho trovato la seguente situazione con il nuovo Omnifaces 1.6, quando ho aggiornato da 1,5 a OmniFaces OmniFaces 1.6. Suppongo che abbia qualcosa a che fare con le nuove interessanti funzionalità CDI di OmniFaces 1.6.
Ho due progetti WAR basati su JSF in un archivio EAR, entrambi i progetti hanno OmniFaces come dipendenza ed entrambi verranno distribuiti. Nella distribuzione, OmniFaces 1.6 finisce nello /WEB-INF/lib
di entrambi i progetti WAR. All'inizio di JBoss è stato lanciato lo IllegalArgumentException
.
java.lang.IllegalArgumentException: Registering converter 'class org.omnifaces.converter.ListConverter' failed, duplicates converter ID 'omnifaces.ListConverter' of other converter 'class org.omnifaces.converter.ListConverter'.
at org.omnifaces.cdi.converter.ConverterExtension.processConverters(ConverterExtension.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:264)
at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137)
at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:260)
at org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:170)
at org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:51)
at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:154)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:241)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:229)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:207)
at org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:569)
at org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:559)
at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:60)
at org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:38)
at org.jboss.weld.bootstrap.events.ProcessManagedBeanImpl.fire(ProcessManagedBeanImpl.java:30)
at org.jboss.weld.bootstrap.AbstractBeanDeployer.deploy(AbstractBeanDeployer.java:123)
at org.jboss.weld.bootstrap.BeanDeployment.deployBeans(BeanDeployment.java:204)
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:344)
at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:82)
at org.jboss.as.weld.services.WeldService.start(WeldService.java:76)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Se rimuovo un progetto guerra, allora le scompare eccezione e posso usare l'altro progetto WAR in EAR.
È possibile utilizzare OmniFaces 1.6 in più come un progetto e distribuire su JBoss 7.1.1 in un EAR?
Questo problema è già identificato e al momento ci stiamo lavorando: https://code.google.com/p/omnifaces/issues/detail?id=251 Oggi o domani ci sarà un 1.6.1 con il correzioni obbligatorie – BalusC
Grazie, aspetterò una correzione! – Tony
L'ho risolto. Per favore prova l'istantanea 1.6.1: https://oss.sonatype.org/content/repositories/snapshots/org/omnifaces/omnifaces/1.6.1-SNAPSHOT/ Se funziona per te, invierò una risposta con una spiegazione. – BalusC