Java Alfresco从3.4.d迁移到4.2.e(和5.0.a)后无法加载spring上下文
三天以来,我一直在运行以下程序,调试/谷歌搜索似乎没有什么帮助 这是我的背景: 我有一个遗留应用程序-一个使用war覆盖的Alfresco 3.4.d扩展- 扩展it本身并没有什么特别之处——许多特定的管理者和服务都是通过spring上下文开发的,并且功能齐全 我所做的只是将Alfresco版本从3.4.d升级到4.2.e,以下是我所做的:Java Alfresco从3.4.d迁移到4.2.e(和5.0.a)后无法加载spring上下文,java,spring,tomcat,cxf,alfresco,Java,Spring,Tomcat,Cxf,Alfresco,三天以来,我一直在运行以下程序,调试/谷歌搜索似乎没有什么帮助 这是我的背景: 我有一个遗留应用程序-一个使用war覆盖的Alfresco 3.4.d扩展- 扩展it本身并没有什么特别之处——许多特定的管理者和服务都是通过spring上下文开发的,并且功能齐全 我所做的只是将Alfresco版本从3.4.d升级到4.2.e,以下是我所做的: 在磁盘上某处安装了Alfresco-4.2.e社区分发 在Eclipse上,创建了一个以CATALINA_为基础的Tomcat服务器 分发TOMCAT 我遵
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.Service;
/**
* This class was generated by Apache CXF 2.7.6
* 2013-09-20T12:05:27.093+02:00
* Generated source version: 2.7.6
*
*/
@WebServiceClient(name = "managerService",
wsdlLocation = "CustomSoapi-dlw-1.61.wsdl",
targetNamespace = "http://soapi.XXX.com/manager")
public class ManagerService extends Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("http://soapi.XXX.com/manager", "managerService");
public final static QName ManagerPort = new QName("http://soapi.XXX.com/manager", "managerPort");
static {
URL url = ManagerService.class.getResource("CustomSoapi-dlw-1.61.wsdl");
if (url == null) {
url = ManagerService.class.getClassLoader().getResource("CustomSoapi-dlw-1.61.wsdl");
}
if (url == null) {
java.util.logging.Logger.getLogger(ManagerService.class.getName())
.log(java.util.logging.Level.INFO,
"Can not initialize the default wsdl from {0}", "CustomSoapi-dlw-1.61.wsdl");
}
WSDL_LOCATION = url;
}
迁移至Alfresco 5.0.a(2014年9月16日)
我最近回到这个问题上是为了解决它(我希望如此),但似乎它仍然很难完成 以下是我所做的事情和背景:
/alfresco.sh start
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'copyService' defined in class path resource [alfresco/copy-services-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Association {http://www.alfresco.org/model/content/1.0}original of class {http://www.alfresco.org/model/content/1.0}copiedfrom has not been defined in the data dictionary
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.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 126 more
Caused by: java.lang.IllegalArgumentException: Association {http://www.alfresco.org/model/content/1.0}original of class **{http://www.alfresco.org/model/content/1.0}copiedfrom has not been defined in the data dictionary**
at org.alfresco.repo.policy.PolicyComponentImpl.bindAssociationBehaviour(PolicyComponentImpl.java:365)
at org.alfresco.repo.copy.CopyServiceImpl.init(CopyServiceImpl.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 133 more
验证spring的版本,它已更改。根据较新的Alfresco类和JDK1.7重新编译所有Java源代码。我不知道确切的版本,但在NodeService(我想)等地方有一些关键的方法签名已更改。您可以发布
smsManagerService
的bean定义吗?我刚刚在问题正文附加部分中添加了代码。ThanksAlfresco使用了一个补丁+旧版本的CXF,即2.2.2 AFAICT,而您的代码是由更新版本的CXF生成的。如果您尝试用旧版本的C重新创建类,会发生什么XF Alfresco发货?(顺便说一句,我看不到许可证允许的CXF jar中Alfresco补丁的详细信息,但IIRC违反了正常的Alfresco内部政策…)我的同事最近从3.x升级到4.2f。我记得他提到需要先升级到4.0,然后再升级到4.2f。简单的谷歌搜索说其他事情都需要这样做,但我很好奇你对此怎么说?我会尝试一下并反馈。谢谢你是说mvn clean安装在我的项目上吗?我已经做了还是你说了什么else?例如,在我尝试捕获异常时,我注意到一些假定的内部方法不再存在(试图在包中找到它们,但没有成功).ThanksHi,我回来是想了解一些关于我的问题的线索。现在我正在迁移到Alfresco 5.0.c,似乎还有其他问题。我在问题主体中添加了日志。谢谢,最后,在Charles Le Seach的帮助下,我完成了,但解决了我的问题,现在我正在努力让WebDAV服务器通过WebDriv接受我的文档你的意思是更新Alfresco使用的spring版本吗?谢谢
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'copyService' defined in class path resource [alfresco/copy-services-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Association {http://www.alfresco.org/model/content/1.0}original of class {http://www.alfresco.org/model/content/1.0}copiedfrom has not been defined in the data dictionary
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.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 126 more
Caused by: java.lang.IllegalArgumentException: Association {http://www.alfresco.org/model/content/1.0}original of class **{http://www.alfresco.org/model/content/1.0}copiedfrom has not been defined in the data dictionary**
at org.alfresco.repo.policy.PolicyComponentImpl.bindAssociationBehaviour(PolicyComponentImpl.java:365)
at org.alfresco.repo.copy.CopyServiceImpl.init(CopyServiceImpl.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 133 more