Не удается запустить электронную таблицу ZK на виртуальной машине, управляемой App Engine

Я написал очень простое приложение на основе примера здесь.

Когда я пытаюсь запустить его с автономной Jetty 9.2.10.v20150310 (той же версией, которую использует управляемая виртуальная машина GAE), она работает нормально (загрузка и сохранение). Когда я пытаюсь запустить его с помощью подключаемого модуля Google Cloud SDK или при развертывании его в App Engine, содержимое электронной таблицы загружается, но не удается загрузить CSS с исключением на сервере:

[INFO] SEVERE: Failed to load media, /view/z_obs/lGAQ1/f14/0/ss_lGAQ1_t0_sheet_0.css
[INFO] java.lang.NullPointerException
[INFO]  at org.zkoss.zss.ui.Spreadsheet.getMergeMatrixHelper(Spreadsheet.java:2755)
[INFO]  at org.zkoss.zss.ui.Spreadsheet.prepareBasicStyleSheet(Spreadsheet.java:4144)
[INFO]  at org.zkoss.zss.ui.Spreadsheet.getSheetDefaultRules0(Spreadsheet.java:4603)
[INFO]  at org.zkoss.zss.ui.Spreadsheet.getSheetDefaultRules(Spreadsheet.java:4597)
[INFO]  at org.zkoss.zss.ui.Spreadsheet.access$6200(Spreadsheet.java:219)
[INFO]  at org.zkoss.zss.ui.Spreadsheet$ExtraCtrl.getMedia(Spreadsheet.java:3041)
[INFO]  at org.zkoss.zk.au.http.AuDynaMediar.service(AuDynaMediar.java:128)

и затем пользовательский интерфейс слегка испорчен - выделение выбора ячейки находится не на правильной длине ячейки, и попытка напечатать или отформатировать содержимое ячеек не удалась. Я перепробовал все виды комбинаций - ZUL и JSP, устанавливая электронную таблицу с помощью атрибута src, атрибута bookProvider в JSP и из SelectorComposer, и иногда упомянутый выше CSS загружается нормально, и нет никаких исключений, или исключения появляются позже, но во всех случаях, когда я делаю изменения в ячейках, они немедленно возвращаются или после попытки набрать одну ячейку я не могу ничего напечатать. Из зарегистрированных исключений я понимаю, что текущая книга как-то равна нулю во время операций, например:

[INFO] java.lang.NullPointerException
[INFO]  at org.zkoss.zss.ui.au.in.FetchActiveRangeCommand.process(FetchActiveRangeCommand.java:57)

а также

[INFO] java.lang.NullPointerException
[INFO]  at org.zkoss.zss.ui.au.in.AbstractCommand.getSheetUuid(AbstractCommand.java:37)
[INFO]  at org.zkoss.zss.ui.au.in.CellFocusedCommand.process(CellFocusedCommand.java:55)

Я следовал приведенным здесь инструкциям, чтобы сделать приложение более дружественным к GAE, хотя, за исключением сериализации сеансов, я не думаю, что эти настройки необходимы в управляемой ВМ, и они не имеют значения.

Из того факта, что он работает на той же версии автономной Jetty, я думаю, можно предположить, что App Engine / Docker каким-то образом вызывает это. Я смог запустить его локально со старым GAE SDK, который использует модифицированный Jetty 6, но он не имитирует производственную среду. Я не могу развернуть в классическом GAE, потому что ZK Spreadsheet использует классы java.awt.*.

Я пытался использовать среду выполнения Java по умолчанию, а также пытался использовать настраиваемые среды выполнения, основанные на gcr.io/google_appengine/jetty9, gcr.io/google_appengine/java-compat и gcr.io/google_appengine/jetty9-compat - похоже, не иметь значение.

Я полагаю, что я мог бы попробовать сторонний образ Docker на основе автономного Jetty (или любого сервера приложений) просто для того, чтобы все заработало, но мне нужно получить доступ к хранилищу данных и хранилищу BLOB-объектов.

Любая помощь, связанная с этим, будет принята с благодарностью.

1 ответ

Я подал ошибку в проекте github, которая должна решить проблему: https://github.com/GoogleCloudPlatform/appengine-java-vm-runtime/issues/151

Другие вопросы по тегам