JBoss 7.1, OmniFaces 1.6, Eclipse 케플러, CDI 1.0하나의 EAR에서 두 WAR로 OmniFaces 1.6을 사용하는 방법은 무엇입니까?
OmniFaces 1.5에서 OmniFaces 1.6으로 업데이트 할 때 새로운 Omnifaces 1.6에서 다음 상황을 발견했습니다. 필자는 OmniFaces 1.6의 새로운 흥미로운 CDI 기능과 관련이 있다고 가정합니다.
하나의 EAR 아카이브에 두 개의 JSF 기반 WAR 프로젝트가 있고 두 프로젝트 모두 종속성으로 OmniFaces가 있으며 둘 다 배치됩니다. 배포시 OmniFaces 1.6은 두 가지 WAR 프로젝트 중 /WEB-INF/lib
으로 끝납니다. JBoss가 시작될 때 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)
하나의 WAR 프로젝트를 제거하면 예외가 사라지고 EAR에서 다른 WAR 프로젝트를 사용할 수 있습니다.
하나의 프로젝트에서 OmniFaces 1.6을 사용할 수 있습니까? 하나의 EAR에 JBoss 7.1.1에 배포 할 수 있습니까?
이 문제는 이미 확인되었으며 현재 해결 중입니다. https://code.google.com/p/omnifaces/issues/detail?id=251 오늘 또는 내일에는 1.6.1이 필수 수정 사항. – BalusC
고맙습니다. 고쳐질 때까지 기다리고 있습니다! – Tony
나는 그것을 고쳤다. 1.6.1 스냅 샷을 시도해보십시오. https://oss.sonatype.org/content/repositories/snapshots/org/omnifaces/omnifaces/1.6.1-SNAPSHOT/ 문제가 해결되면 답변과 함께 설명을 게시합니다. – BalusC