Quería utilizar, dentro de Google appengine, una pequeña biblioteca; uno de los métodos de una de sus clases (digamos MyClass.writeToFile()
) usa java.io.FileOutputStream
, que está entre las clases incluidas en la lista negra (bueno, no en white-listed).Si no se encuentra una clase de Java referenciada, o en la lista negra, ¿cuándo se detecta esto?
¿Esto implica que MyClass
fallará en el momento de la carga de la clase o solo cuando (si) intento invocar el método ofensivo? ¿En qué momento se realiza esa comprobación ("FileOutputStream no permitido")? Al cargar el archivo MyClass
y detectar que "se refiere a/depende de" FileOutputStream (no sé si esto está declarado en el bytecode MyClass
)? ¿O al intentar cargar FileOutputStream
, al invocar MyClass.writeToFile()
por primera vez?
Además, en el supuesto de que el método MyClass.writeToFile()
no es esencial para mi biblioteca (pero MyClass
es), ¿hay alguna solución, o sería mejor refactorizar la biblioteca (y construir, por ejemplo dos frascos diferentes, una completa sandbox- hecha y derecha y otra amistoso) ?
¿Por qué se permite 'java.io.FileInputStream' pero no' java.io.FileOutputStream'? – JAB
@JAB: Porque Google AE tolera que se lea pero no se escriba. Suena razonable. – leonbloy