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

Google App Engine背后的逻辑(如果有的话),不包括标准JDK 1.6api

  •  3
  • StaxMan  · 技术社区  · 17 年前

    看起来GAE选择了JDK 1.6类的一个子集,如下所示:

    Google App Engine JDK white list

    这是非常不幸的,因为大多数处理数据绑定、反射、类加载和注释的常用java库都会出现类链接错误。虽然有些遗漏可能是因为不推荐或遗留下来的东西,但也有一些不是。我特别关注的是流拉解析器(javax.xml.stream.*),它在长时间的延迟后才被添加到JDK1.6中(API与JDK1.4差不多在同一时间完成)。如果忽略这一点,就很难进行可伸缩的高性能xml处理。

    据我所知,问题是不仅类丢失,而且由于安全约束,它们甚至无法添加。

    更新 :

    速记:谢谢你的回答。值得一提的是,我真的不明白安全性与不包括javax.xml.stream有什么关系。 安全方面与许多其他事情相关(例如,我不需要线程,并且可以看到它们为什么不可用),所以这是可以理解的样板答案;只是不适用于此问题。

    Stax API只是一组接口和抽象的大声呼喊。但更重要的是,它与SAX、DOM和JAXP接口有着完全相同的分支——这些接口已经包括在内了!

    但看起来这个问题已经引起了谷歌开发人员的注意:

    discussion on whitelisting Stax API

    3 回复  |  直到 17 年前
        1
  •  7
  •   jsight TaherT    17 年前

    GAE是在一个托管环境中运行的,其中有不受信任的(并且可能是恶意的)客户端,这些客户端通常是免费访问的。

    在这种类型的环境中,安全性是一个非常重要的问题,而具有文件系统访问权限的api会受到非常严格的审查。我认为这就是为什么他们选择在他们允许的范围内相当保守地开始。

    不过,如果有更多的类在安全问题得到解决(并基于需求)时进入白名单,我一点也不奇怪。

    但我甚至不希望有线程工具可用。

        2
  •  2
  •   Tim Gilbert    17 年前

    这些东西是否被任意丢弃,这是非常值得怀疑的。GAE运行在一个极其安全敏感的环境中,对类库的内部审计很有可能发现一些Google不愿意承担的风险。

        3
  •  0
  •   Thilo    17 年前

    至于您的高性能流XML解析器,您可以尝试找到适当的库(jar文件)。除非它依赖于线程或文件访问(或黑名单API),否则它应该和JDK中的一样工作。

    有很多(相当复杂的) libraries that work on GAE .

    推荐文章