2014-08-19 2 views
0

На XPage я запускаю следующий код:HTTP JVM: CLFAD0134E при выполнении метода GetDocumentByKey

function setPersonInfoCommon(x) { 
    //print("test printing to console value: " + x) 
    var serv = getPreferenceField("tx_server"); 
//e.g. "Development1"; 
    var dbname = getPreferenceField("tx_loc_personal_common"); 
//e.g. "CustomerX\\Personnel.nsf" 
    var db:NotesDatabase = session.getDatabase(serv,dbname);  
    if (db == null) { 
     requestScope.status = "Database not found.";  
     return; 
    } 
    var vw:NotesView = db.getView("LookUpUsersUNID"); 
    if (vw == null) { 
     requestScope.status = "View not found.";  
     return; 
    } 
    var doc:NotesDocument = vw.getDocumentByKey(x); 
    if (doc == null) { 
     requestScope.status = "Document not found."; 
     return; 
    } 
    else{ 
     requestScope.status = "Document created:" + getCreated(); 
    } 
} 

Это замораживает мой XPage и в журнале я вижу следующие обозначения: 2014-08-19 12:46 : 11 HTTP JVM: com.ibm.xsp.webapp.FacesServlet $ ExtendedServletException: com.ibm.xsp.FacesExceptionEx: java.io.NotSerializableException: lotus.domino.local.DateTime 2014-08-19 12:46:11 HTTP JVM: CLFAD0134E: запрос XPage для обработки исключений. Для получения более подробной информации обратитесь к адресу error-log-0.xml, расположенному в E:/Domino/data/domino/workspace/logs

XPage находится в другом NSF, чем тот, который я выполняю методом getDocumentByKey. Я не вижу никаких признаков того, что база данных (db) или view (vw) не может быть найдена. Если я проверю его, выведя путь к файлу или что-то, я получу верные значения.

Я протестировал, чтобы запустить код из NSF. Я выполняю метод getDocumentByKey, а затем код работает нормально.

В чем может быть причина?

Я зашел через Интернет и получил соответствующие права.

+0

См. Этот ответ для облегчения доступа к файлам журнала: http://stackoverflow.com/a/13271833/785061 –

+0

Возможно, вы захотите снова просмотреть функцию getPreferenceField (не связанную с ошибкой). Сохраняйте настройки конфигурации в области, доступ к базе данных «дорогой», и этого можно избежать. – stwissel

+0

Отсутствие всех вызовов .recycle() – stwissel

ответ

8

Пожалуйста, всегда смотрите более подробные журналы в указанном месте перед отправкой вопроса. Эти сообщения дают гораздо больше информации, которая поможет идентифицировать код, вызывающий проблему, и, как правило, более подробное объяснение.

В этом конкретном случае сообщение в журналах консоли включает в себя «java.io.NotSerializableException: lotus.domino.local.DateTime». Предполагая, что это относится к строке requestScope.status = "Document created:" + getCreated(); (подробные журналы подтвердят) и что getCreated() фактически является doc.getCreated(), который возвращает объект NotesDateTime.

Объекты NotesDateTime и любые другие объекты Domino не могут быть помещены в какую-либо облачную переменную (существуют различные блоги, объясняющие, что объекты Domino не сериализуемы).

Если вы хотите поместить дату/время в область действия, вы можете получить эквивалент даты Java, используя NotesDateTime.toJavaDate(), поэтому doc.getCreated().toJavaDate().

Смежные вопросы