我想在Google appengine内部使用一个小型库;它的一个类(比如MyClass.writeToFile()
)的一个方法使用java.io.FileOutputStream
,它是被列入黑名单的类之一(好吧,不是white-listed)。
这是否意味着MyClass
将在类加载时失败,或者只是在我试图调用有问题的方法时失败?检查("FileOutputStream not allowed")是在什么时候完成的?当加载MyClass
文件并检测到它“引用/依赖”FileOutputStream时(我不知道这是否在MyClass
字节码中声明)?或者在第一次调用MyClass.writeToFile()
时试图加载FileOutputStream
?
此外,假设MyClass.writeToFile()
方法对于我的库不是必需的(但MyClass
是),是否有一些变通方法,或者是否应该重构该库(并构建两个不同的jars,一个是完全成熟的,另一个是沙箱友好的)?
发布于 2011-05-26 19:12:24
进行测试部署。如果我没记错的话,部署应该会失败。某个类使用的类是字节码的一部分,google正在验证这一点。
编辑:我在自相矛盾:)这个线程表明只有在加载FileOutputStream类时部署才会失败:GoogleAppEngine : possible to disable FileUpload?
Edit2:这表明检查/停止加载禁用类的是类加载器:The Sandbox
发布于 2011-09-21 06:21:34
类在第一次引用时是延迟加载的。如果您的代码从不尝试使用FileOutputStream,那么应该没有问题。
https://stackoverflow.com/questions/6143701
复制相似问题