2016-07-29 20 views
0

Ich arbeite an einem Java Rest Service mit Spring MVC (4.2.0.RELEASE) einschließlich einer Neo4j-Datenbank. Daher wird Spring Data Neo4j (4.1.1.RELEASE) verwendet.Spring Data Neo4j NullPointerException bei der Bereitstellung mehrerer Versionen auf Tomcat

Die SDN-Konfiguration sieht wie folgt aus:

@Configuration 
@ComponentScan(basePackages = { "com.xxx.yyy" }) 
@EnableNeo4jRepositories(basePackages = "com.xxx.yyy.dao.repo") 
@EnableTransactionManagement 
public class Neo4jConfig extends Neo4jConfiguration { 

    @Autowired 
    private ApplicationProperties properties; 

    @Bean 
    public SessionFactory getSessionFactory() { 
     return new SessionFactory(getConfiguration(), "com.xxx.yyy.dao.beans"); 
    } 

    @Bean 
    public Neo4jOperations neo4jTemplate() throws Exception { 
     return new Neo4jTemplate(getSession()); 
    } 

    @Bean 
    public org.neo4j.ogm.config.Configuration getConfiguration() { 
     org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); 

     config.driverConfiguration().setDriverClassName(this.properties.getNeo4jDriver()) 
       .setURI(this.properties.getNeo4jEndpoint()) 
       .setCredentials(this.properties.getNeo4jUser(), this.properties.getNeo4jPassword()); 

     return config; 
    } 

    @Bean 
    @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) 
    public Session getSession() throws Exception { 
     return super.getSession(); 
    } 

} 

Die Anwendung wird auf einem tomcat7 in Produktionsumgebung bereitgestellt. Alles funktioniert wie ein Zauber, wenn nur eine Version der Anwendung bereitgestellt wird und das Versionsflag nicht ausgefüllt ist.

Für eine Bereitstellung ohne Ausfallzeit möchte ich das Versionskennzeichen auf dem Tomcat verwenden, um mehrere Versionen bereitzustellen. Wenn ich dies tue, funktioniert die Anwendung nicht mehr wegen einer NullPointerException in der org.neo4j.ogm.context.RestModelMapper.

Stacktrace:

java.lang.NullPointerException 
    at org.neo4j.ogm.context.RestModelMapper.mapEntity(RestModelMapper.java:153) ~[neo4j-ogm-core-2.0.1.jar:?] 
    at org.neo4j.ogm.context.RestModelMapper.map(RestModelMapper.java:76) ~[neo4j-ogm-core-2.0.1.jar:?] 
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:94) ~[neo4j-ogm-core-2.0.1.jar:?] 
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:73) ~[neo4j-ogm-core-2.0.1.jar:?] 
    at org.neo4j.ogm.session.Neo4jSession.query(Neo4jSession.java:313) ~[neo4j-ogm-core-2.0.1.jar:?] 

Dieses Problem tritt nur, wenn ich die Version Flagge auf tomcat verwenden. Weiß jemand, woran das Problem liegt?

Antwort

0

Ich habe dieses Problem endlich gelöst, indem ich die Version des OGM HTTP Driver und die Spring Data Neo4j Abhängigkeit geändert habe.

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-neo4j</artifactId> 
    <version>4.1.4.RELEASE</version> 
</dependency> 

<dependency> 
    <groupId>org.neo4j</groupId> 
    <artifactId>neo4j-ogm-http-driver</artifactId> 
    <version>2.0.5</version> 
</dependency> 

Mit diesen Einstellungen den Einsatz mit der Tomcat-Version Flag https://tomcat.apache.org/tomcat-7.0-doc/config/context.html arbeitet jetzt.