BeCPG и Alvex

Столкнулся с их несовместимостью, отдельно прекрастно работают. Но если пробывать поставить вместе то альфреска отказывается запускаться. Кто то сталкивался с этим? Есть ли решение?
Ниже привожу кусок лога.

[collapse] 
[m17:34 15/05/14 [becpg-core] INFO  [admin]  Connected to database PostgreSQL version 9.2.4
 17:34 15/05/14 [becpg-core] ERROR [ContextLoader]  Context initialization failed
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schema.upgrade.core' defined in file [/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/dbscripts/db-schema-context.xml]: Cannot resolve reference to bean 'patch.db-V2.2-ACL-From-2.1-A' while setting bean property 'preUpdateScriptPatches' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'patch.db-V2.2-ACL-From-2.1-A' defined in file [/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/patch/patch-services-context.xml]: Cannot resolve reference to bean 'TenantAdminService' while setting bean property 'tenantAdminService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'TenantAdminService' defined in class path resource [alfresco/public-services-context.xml]: Cannot resolve reference to bean 'tenantAdminService' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tenantAdminService' defined in file [/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/mt/mt-admin-context.xml]: Cannot resolve reference to bean 'WorkflowService' while setting bean property 'workflowService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WorkflowService': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WorkflowService_security' defined in URL [jar:file:/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/lib/alvex-advanced-workflows-ce-repo-1.17.jar!/alfresco/extension/alvex-advanced-workflows-context.xml]: Cannot resolve reference to bean 'alvexWorkflowHelper' while setting bean property 'workflowHelper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alvexWorkflowHelper' defined in URL [jar:file:/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/lib/alvex-advanced-workflows-ce-repo-1.17.jar!/alfresco/extension/alvex-advanced-workflows-context.xml]: Cannot resolve reference to bean 'alvexOrgchartService' while setting bean property 'orgchartService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alvexOrgchartService' defined in URL [jar:file:/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/lib/alvex-orgchart-ce-repo-1.19.jar!/alfresco/extension/alvex-orgchart-context.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanInitializationException: Property 'extension' is required for bean 'alvexOrgchartService'
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.alfresco.web.app.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:63)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'patch.db-V2.2-ACL-From-2.1-A' defined in file [/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/patch/patch-services-context.xml]: Cannot resolve reference to bean 'TenantAdminService' while setting bean property 'tenantAdminService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'TenantAdminService' defined in class path resource [alfresco/public-services-context.xml]: Cannot resolve reference to bean 'tenantAdminService' while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tenantAdminService' defined in file [/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/mt/mt-admin-context.xml]: Cannot resolve reference to bean 'WorkflowService' while setting bean property 'workflowService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WorkflowService': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WorkflowService_security' defined in URL [jar:file:/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/lib/alvex-advanced-workflows-ce-repo-1.17.jar!/alfresco/extension/alvex-advanced-workflows-context.xml]: Cannot resolve reference to bean 'alvexWorkflowHelper' while setting bean property 'workflowHelper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alvexWorkflowHelper' defined in URL [jar:file:/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/lib/alvex-advanced-workflows-ce-repo-1.17.jar!/alfresco/extension/alvex-advanced-workflows-context.xml]: Cannot resolve reference to bean 'alvexOrgchartService' while setting bean property 'orgchartService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'alvexOrgchartService' defined in URL [jar:file:/opt/alfresco-alfa/tomcat/webapps/alfresco/WEB-INF/lib/alvex-orgchart-ce-repo-1.19.jar!/alfresco/extension/alvex-orgchart-context.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanInitializationException: Property 'extension' is required for bean 'alvexOrgchartService'
[/collapse]
Прикрепленные файлыРазмер
catalina.zip342.71 кб

Комментарии

avasyukov аватар
Прелесть какая. Надо посмотреть и разобраться. Какие версии Alfresco и Alvex? Что именно из модулей BeCPG и каких версий?
Alfresco 4.2.f
Alvex 2014.04 Community
BeCPG Project Manager  1.6.0 (от 07.05.2014, на данный момент последняя версия)

BeCPG Project Manager  1.6.0 (от 07.04.2014)
Немного ошибся)
Я вроде это только что починил. Но вообще как-то очень странно этот beCPG устроен. Почему их amp-ы ставятся только с ключом '-force' - загадка.
у меня вроде и без force ставились.
Спасибо за исправление

Попробывал ночную сборку,  надеясь что там уже есть фикс. Фреска запустилась (но если стоит предыдущая версия BeCPG то нехочет запускаться) но при попытки октрытия окна доступных бизнес процессов, или если в инструментах администратора нажать на опции alvex (например лицензии или обновление) то получаю ошибку 500.

Вот текст при открытия окна бизнес процессов
  04270024 Failed to execute script 'classpath*:alfresco/web-extension/site-webscripts/workflow-shortcut-dashlet/start-workflow.get.js': 04270023 TypeError: Cannot parse XML: Scanner State 24 not Recognized (jar:file:/opt/alfresco-4.2.f/tomcat/webapps/share/WEB-INF/lib/alvex-workflow-shortcut-dashlet-ee-share-1.8.jar!/alfresco/web-extension/site-webscripts/workflow-shortcut-dashlet/start-workflow.get.js#102(eval)#1)
Aviriel аватар
 С большой вероятностью Вы скопировали новые JAR-ники в tomcat/webapps/*/WEB-INF/lib/, но не удалили оттуда старые..
И еще: сегодня вышел релиз 2014.05.
Ранее там небыло alvex. Спасибо за информацию, попробую на новом релизе
Попробывал свежий релиз, 500я ошибка исчезла, вроде все работает. только нельзя запустить бизнес процессы. Окно с доступными процессами пустое. Вернее оно даже не открывается. Ниже кусок лога.

[0;31m16:11 27/05/14 [becpg-core] ERROR [AbstractRuntime]  Exception from executeScript - redirecting to status template error: 04270006 Wrapped Exception (with status template): 04270012 Failed to execute script 'classpath*:alfresco/templates/webscripts/list-definitions/list-definitions.get.js': Namespace prefix alvexbcpr is not mapped to a namespace URI
 org.springframework.extensions.webscripts.WebScriptException: 04270006 Wrapped Exception (with status template): 04270012 Failed to execute script 'classpath*:alfresco/templates/webscripts/list-definitions/list-definitions.get.js': Namespace prefix alvexbcpr is not mapped to a namespace URI

avasyukov аватар
Выглядит так, как будто куда-то пропал alvex-board-collaboration-ee-repo-${VERSION}.jar
Переставил все с 0, сначала залил BeCPG потом альвекс, все норм было. Потом добавил свои кастомные бизнес процессы и списки данных (создавались не под альвекс и до него). И все сломалось. Окошко с выбором процессов появляется но если попробывать начать процесс, то выдает ошибку запуска {0}.

Вопрос первый: альвекс дружит с кастомными бизнес процессами и списками данных?

Потом я попробывал удалить свои кастомные процессы, система начала ругаться что в namespace нету префикса из моего процесса. Попробывал удалить alvex (чтобы проверить работоспособность, ставил jar файлы), система начала ругаться уже на namespace alvexwfat.

Вопрос второй: Альвекс(jar файлы) при запуске кудато рапаковываються? чтобы очистить систему от альвекса мало удалить jar файлы?

P.S alvex-board-collaboration-ee-repo на месте.
Заметил что ошибка "Процесс не может быть запущен {0}" появляется даже если нет моих кастомных процессов (чистая Alfresco 4.2.f + BeCPG Project Manager + Alvex 2014.05)

в логах ошибка:
2014-05-30 12:24:37,468  ERROR [freemarker.runtime] [http-bio-8080-exec-3] Template processing error: "on line 20, column 161 in org/alfresco/components/form/controls/textfield.ftl formLib.renderLocaleImage not found."

Сами логи  в вложении.

Все файлы alvex находятся в нужных местах, отсутвующих нет.

Прикрепленные файлыРазмер
catalina.zip 8.99 кб
avasyukov аватар
По поводу выходных таки добрался описать все результаты разбирательств с этим багом. Сначала по вопросам, потом итоги разбора причин.

> Вопрос первый: альвекс дружит с кастомными
> бизнес процессами и списками данных?

Да. Поставьтесь без beCPG, залейте свои процессы и модели - все будет работать.

> Вопрос второй: Альвекс(jar файлы) при запуске
> кудато рапаковываються? чтобы очистить систему
> от альвекса мало удалить jar файлы?

Не распаковывается. Но если у вас есть ноды в репозитории, которые используют модели Alvex, то модели нельзя просто так удалять. Нужно сначала удалить ноды, только потом модели (ака jar-ники). Пример - запустили бизнес-процесс (может даже завершили штатно), в репе появились ноды (задачи процесса), которые используют модель этого процесса. Чтобы удалить модель, нужно сначала удалить до конца процессы, в т.ч. завершенные.

Это никак не специфично для Alvex. Попробуйте сделать так на собственных процессах - получите тот же эффект.

> Заметил что ошибка "Процесс не может быть запущен {0}"
> появляется даже если нет моих кастомных процессов (чистая
> Alfresco 4.2.f + BeCPG Project Manager + Alvex 2014.05)

Да, на таком чистом инстале проблема проявляется.

> > Но вообще как-то очень странно этот beCPG устроен.
> > Почему их amp-ы ставятся только с ключом '-force' - загадка.
> у меня вроде и без force ставились.

Оно ставится именно что только с -force. Возможно, Вы ставили скриптом установки от beCPG. Но он внутри себя молча вызывает с -force, причем подавляя вывод предупреждений.


Теперь самое интересное - что же происходит, и что с этим делать. Причина проблемы такая:

1. beCPG перегружает штатное API Alfresco для получения любых форм, в том числе форм задач процесса. Alvex тоже это делает. Почему так - потому что интерфейсов под вставку своего кода Alfresco в этом месте не предусмотрела, остается только замена на свою реализацию. При этом Alvex использует штатный механизм перегрузки, а beCPG при установке просто затирает исходную реализацию, складывая на ее место свою (да, именно для таких манипуляций и нужен ключ -force при установке).

2. В итоге используется реализация имени Alvex. Просто потому что штатный механизм перегрузки сделан именно для того, чтобы заменить реализацию Alfresco на свою. И если на месте реализации имени Alfresco де-факто лежит реализация имени beCPG - это ничего не меняет, она будет перегружена реализацией имени Alvex.

3. beCPG при установке затирает не только API получения форм, но и контролы форм (опять привет -force). Причем буквально все контролы и довольно жестоко - банальный textfield начинает зависеть от того, что отдают API имени beCPG. Именно на этом моменте все падает - потому что реализация имени beCPG заменена на реализацию имени Alvex, а перегруженные контролы никак не проверяют, что нестандартные функции имени beCPG доступны.


Как с этим жить:

1. Самый правильный сценарий:
Заставить Alfresco предусмотреть нужные интерфейсы для расширения API.
Заставить нас и beCPG перейти на них вместо перегрузки. (Мы готовы, не вопрос.)

2. Менее правильный сценарий:
Объяснить beCPG, что так жить нельзя. Заставить их (а) не затирать реализации, а перегружать их, (б) отвязать перегруженные контролы от нестандартных API. (Alvex сделан именно так - если будет использоваться реализация beCPG, у нас отвалятся некоторые красивости, ради которых сделана наша реализация, но вообще-то работать все будет.)

3. Самый быстрый сценарий:
С помощью напильника и колючей проволоки сделать свою третью реализацию API, склеив в ней все функции beCPG и Alvex. С точки зрения правильности - плохая идея, зато никого ни в чем убеждать не надо, можно просто сделать. Смотреть надо в сторону alfresco/site-webscripts/com/alvexcore/components/form/form.lib.ftl из состава Alvex и alfresco/site-webscripts/org/alfresco/components/form/form.lib.ftl из состава beCPG.
Спасибо за ответ, теперь все стало понятно =)