我正在尝试将SDN项目从当前的稳定版本(2.3.3)迁移到支持Neo4j 2.0的3.0.0 RC1版本。
该项目是一个部署在Glassfish 3.1.2.2服务器上的WAR,它使用通过 @Autowired Neo4jOperations
对象和GraphRepository<T>
对象访问Neo4j的EJB。
使用SpringBeanAutowiringInterceptor
拦截器注释支持自动布线。
SDN配置由spring xml配置文件中的以下行给出:
<context:annotation-config/> <context:spring-configured/> <bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase" destroy-method="shutdown"> <constructor-arg index="0" value="my.db"/> </bean> <neo4j:repositories base-package="com.my.neo4j.repository"/> <tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/> <neo4j:config graphDatabaseService="graphDatabaseService"/>
使用2.3.3 SDN版本时一切正常,但遗憾的是使用3.0.0 RC1在部署时出现以下错误:
javax.enterprise.inject.UnsatisfiedResolutionException:无法执行 解决一个bean 'org.springframework.data.neo4j.support.mapping.Neo4jMappingContext' 使用限定符[@javax.enterprise.inject.Any(), @ javax.enterprise.inject.Default()]。 在org.springframework.data.neo4j.repository.cdi.Neo4jCdiRepositoryExtension.createRepositoryBean(Neo4jCdiRepositoryExtension.java:107) 在org.springframework.data.neo4j.repository.cdi.Neo4jCdiRepositoryExtension.afterBeanDiscovery(Neo4jCdiRepositoryExtension.java:82) ...
我真的不知道我的项目有什么问题,我很感激能帮助我解决这个问题的任何人。
更新:与3.0.0.RELEASE相同的问题。
答案 0 :(得分:0)
EmbeddedGraphDatabase
不再有构造函数。
您必须使用我添加的GraphDatabaseServiceFactoryBean
。
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.support.GraphDatabaseServiceFactoryBean"
destroy-method="shutdown" scope="singleton">
<constructor-arg value="target/config-test"/>
<constructor-arg>
<map>
<entry key="allow_store_upgrade" value="true"/>
</map>
</constructor-arg>
</bean>