Orbeon выдает StackOverFlowError при попытке доступа к базе данных

У меня есть PE-версия Orbeon 3.9, работающая на Tomcat 6.0, установленная на Debian 6.0.2 с MySQL 5.1.

Я могу запустить Orbeon и получить доступ/использовать приложения, развернутые в ресурсах/приложениях, но доступ к конструктору форм new-form-creation (../orbeon/fr/orbeon/builder/new) приводит к тому, что следующая ошибка печатается в журнале (и страница не загружается, не позволяя создавать формы):


2011-10-04 14:11:09,274 INFO  OrbeonSessionListener  - Session Listener - Session created.
2011-10-04 14:11:10,631 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-uuid"}
2011-10-04 14:11:10,631 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-save-locally-file-name"}
2011-10-04 14:11:11,838 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-uuid"}
2011-10-04 14:11:11,838 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-save-locally-file-name"}
2011-10-04 14:12:00,649 ERROR ProcessorService  - Exception with no location data
java.lang.StackOverflowError
        at java.lang.Exception.<init>(Exception.java:41)
        at java.lang.RuntimeException.<init>(RuntimeException.java:43)
        at org.orbeon.oxf.common.OXFException.<init>(OXFException.java:203)
        at org.orbeon.oxf.common.ValidationException.<init>(ValidationException.java:105)
        at org.orbeon.oxf.xforms.xbl.XBLContainer.performDefaultAction(XBLContainer.java:809)
        at org.orbeon.oxf.xforms.XFormsContainingDocument.performDefaultAction(XFormsContainingDocument.java:1004)
        at org.orbeon.oxf.xforms.xbl.XBLContainer.dispatchEvent(XBLContainer.java:1035)
        at org.orbeon.oxf.xforms.XFormsContainingDocument.dispatchEvent(XFormsContainingDocument.java:880)
        at org.orbeon.oxf.xforms.XFormsContextStack.pushBinding(XFormsContextStack.java:562)
        at org.orbeon.oxf.xforms.XFormsContextStack.pushBinding(XFormsContextStack.java:247)
        at org.orbeon.oxf.xforms.ControlTree$CreateControlsListener.pushBinding(ControlTree.java:824)
.....

Мой файл контекста 'orbeon.xml':


<Context path="/orbeon" docBase="/usr/local/orbeon-3.9" debug="0" reloadable="true">
    <Resource name="jdbc/orbeonmysql" auth="Container" type="javax.sql.DataSource" initialSize="3" maxActive="10" maxIdle="20" maxWait="30000" driverClassName="com.mysql.jdbc.Driver" poolPreparedStatements="true" username="orbeon" password="xxx" url="jdbc:mysql://localhost:3306/orbeon?useUnicode=true&amp;characterEncoding=UTF8"/>
</Context>

Конфигурация базы данных в properties-local.xml:


<property as="xs:anyURI" name="oxf.fr.persistence.service.mysql.datasource" value="orbeonmysql"/>
<property as="xs:anyURI" name="oxf.fr.persistence.app.uri.*.*.*" value="/fr/service/mysql"/>

Я установил тот же пакет Orbeon PE на Windows 7 с tomcat6 и mysql 5.1 с теми же настройками, и он работает нормально.

На сервере Debian у меня установлен Confluence на том же коте, который подключается к тому же серверу базы данных, который также отлично работает.

Я пробовал использовать 2 версии соединителей MySQL: mysql-connector-java-5.0.8 mysql-connector-java-5.1.17.

Я потерялся здесь, так как журнал ошибок не сообщает мне ничего, с чем я мог бы работать, и я не могу найти какие-либо похожие проблемы, чтобы получить подсказки.


// ОБНОВИТЬ


Пробовал как -Xss16m, так и -Xss32m. Страница больше не будет выдавать ошибку StackOverFlowError, но и никогда не перестанет загружаться. Я также удалил экземпляр Confluence из Tomcat, чтобы убедиться, что проблема не в нем.

Я вставил дамп базы данных и заметил, что на странице построителя/сводки будут отображаться формы в файле db. Я могу получить доступ к итоговым страницам опубликованных форм. Также можно заполнить новые данные опубликованными формами или отредактировать существующие. Единственное, что не работает, это редактирование/новые страницы конструктора.

Я также попытался добавить «ulimit -s 2048» в запуск tomcat, но безрезультатно.

