Где Esapi.properties идут в проекте Java Google AppengineJAVA

Программисты JAVA общаются здесь
Anonymous
Где Esapi.properties идут в проекте Java Google Appengine

Сообщение Anonymous »

Мой проект работает на сервере разработки. Он работает в обоих следующих случаях:

[*] С каталогом .esapi в пути исходного пути, чтобы он заканчивался в Web-inf/Classes
с каталогом .esapi в корне либера, так что в итоге он не работает, когда он не работает, чтобы он не работал, чтобы он не работал, чтобы он не работал, чтобы он не работал, не работает, чтобы он не работал, чтобы он не работал, чтобы он не работал, чтобы он не работал, чтобы он не работал, чтобы он не работал, чтобы он не работал, когда он не работает, чтобы он использовал. из вышеупомянутых 2 стратегий). < /p>
Я получаю обычные сообщения о том, что я не смогу найти ESAPI. Файл свойств, когда я впервые пытаюсь использовать ESAPI после развертывания в Google. < /p>

Код: Выделить всё

Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Not found in 'org.owasp.esapi.resources' directory or file not readable: /base/data/home/ap
Not found in SystemResource Directory/resourceDirectory: .esapi/ESAPI.properties
Loading ESAPI.properties via file I/O failed. Exception was: java.io.FileNotFoundException
Attempting to load ESAPI.properties via the classpath.
ESAPI.properties could not be loaded by any means. Fail. Exception was: java.security.Acces
ESAPI, по-видимому, включает в себя изменения в поддержку Appengine http://code.google.com/p/owasp-esapi-ja ... api/refeer /> обновление < /strong>
Проблема заключается в том, что строка 603 org.owasp.esapi.reference.defaultsecurityConfiguration Classloader.getSystemClassloader (), который является незаконным в Google Appengine. Это вызывает исключение выше (извините, оно обрезано).
Есть три загрузки класса, загруженные в массив, прежде чем код попытается получить ресурсы. < /P>

Код: Выделить всё

    ClassLoader[] loaders = new ClassLoader[] {
Thread.currentThread().getContextClassLoader(),
ClassLoader.getSystemClassLoader(),
getClass().getClassLoader()
};
String[] classLoaderNames = {
"current thread context class loader",
"system class loader",
"class loader for DefaultSecurityConfiguration class"
};
< /code>
Я взломал свою собственную копию DefaultCertoConfiguration, где я удалил загрузчик SystemClass (и соответствующий класс загрузки) из метода LoadConfigurationffromClassPath. < /p>
    ClassLoader[] loaders = new ClassLoader[] {
Thread.currentThread().getContextClassLoader(),
getClass().getClassLoader()
};
String[] classLoaderNames = {
"current thread context class loader",
"class loader for DefaultSecurityConfiguration class"
};
По иронии судьбы, это потому, что они облегчали чтение/экстент (IMHO), пробираясь через загрузчики, что этот подход не удается. Я испытываю желание отправить патч с внутренним классом, чтобы отложить вызов GetSystemClassLoader (который вы не можете сделать в Appengine). < /P>
Интересно, что это работает, поскольку это возможно только потому, что банка ESAPI не запечатана. Может быть, я использую неправильный! Не идеально, но это не менее безопасно, чем другие 40 банок с открытым исходным кодом, которые я получаю от Maven!

Подробнее здесь: https://stackoverflow.com/questions/938 ... ne-project

Вернуться в «JAVA»