2013-10-17 2 views
2

현재 Primefaces 4.0, Omnifaces 1.6.2, MyFaces 2.1.12 및 Google App Engine 1.8.3을 사용하고 있습니다. 시작시 Omnifaces에 비활성화 CDI 기능/JNDI 조회에Omnifaces 1.6.2 및 Google App Engine

java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class. Please see the Google App Engine developer's guide for more details. 
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51) 
    at org.omnifaces.util.JNDI.lookup(JNDI.java:82) 
    at org.omnifaces.config.BeanManager.init(BeanManager.java:68) 
    at org.omnifaces.config.BeanManager.getReference(BeanManager.java:107) 
    at org.omnifaces.application.OmniApplication.createConverter(OmniApplication.java:86) 
    at org.primefaces.config.ConfigContainer.initConfig(ConfigContainer.java:69) 
    at org.primefaces.config.ConfigContainer.<init>(ConfigContainer.java:59) 

그것이 가능 :

나는 다음과 같은 오류가 응용 프로그램을 배포 할 때?

Omnifaces 1.6.0에서이 문제가 발생하지 않았습니다.

미리 감사드립니다.

라파엘.

+0

괴짜. 그것으로보고. – BalusC

+0

1.6.3 스냅 샷을 사용해보십시오. https://code.google.com/p/omnifaces/issues/detail?id=263 – BalusC

+0

감사합니다. BalusC. 1.6.3 스냅 샷을 시도했지만 예상대로 작동하고 있습니다. – rmart

답변

1

이 문제는 OmniFaces 1.6.3에서 수정되었습니다. JNDI (및 CDI)를 런타임 클래스 경로에서 사용할 수 없을 때 솔루션은 빠르 고 조용히 실패했습니다.

try { 
    Class.forName("javax.enterprise.inject.spi.BeanManager"); // Is CDI present? 
    Class.forName("javax.naming.InitialContext"); // Is JNDI present? (not on Google App Engine) 
} 
catch (Throwable ignore) { 
    return; // CDI or JNDI not supported on this environment. 
} 

// ...