2013-04-26 5 views
0

에 10.3.5.0 중복 키는 발생합니다Richfaces 4.3.1 웹 로직 다음과 같은 예외를 배포에 내가 웹 로직 10.3.5.0에 richfaces 4.3.1에 문제가 배포

java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! duplicate key: class javax.faces.validator.LongRangeValidator 
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:290) 
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181) 
Truncated. see log file for complete stacktrace 
Caused By: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! duplicate key: class javax.faces.validator.LongRangeValidator 
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:351) 
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:222) 
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
Truncated. see log file for complete stacktrace 
Caused By: java.lang.IllegalArgumentException: duplicate key: class javax.faces.validator.LongRangeValidator 
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:115) 
at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:72) 
at com.google.common.collect.ImmutableMap$Builder.fromEntryList(ImmutableMap.java:245) 
at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:231) 
at org.richfaces.javascript.ClientServiceConfigParser.parseConfig(ClientServiceConfigParser.java:53) 

나는 내부 모양을했다 ClientServiceConfigParser는 그것을 디버깅 나는 그것을로드가 문제의 방법은 배에서 richfaces - 구성 요소-UI-4.3.1.Final.jar

입니다 /META-INF/csv.xml 결국 발견 :

public static Map<Class<?>, LibraryFunction> parseConfig(String name) { 
    ClassLoader loader = Thread.currentThread().getContextClassLoader(); 
    if (null == loader) { 
     loader = ClientServiceConfigParser.class.getClassLoader(); 
    } 
    Builder<Class<?>, LibraryFunction> resultBuilder = ImmutableMap.builder(); 
    try { 
     Enumeration<URL> resources = loader.getResources(name); 
     while (resources.hasMoreElements()) { 
      URL url = (URL) resources.nextElement(); 
      resultBuilder.putAll(parse(loader, url)); 
     } 
    } catch (IOException e) { 
     return Collections.emptyMap(); 
    } 
    return resultBuilder.build(); 
} 

I Weblogic의 ChangeAwareClassLoader (weblogic.utils.classloaders.ChangeAwareClassLoader)와 관련이 있습니다. 내부 org.richfaces.javascript.ClientServiceConfigParser.parseConfig(String)이 실행될 때 ClassLoader loader = Thread.currentThread().getContextClassLoader();을 실행하면 ChangeAwareClassLoader이 반환되어 동일한 리소스의 복사본 2 개가 생성됩니다. 그러나 로더 (디버거 사용)가 null이되어 loader = ClientServiceConfigParser.class.getClassLoader();이 실행되면 다른 클래스 로더 인 weblogic.utils.classloaders.GenericClassLoader으로 끝납니다. 동일한 자원을 2 부 복사하지 않습니다. 그것이 내가 받는다는을 사용하고 있는데 richfaces이 방법을로드 한 가치가 무엇인지에 대한

:

<dependency> 
     <groupId>org.richfaces.ui</groupId> 
     <artifactId>richfaces-components-ui</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.richfaces.core</groupId> 
     <artifactId>richfaces-core-impl</artifactId> 
    </dependency> 

명 내가 그와 관련이없는 당신에게 말할 수있는, 내가 잘못 받는다는 depdencies를로드 한 제안하기 전에 : IllegalArgumentException: duplicate key (JSF)

디버거를 사용했기 때문에 loader.getResources(name);이 동일한 리소스를 반환했음을 확인했습니다.

zip:C:/bea/user_projects/domains/test/servers/AdminServer/tmp/_WL_user/_appsdir_umsWebUI-jee-ear-1.0-SNAPSHOT_ear/6m7brt/lib/richfaces-components-ui-4.3.1.Final.jar!/META-INF/csv.xml 
zip:C:/bea/user_projects/domains/test/servers/AdminServer/tmp/_WL_user/_appsdir_umsWebUI-jee-ear-1.0-SNAPSHOT_ear/6m7brt/lib/richfaces-components-ui-4.3.1.Final.jar!/META-INF/csv.xml 

또한 참조를 위해 나는 JSF 포럼을 시도하고 바로 웹 로직 포럼에 게시물을 넣어,하지만 난 여기에 더 좋은 반응을 얻을 수 있습니다 생각. 두 개의 다른 게시물 현재 위치 :

그래서 따로 풍부한 얼굴을 내 자신의 버전을 컴파일에서

https://forums.oracle.com/forums/thread.jspa?threadID=2529414 https://community.jboss.org/thread/224100

, 사람이 해결 방법의 어떤 아이디어가 있습니까? ChangeAwareClassLoader을 비활성화하는 방법은 무엇일까요? 해당 클래스 로더를 사용하지 않도록 설정할 때 Google 검색 결과에 아무런 영향이 없습니다.

답변

0

좋아, 결국 4.3.1을 얻을 수 있었다. 내가 Maven에서 Skinny Wars를 사용했기 때문에 ChangeAwareClassLoader에서 예상치 못한 부작용이 나타났습니다. 스키니 워즈 (Skinny Wars)를 사용하지 않고이 문제를 시도했다고 생각했지만, 그렇지 않은 것 같습니다.