Search code examples
javacdiglassfish-3spring-data-neo4jspring-data-neo4j-4

Add SDN-4 to GF-3: Exception while loading the app: IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException


To work with a neo4j-graphdatabase standalone server i add the dependency of SDN 3.1.2 to my pom.

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

Because of the Neo4jCdiRepositoryExtension i can work with spring-data-neo4j without the complete Spring-Framework (via CDI).

Now i want to update my SDN Version to 4.0.0.M1.

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-neo4j</artifactId>
    <version>4.0.0.M1</version>
</dependency>

I have to create my own Neo4jCdiRepositoryExtension, this seems really easy. The deploy-process build my new extensions. To use my extensions i need this class that provide all needed configurations:

@ApplicationScoped
public class Neo4jConfigurationProvider {

@Resource(lookup = "rest/neo4j")
private String baseUriString;
private static final String PERSISTENCE_ROOT = "...";
private SessionFactory sessionFactory;
private Neo4jServer neo4jServer;
private Session session;

@PostConstruct
public void init() {
    neo4jServer = new RemoteServer(baseUriString);
    sessionFactory = new SessionFactory(PERSISTENCE_ROOT + ".person", PERSISTENCE_ROOT + ".relation",
            PERSISTENCE_ROOT + ".relations_type");
    session = sessionFactory.openSession(baseUriString);
}

@Produces
public SessionFactory sessionFactory() {
    return sessionFactory;
}

@Produces
public Neo4jServer neo4jServer() {
    return neo4jServer;
}

@Produces
public Neo4jTemplate neo4jTemplate() {
    return new Neo4jTemplate(session);
}
}

My glassfish 3 server give me this error message if i want to deploy it:

remote failure: Error occurred during deployment: Exception while loading the app :
java.lang.IllegalStateException: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: 
org.apache.catalina.LifecycleException: 
com.sun.jersey.spi.inject.Errors$ErrorMessagesException. 
Please see server.log for more details.

My question now is: How can i fix this error?


Solution

  • Firstfully i can not find any server.log, because my server don't start. So i reproduced a version that work, add the sdn-4 dependency and try to get any log of it. So here is the error from my server.log:

    The following errors and warnings have been detected with resource and/or provider classes: familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.LoggingProvider(org.neo4j.kernel.logging.Logging) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.transactional.TransactionFilter(org.neo4j.server.database.Database) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.repr.InputFormatProvider(org.neo4j.server.rest.repr.RepresentationFormatRepository) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.repr.OutputFormatProvider(org.neo4j.server.rest.repr.RepresentationFormatRepository) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.paging.LeaseManagerProvider(org.neo4j.server.rest.paging.LeaseManager) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.NeoServerProvider(org.neo4j.server.NeoServer) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.plugins.PluginInvocatorProvider(org.neo4j.server.AbstractNeoServer) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.database.ExecutionEngineProvider(org.neo4j.server.database.CypherExecutor) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.database.CypherExecutorProvider(org.neo4j.server.database.CypherExecutor) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.database.GraphDatabaseServiceProvider(org.neo4j.server.database.Database) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.database.DatabaseProvider(org.neo4j.server.database.Database) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rrd.RrdDbProvider(org.neo4j.server.database.RrdDbWrapper) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.web.WebServerProvider(org.neo4j.server.web.WebServer) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.web.InjectableWrapper(org.neo4j.server.plugins.Injectable) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.dbms.UserService(org.neo4j.server.security.auth.AuthManager,org.neo4j.server.rest.repr.InputFormat,org.neo4j.server.rest.repr.OutputFormat) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.management.console.ConsoleService(org.neo4j.kernel.configuration.Config,org.neo4j.server.database.Database,javax.servlet.http.HttpServletRequest,org.neo4j.server.rest.repr.OutputFormat,org.neo4j.server.database.CypherExecutor) at parameter index 0 familymanager_1 | SEVERE: Missing dependency for constructor public org.neo4j.server.rest.discovery.DiscoveryService(org.neo4j.kernel.configuration.Config,org.neo4j.server.rest.repr.OutputFormat) at parameter index 0

    I search for an other server-instance in my spring-data-neo4j dependency and found the "neo4j-server". I excluded this server from my sdn-4 dependency in my pom to work with this framework:

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-neo4j</artifactId>
            <version>4.0.0.RC1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.neo4j.app</groupId>
                    <artifactId>neo4j-server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    

    Now i can use the spring-data-neo4j 4-RC1 version under JavaEE 6.