【问题标题】:Neo4j Wildfly OGM . Works fine in local unit tests but fails after deploying with resource exceptionNeo4j 野蝇 OGM 。在本地单元测试中工作正常,但在资源异常部署后失败
【发布时间】:2016-04-10 15:52:23
【问题描述】:

我的项目结构是

  • 耳朵
    • server.war
    • lib/persistence.jar
    • META-INF/application.xml

我在persistence jar 中有neo4j-ogm 相关代码。我的依赖是

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

我在包 com.abcd.persistence.nodes 中有一个 User 实体 在UserDAO 我正在尝试添加这样的用户

    User user = new User();
    user.setName("Manju");

    SessionFactory sessionFactory = new SessionFactory("com.abcd.persistence.nodes");
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    session.save(user);
    session.getTransaction().commit();

这个works fine 如果我在persistence.jar 中运行测试用例。但是,当我尝试使用在Server.war 中定义的 REST 服务进行部署后访问时,它失败了

堆栈跟踪是

Exception handling request to /ws/test: org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: org.neo4j.ogm.exception.ServiceNotFoundException: Resource: vfs:/content/ear.ear/lib/persistence.jar/com/abcd/persistence/nodes/
at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:76)
at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:212)
at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:168)

Caused by: java.lang.RuntimeException: org.neo4j.ogm.exception.ServiceNotFoundException: Resource: vfs:/content/ear.ear/lib/persistence.jar/com/abcd/persistence/nodes/
at org.neo4j.ogm.ClassUtils.getUniqueClasspathElements(ClassUtils.java:135)
at org.neo4j.ogm.scanner.ClassPathScanner.getUniqueClasspathElements(ClassPathScanner.java:158)
at org.neo4j.ogm.scanner.ClassPathScanner.scan(ClassPathScanner.java:130)
at org.neo4j.ogm.metadata.DomainInfo.load(DomainInfo.java:260)

如果我遗漏了什么,请告诉我。

【问题讨论】:

    标签: java jakarta-ee neo4j wildfly neo4j-ogm


    【解决方案1】:

    看起来它无法连接到服务端点。下载 SoapUI,看看能否让 REST 服务工作。

    Soapui.org

    【讨论】:

    • 当我使用 curl 调用 neo4j rest url 时它工作正常。我已经提到测试用例工作正常。它无法在运行时解析实体包。
    【解决方案2】:

    OGM 需要一个插件来支持 Wildfly(由于 vfs 协议)。

    您需要实现org.neo4j.ogm.classloader.ResourceResolver 接口并相应地处理资源(参见https://github.com/neo4j/neo4j-ogm/issues/48#issuecomment-190288304

    但是,有一个实现 already available 所以你可以使用这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      相关资源
      最近更新 更多