Взаимозависимая ссылка между двумя моделями в Alfresco

Я закодировал два файла модели. Для некоторых ассоциаций обе модели имеют ссылку на тип в другом файле. Также я обновил тег зависимости (одна модель зависит от другой) компонентов в файле контекста (я знаю, что тег зависимости относится к уже созданному компоненту). Это выдает ошибку, когда я запускаю tomcat.

(1) Есть ли способ добиться вышеуказанного без ошибок?

(2) Если нет, поместите все типы в один файл модели, это то, что мне нужно сделать?

Вот объявление bean-компонента в abc-model-context.xml

<bean id="exampleOne.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
    <property name="models">
        <list>                
            <value>alfresco/extension/model/defModel.xml</value>    
            <value>alfresco/extension/model/abcModel.xml</value>
            <value>alfresco/extension/model/ghiModel.xml</value>
        </list>
    </property>
</bean>

Вот трассировка стека ошибки.

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'exampleOne.dictionaryBootstrap' defined in file [C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\extension\abc-model-context.xml]: Invocation of init method failed; nested exception is org.alfresco.service.cmr.dictionary.DictionaryException: 00150001 Could not import bootstrap model alfresco/extension/model/defModel.xml
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
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:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
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:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
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)

Причина: org.alfresco.service.cmr.dictionary.DictionaryException: 00150001 Не удалось импортировать модель начальной загрузки alfresco/extension/model/defModel.xml в org.alfresco.repo.dictionary.DictionaryBootstrap.onDictionaryInit(DictionaryBootstrap.java:158) в org.alfresco.repo.dictionary.DictionaryBootstrap.bootstrap(DictionaryBootstrap.java:105) в sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) в sun.reflect. DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:606) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544) в org. .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485) в org.springframework.beans.factory.support.Ab stractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) ... еще 27 Причина: org.alfresco.service.cmr.dictionary.DictionaryException: 00150000 Не удалось скомпилировать модель def:defModel в org.alfresco.repo.dictionary.CompiledModel.( CompiledModel.java:108) в org.alfresco.repo.dictionary.M2Model.compile(M2Model.java:163) в org.alfresco.repo.dictionary.DictionaryDAOImpl.putModelImpl(DictionaryDAOImpl.java:311) в org.alfresco.repo .dictionary.DictionaryDAOImpl.putModel(DictionaryDAOImpl.java:294) в org.alfresco.repo.dictionary.DictionaryBootstrap.onDictionaryInit(DictionaryBootstrap.java:154) ... еще 35 Вызвано: org.alfresco.service.namespace.NamespaceException: URI http://www.exampleOne.org/model/abc/1.0 не может быть импортирован поскольку он не определен (с префиксом abc в org.alfresco.repo.dictionary.CompiledModel.createLocalPrefixResolver(CompiledModel.java :206) на org.alfresco.repo.dictionary.CompiledModel.constructDefinitions(CompiledModel.java:130) на org.alfresco.repo.dictionary.CompiledModel.(CompiledModel.java:88) ... еще 39


person Nikhil A A    schedule 14.01.2014    source источник
comment
Я не знаю, какую ошибку вы видите, поэтому я не могу помочь.   -  person Jeff Potts    schedule 15.01.2014
comment
Я разместил объявление bean-компонента в файле контекста и трассировку стека ошибок из файла журнала.   -  person Nikhil A A    schedule 15.01.2014
comment
Вы говорите, что у вас есть 2 файла модели, но перечислите 3 в context.xml? У вас есть abc:assoc, который ссылается на def:type, и def:assoc, который ссылается на abc:type? Пожалуйста, уточните местоположение типа/ассоциации, используя префиксы пространств имен.   -  person Florian    schedule 15.01.2014


Ответы (2)


Я подозреваю, что ваш файл defModel.xml либо искажен, либо недействителен. Убедитесь, что когда вы открываете его в редакторе с поддержкой XML, он не жалуется. Вы также можете сравнить его с modelSchema.xsd, который находится в $TOMCAT_HOME/webapps/alfresco/WEB-INF/classes/alfresco/model.

person Jeff Potts    schedule 15.01.2014
comment
Я принял предложение, сделанное на форуме Alfresco, у вас не может быть двух моделей, которые циклически зависят друг от друга. Но вам также не нужно перемещать все типы в один файл модели. Достаточно переместить ассоциации в один файл, чтобы одна модель зависела от другой без циклического маршрута. Переместить ассоциацию должно быть легко — вам просто нужно обновить имя и целевой класс. Это работает для меня сейчас. Спасибо, Джефф. - person Nikhil A A; 16.01.2014

Посмотрите http://wiki.alfresco.com/wiki/Data_Dictionary_Guide#Model_Bootstrapping.

Компонент начальной загрузки словаря поддерживает свойство списка для моделей:

  <property name="models">
        <list>
            <value>my/customModel1.xml</value>
            <value>my/customModel2.xml</value>
        </list>
    </property>

Следовательно, самое простое решение — использовать только один bean-компонент с обеими моделями.

person Andreas Steffan    schedule 14.01.2014