Tomcat JAVA_OPTS в конфигурации tomcat выглядит следующим образом:


ulimit -s 2048
export JAVA_OPTS="-Djava.awt.headless=true -Xmx1024M -Xms256m -XX:PermSize=256m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Xss32m"
export CATALINA_OPTS="$CATALINA_OPTS $JAVA_OPTS"

Последние напечатанные записи журнала:


2011-10-06 08:41:09,051 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-uuid"}
2011-10-06 08:41:09,051 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-save-locally-file-name"}
2011-10-06 08:41:10,289 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-uuid"}
2011-10-06 08:41:10,289 WARN  XFormsServer  - xxforms:instance() - instance not found {instance id: "fr-save-locally-file-name"}
// END OF LOG, no new rows after 10mins of waiting

person Ville Myrskyneva    schedule 04.10.2011    source источник
comment
Кажется, у вас было выброшено ValidationException (это общее исключение Orbeon), но затем, когда это исключение выброшено, вы получаете StackOverflowError. Итак, мне интересно, связано ли это с тем, что размер вашего стека недостаточно велик в Debian. Я бы попытался увеличить размер стека Java, добавив -Xss16m к команде java, которая запускает ваш Tomcat. Если вы по-прежнему получаете ту же ошибку, можете ли вы попробовать также с большим значением (скажем, 32 м вместо 16 м)? Вы сообщите нам, достаточно ли этого, чтобы избавиться от этого StackOverflowError.   -  person avernet    schedule 05.10.2011
comment
Пробовал как -Xss16m, так и -Xss32m. Страница больше не будет выдавать ошибку StackOverFlowError, но и никогда не перестанет загружаться.   -  person Ville Myrskyneva    schedule 06.10.2011
comment
Итак, не могли бы вы попробовать еще раз без -Xss, захватив полученную полную трассировку стека и вставив ее куда-нибудь? (Вставка его в вопрос может быть нецелесообразна, поэтому вместо этого вы можете опубликовать его на gist.github.com. и дайте сюда ссылку)   -  person avernet    schedule 08.10.2011
comment
Удалил -Xss, перезапустил tomcat и перешел на новую страницу. Вот ссылка github на полную трассировку стека: gist.github.com/1284074   -  person Ville Myrskyneva    schedule 13.10.2011
comment
Спасибо за полное исключение. Это очень интересно; Я никогда не видел, чтобы это происходило в Form Builder. Похоже, существует бесконечный цикл, в котором обновление вызывает выполнение действия, которое что-то меняет, требуя еще одного обновления. Я предполагаю, что на каждом шаге выбрасывается XFormsBindingExceptionEvent, и мы можем просто видеть, что выбрасывается последний, поскольку StackOverflowError происходит именно тогда, когда он выбрасывается. Не могли бы вы попробовать (если вы еще не пробовали), чтобы увидеть, происходит ли это, если у вас нет этих свойств в ваших properties-local.xml, инструктирующих Orbeon Forms использовать MySQL?   -  person avernet    schedule 17.10.2011
comment
Вилле, мне любопытно: у тебя была возможность попробовать с eXist?   -  person avernet    schedule 25.10.2011
comment
Прошу прощения за то, что некоторое время не отвечал. В последнее время я работал с другими проблемами, и с тех пор у меня не было возможности изучить это. У нас есть еще один экземпляр Orbeon, работающий на рабочем сервере без проблем (рабочий сервер — это физический сервер, проблемный Orbeon работает на виртуальном сервере). У них одинаковые наборы настроек. Я немного подозреваю, что виртуальный сервер может иметь какой-то эффект. Иногда в будущем я постараюсь больше узнать об этом, но в настоящее время у меня есть эта проблема с довольно низким приоритетом, поскольку у нас работает рабочий сервер.   -  person Ville Myrskyneva    schedule 07.11.2011
comment
Вилле, спасибо за обновление, и, конечно же, не стесняйтесь следить за этим здесь в будущем, когда у вас будет больше информации, которая может помочь нам разобраться в этом.   -  person avernet    schedule 07.11.2011
comment
Привет, @avernet, я не могу настроить базу данных Postgres для форм Orbeon. Пожалуйста, проверьте ссылку stackoverflow.com/questions/31201679/< /а>   -  person Ramesh S    schedule 03.07.2015