2014-01-14 175 views
0

我已經編碼了兩個模型文件。對於一些關聯,這兩個模型都引用另一個文件中的類型。我還更新了上下文文件中beans的depends-on標籤(一個模型依賴於其他bean)(我知道depends-on標籤指向已經創建的bean)。當我在tomcat中運行時發生錯誤。Alfresco中兩個模型之間的相互依賴的參考

(1)有沒有辦法實現上述無誤?

(2)如果沒有,請將所有類型放在一個模型文件中,這是我需要做的嗎?

這裏是ABC模型-context.xml中的Bean聲明

<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.alfresco.repo.dictionary.DictionaryBootstrap.onDictionaryInit 00150001無法導入引導模式露天/推廣/模型/ defModel.xml :

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 (DictionaryBootstrap.java:158) 在org.alfresco.repo.dictionary.DictionaryBootstrap.bootstrap(DictionaryBootstrap.java:105) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.r eflect.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.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) ...... 27多個 造成的:org.alfresco.service.cmr.dictionary.DictionaryException: 00150000無法編譯模型def:defModel at org.alfresco.repo.dictionary.CompiledModel。(CompiledModel.java:108) at org.alfresco.repo.dictionary.M2Model.compile(M2Model.java:163) at org.alfresco.repo.dictionary.DictionaryDAOImpl.putModelImpl(DictionaryDAOImpl.java:311) at org.alfresco.repo.dictionary.DictionaryDAOImpl.putModel(DictionaryDAOImpl.java:294) at 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 at org.alfresco.repo。 dictionary.CompiledModel.createLocalPrefixResolver(CompiledModel.java:206) at org.alfresco.repo.dictionary.CompiledModel.constructDefinitions(CompiledModel.java:130) at org.alfresco.repo.dictionary.CompiledModel。(CompiledModel.java:88 ) ... 39更多

+0

我不知道你看到了什麼錯誤,所以我忍不住。 –

+0

我已經在上下文文件中發佈了bean聲明並且從日誌文件中發佈了錯誤堆棧跟蹤 –

+0

你說你有2個模型文件,但是在context.xml中有3個模型文件?你有一個引用def:type的abc:assoc和引用abc:type的def:assoc?請使用名稱空間前綴說明類型/關聯位置。 – Florian

回答

2

我懷疑你的defModel。xml文件格式不正確或無效。確保當你在一個XML感知的編輯器中打開它時,它不會抱怨。您可能還想對照位於$ TOMCAT_HOME/webapps/alfresco/WEB-INF/classes/alfresco/model中的modelSchema.xsd進行檢查。

+0

我在Alfresco論壇上給出的建議是「你不能有兩個模型相互依賴,但你也不需要將所有類型移動到一個模型文件中,只需將它們移動到一個文件,所以你有一個模型依賴於另一個沒有循環路線的模型,應該很容易移動關聯 - 你只需要更新名稱和目標類「。它現在正在爲我工​​作。謝謝傑夫 –