2015-10-16 3 views
0

Я пытаюсь изменить постоянство страницы в нашем приложении XPages, намереваясь перейти от «Хранить страницы в памяти» до «Сохранять только текущую страницу в памяти». И, конечно, я получаю ошибки во время выполнения, говорящие мне, что XPages не может сериализовать функцию JavaScript. Но какая функция? Трассировка стека показывает только стандартный материал ошибки Java, но ничего о том, какая переменная или функция не может быть сериализована?Невозможно сериализовать функцию JavaScript

У меня были подобные проблемы раньше, и это всегда стоило мне много времени, чтобы глубоко разобраться в коде и решить проблему. Это занимает много времени ... и у меня действительно было это к настоящему времени.

Есть ли умный способ узнать, какая функция не может быть сериализована ??

UPDATE

Что OpenLog Logger придумывает:

Client Version 
Release 9.0.1FP3 
January 12, 2015 
Database aalto803.nsf 
Agent /aASK.xsp 
Method class java.lang.StackTraceElement.writeValue 
Error Num - 
Error Line 364 
Error Msg Impossible de sérialiser une fonction JavaScript 
Language Java 

Stack Trace 
java.io.IOException: Impossible de sérialiser une fonction JavaScript 
at com.ibm.jscript.types.FBSValue.writeValue(FBSValue.java:364) 
at com.ibm.jscript.types.FBSDefaultObject.writeExternal(FBSDefaultObject.java:746) 
at com.ibm.jscript.std.ObjectObject.writeExternal(ObjectObject.java:106) 
at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1462) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 
at java.util.HashMap.writeObject(HashMap.java:942) 
at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
at java.lang.reflect.Method.invoke(Method.java:611) 
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1020) 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179) 
at java.io.ObjectOutputStream.writeUnshared(ObjectOutputStream.java:413) 
at com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:438) 
at com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
at com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
at com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
at com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectOutputStream.writeObjectEx(AbstractSerializingStateManager.java:417) 
at com.ibm.xsp.application.AbstractSerializingStateManager.saveSerializedView(AbstractSerializingStateManager.java:294) 
at com.ibm.xsp.application.AbstractSerializingStateManager.doSaveSerializedView(AbstractSerializingStateManager.java:269) 
at com.ibm.xsp.application.FileStateManager.doSaveSerializedView(FileStateManager.java:290) 
at com.ibm.xsp.application.FileStateManager.doSaveSerializedView(FileStateManager.java:270) 
at com.ibm.xsp.application.AbstractStateManager.saveSerializedView(AbstractStateManager.java:114) 
at com.ibm.xsp.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:152) 
at com.ibm.xsp.application.ViewHandlerExImpl._saveViewState(ViewHandlerExImpl.java:455) 
at com.ibm.xsp.application.ViewHandlerExImpl.saveViewState(ViewHandlerExImpl.java:449) 
at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:324) 
at com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:336) 
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103) 
+1

Java в Domino XPages. –

ответ

0

XPages OpenLog Logger не только ловит пойманные исключения (это звучит, как это один из них), но также улавливает, какой компонент вызвал проблема. В приложении требуется исправление XPage (иначе после возникновения ошибки отсутствует фаза Render Response, из которой XPages OpenLog Logger извлекает детали). Это может помочь вам отследить его.

В противном случае проверьте, какие функции вы храните в viewScope и т. Д. Это может помочь вам сузить вещи. SSJS на самом деле не предназначен для объектно-ориентированного программирования, и я думаю, что проблемы возникают при хранении функций в области видимости.

0

Ответ на ваш вопрос заключается не столько в том, какая функция не может быть сериализована, а в том, что NONE ваших функций может быть сериализована. ИЛИ, если вы хотите получить техническую технику, никто не может надежно сохраняться. SSJS не предназначен для сериализации. В этом блоге здесь: http://xomino.com/2014/03/26/why-learning-javascript-is-more-critical-to-xpage-developers-than-java/ есть хорошая дискуссия в комментариях о том, почему и где сериализация токсична, в частности, с SSJS (вы можете отвлечься от фактического обсуждения вокруг сообщения в блоге java vs JavaScript - просто сосредоточьтесь на битах относительно сериализация).

+0

Я знаю, что они не могут быть сериализованы. Просто я должен найти педераста в нескольких тысячах строк кода. Некоторые были разработаны более 3 лет назад, и просеивание их вручную не является одним из моих любимых игр. Есть ли метод Serializable или так? Это должно быть что-то в переменной viewScope, но какой? След говорит, что он сериализует HashMap, насколько я понимаю, но разве нет ничего, что говорит мне, какая ценность «неправильная»? –