Java GoogleAppEngine上不支持NetworkInterface?

Java GoogleAppEngine上不支持NetworkInterface?,java,mongodb,google-app-engine,bson,network-interface,Java,Mongodb,Google App Engine,Bson,Network Interface,在我看来,GoogleAppEngine上不支持Javas NetworkInterface——考虑到GAE上对Java.net的支持有限,我想这并不奇怪。但是,我确实希望使用BSON Java库将字符串转换为BSON对象ObjectID。问题在于,它在生成ObjectId时使用了以下内容: StringBuilder sb = new StringBuilder(); Enumeration<NetworkInterface> e = NetworkInterface.getNet

在我看来,GoogleAppEngine上不支持Javas NetworkInterface——考虑到GAE上对Java.net的支持有限,我想这并不奇怪。但是,我确实希望使用BSON Java库将字符串转换为BSON对象ObjectID。问题在于,它在生成ObjectId时使用了以下内容:

StringBuilder sb = new StringBuilder();
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while ( e.hasMoreElements() ){
    NetworkInterface ni = e.nextElement();
    sb.append( ni.toString() );
}
machinePiece = sb.toString().hashCode() << 16;
这在使用GoogleAppEngine时显然是有问题的。是否有人知道GAE支持的NetworkInterface的替代方案,我可以在上述情况下使用

这真让我毛骨悚然

以下文件中的第356行和第362行之间出现了违规代码,以供参考:

如果您的应用程序必须使用mongoDB,我建议您切换到

托管VM将允许您完全访问所有Java


如果您还处于开发的早期,我建议您看看是否可以为后端存储数据。使用GAE这样的平台最大的省时方法是自动扩展和自动维护应用程序堆栈

这取决于你的目标是什么-如果你想创建一个基于本地虚拟机的hashcode,就像这段代码所做的那样,你可以使用com.google.appengine.api.utils.SystemProperty.instanceReplicaId或com.google.appengine.api.modules.ModulesService.getCurrentInstanceId并获取他们的hashcode


如果您确实希望将哈希代码与可用网络接口的唯一组合相关联,则需要使用另一个平台。

作为一种解决方法,您可以尝试将UUID实例用于唯一标识符,而不是ObjectId。否则,请在上报告问题。