代码之家  ›  专栏  ›  技术社区  ›  rmart

Omnifaces 1.6.2和谷歌应用程序引擎

  •  2
  • rmart  · 技术社区  · 11 年前

    我目前使用的是Primefaces 4.0、Omnifaces 1.6.2、MyFaces 2.1.12和Google App Engine 1.8.3。

    部署应用程序时,我收到以下错误:

    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中的CDI功能/JNDI查找 启动时?

    我在Omnifaces 1.6.0中没有遇到这个问题。

    提前感谢,

    拉斐尔。

    1 回复  |  直到 11 年前
        1
  •  1
  •   BalusC    10 年前

    此问题已在中修复 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.
    }
    
    // ...