Spring Data Neo4j:使用嵌入的 Neo4j 服务器:JAR 打包

2023-11-29

我终于能够在我的 java 应用程序中创建一个使用嵌入式数据库的服务器实例,如下所示here。当我从 Eclipse 运行它时,它可以正常工作,但这实际上不是我的目的(除其他事项外,我的应用程序向数据库提供新的节点和关系)。我有一个 Neo4j 盒子,它应该是我的服务器实例,我想将我的应用程序作为 JAR 文件部署在那里。这样,我想从那里访问网络界面。我已经测试过它:在我的开发机器中运行java应用程序时,同一专用网络中的任何机器都可以毫无问题地访问该接口。当尝试将所有内容打包到 JAR 中以进行服务器分发时,就会出现问题。

具体错误堆栈如下:

<!-- bean initialization stuff -->

Apr 11, 2013 1:14:30 PM org.neo4j.kernel.impl.transaction.xaframework.XaLogicalLog doInternalRecovery
INFO: Non clean shutdown detected on log [/data/production/graph.db/nioneo_logical.log.2]. Recovery started ...
Apr 11, 2013 1:14:32 PM org.neo4j.kernel.impl.transaction.xaframework.XaLogicalLog doInternalRecovery
INFO: Non clean shutdown detected on log [/data/production/graph.db/index/lucene.log.2]. Recovery started ...
2013-04-11 13:14:34,787 INFO [org.springframework.transaction.jta.JtaTransactionManager] - Using JTA UserTransaction: org.neo4j.kernel.impl.transaction.UserTransactionImpl@1b2fde11
2013-04-11 13:14:34,787 INFO [org.springframework.transaction.jta.JtaTransactionManager] - Using JTA TransactionManager: org.neo4j.kernel.impl.transaction.SpringTransactionManager@639c3c08
Apr 11, 2013 1:14:35 PM org.neo4j.server.logging.Logger log
INFO: Starting Neo Server on port [7474] with [40] threads available
Logger not configured, logging to std out instead: [FINE] Adding JAXRS packages [org.neo4j.server.rest.discovery] at [/]
Apr 11, 2013 1:14:35 PM org.neo4j.server.logging.Logger log
INFO: Mounted discovery module at [/]
Logger not configured, logging to std out instead: [FINE] Adding JAXRS packages [org.neo4j.server.rest.web] at [/db/data]
Apr 11, 2013 1:14:35 PM org.neo4j.server.logging.Logger log
INFO: Mounted REST API at [/db/data]
Logger not configured, logging to std out instead: [FINE] Adding JAXRS packages [org.neo4j.server.webadmin.rest] at [/db/manage]
Apr 11, 2013 1:14:35 PM org.neo4j.server.logging.Logger log
INFO: Mounted management API at [/db/manage]
Apr 11, 2013 1:14:35 PM org.neo4j.server.logging.Logger log
INFO: Mounted webadmin at [/webadmin]
2013-04-11 13:14:35,494 INFO [org.mortbay.log] - Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
Apr 11, 2013 1:14:35 PM org.neo4j.server.logging.Logger log
INFO: Mounting static content at [/webadmin] from [webadmin-html]
Logger not configured, logging to std out instead: [FINE] Found [jar:file:/home/jaranda/cicerone/cicerone-crawlers/target/cicerone-crawlers-0.0.1-SNAPSHOT.jar!/webadmin-html]
Logger not configured, logging to std out instead: [FINE] Mounting static content from [jar:file:/home/jaranda/cicerone/cicerone-crawlers/target/cicerone-crawlers-0.0.1-SNAPSHOT.jar!/webadmin-html] at [/webadmin]
Logger not configured, logging to std out instead: [FINE] Mounting servlet at [/db/manage]
Logger not configured, logging to std out instead: [FINE] Mounting servlet at [/db/data]
Logger not configured, logging to std out instead: [FINE] Mounting servlet at [/]
2013-04-11 13:14:35,556 INFO [org.mortbay.log] - jetty-6.1.x
2013-04-11 13:14:35,915 INFO [org.mortbay.log] - NO JSP Support for /webadmin, did not find org.apache.jasper.servlet.JspServlet
Apr 11, 2013 1:14:36 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
  org.neo4j.server.webadmin.rest
Apr 11, 2013 1:14:39 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class org.neo4j.server.webadmin.rest.JmxService
  class org.neo4j.server.webadmin.rest.ConsoleService
  class org.neo4j.server.webadmin.rest.MonitorService
  class org.neo4j.server.webadmin.rest.RootService
Apr 11, 2013 1:14:39 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Apr 11, 2013 1:14:39 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.9 09/02/2011 11:17 AM'
Apr 11, 2013 1:14:40 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
  org.neo4j.server.rest.web
Apr 11, 2013 1:14:43 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class org.neo4j.server.rest.web.ResourcesService
  class org.neo4j.server.rest.web.RestfulGraphDatabase
  class org.neo4j.server.rest.web.DatabaseMetadataService
  class org.neo4j.server.rest.web.ExtensionService
  class org.neo4j.server.rest.web.CypherService
  class org.neo4j.server.rest.web.BatchOperationService
Apr 11, 2013 1:14:43 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Apr 11, 2013 1:14:43 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.9 09/02/2011 11:17 AM'
Apr 11, 2013 1:14:43 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
  org.neo4j.server.rest.discovery
Apr 11, 2013 1:14:46 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class org.neo4j.server.rest.discovery.DiscoveryService
Apr 11, 2013 1:14:46 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Apr 11, 2013 1:14:46 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.9 09/02/2011 11:17 AM'
2013-04-11 13:14:46,751 INFO [org.mortbay.log] - Started [email protected]:7474
Apr 11, 2013 1:14:46 PM org.neo4j.server.logging.Logger log
INFO: Server started on [http://172.20.100.33:7474/]
2013-04-11 13:14:47,616 INFO [org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler] - Initializing ExecutorService  'taskScheduler'
2013-04-11 13:14:47,714 INFO [com.twitter.hbc.httpclient.BasicClient] - New connection executed: Hosebird-Client-02, endpoint: /1.1/statuses/filter.json?delimited=length&stall_warnings=true
2013-04-11 13:14:48,346 INFO [com.twitter.hbc.httpclient.ClientBase] - Hosebird-Client-02 Establishing a connection
Apr 11, 2013 1:14:48 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java class [B, and Java type class [B, and MIME media type application/json was not found
Apr 11, 2013 1:14:48 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: The registered message body writers compatible with the MIME media type are:
*/* ->
  com.sun.jersey.server.impl.template.ViewableMessageBodyWriter

Apr 11, 2013 1:14:48 PM com.sun.jersey.spi.container.ContainerResponse logException
SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class [B, and Java type class [B, and MIME media type application/json was not found
    at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class [B, and Java type class [B, and MIME media type application/json was not found
    ... 22 more

我必须说我对 Spring、Maven 和 Neo4j 本身还很陌生。我很迷失如何摆脱这个问题。 Web 界面实际上已加载,但没有任何功能。见附图:

Neo4j web interface with no functionality.

尽管存在此问题,但我的应用程序的后端工作正常,并且实际上创建了新的节点/关系。

我认为这个问题(或某种程度)已经被讨论过here但我不清楚答案。

有什么建议么?先感谢您!


我终于找到了一个解决方案,它成功了。我只是分享一下,以防其他人遇到同样的问题。问题是 META-INF/services 下的一些文件在 jar 打包过程中被覆盖,因为默认情况下它们的内容不会合并。根据 maven-shade 插件参考:

提供某些接口实现的 JAR 文件通常随 AMETA-INF/服务/将接口映射到其的目录 用于服务定位器查找的实现类。到merge同一接口的多个实现到一个服务条目中, 这服务资源转换器可以使用。

因此,在我的 pom 中添加这个变压器就可以了,例如:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

希望能帮助到你!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data Neo4j:使用嵌入的 Neo4j 服务器:JAR 打包 的相关文章

随机推荐

  • 更改 Div 样式 onclick

    我在页面顶部有 2 个选项卡 单击一个选项卡时 我希望该选项卡具有 活动 类 而另一个选项卡具有 非活动 类 以便用户可以看到当前选择的选项卡 我怎样才能用 javascript css 来做到这一点 div class tabActive
  • 如何在word中创建报告生成器

    我目前正在尝试制作它 以便我可以加载Word模板并提示填写数据 然后将这些数据填充到Word文档中 该报告有两个主要部分 概览中的第一个 系统将自动计算摘要 第二部分是摘要 其中将附加数据 在 Word 中生成报告的方法有多种 每种方法都有
  • WebBrowser 控件 - 控制台应用程序 - 事件未触发

    我一直在浏览各种WebBrowser控制stackoverflow问题 而且我似乎无法找到我遇到的问题的答案 我正在尝试使用用于打印网页的 WebBrowser 控件 下列的MSDN 的例子 我创建了以下控制台应用程序 namespace
  • 来自 Google 电子表格的电子邮件中的图表图像与 google-apps-script 返回白色图像

    我每天晚上都会向我自己的 Gmail 地址发送一份报告 大约一周后 图表的图像突然变成了空白 只有一张图表 function sendReport var ss SpreadsheetApp getActiveSpreadsheet var
  • 当参数是函数参数包时,在部分排序期间推导模板实参

    N4527 14 8 2 4 温度扣除部分 3 用于确定排序的类型取决于完成部分排序的上下文 3 1 在函数调用的上下文中 使用的类型是函数调用具有参数的函数参数类型 3 2 在调用转换函数的上下文中 使用转换函数模板的返回类型 3 3 在
  • 如何在 TypeScript 中将一种泛型类型的结构复制到另一种泛型?

    假设我们有以下输入类型 interface Input name string heightCm number dob Date 我想编写一个函数 可以根据此输入生成以下输出类型 interface Output name boolean
  • Flex 项目在换行时应左对齐,而不是居中

    我的网站移动菜单底部有一个基于 Flex 的无序社交媒体图标列表 我试图让三人并排坐着 间隔相等 我已经按照规则解决了这个问题 justify content space around but 我的问题是 当超过三个项目时 下一行开始从中心
  • 在shopify中编写自定义搜索应用程序

    我需要在 Shopify 中实现我们自己的自定义产品搜索 但我一直无法找到具体的操作方法 我不是在谈论显示搜索结果的模板 而是我们需要编写自定义代码来准确决定哪些产品应显示在搜索页面上及其顺序 我可以看到有很多应用程序提供自定义搜索结果 顺
  • 更新 .NET Core 工具

    我正在尝试使用 电子邮件受保护 为了在这一点上做到这一点 我已经有了 安装了 Visual Studio 2019 预览版 安装了 NET Core 3 1运行时 安装了 NET Core 3 1 SDK 现在我仍然无法运行命令dotnet
  • R[写入控制台]:gettext(fmt,domain = domain,trim = trim)中的错误:3个参数传递给.Internal(gettext),需要2个

    我想在python中使用R函数 我在python中安装了rpy2 当我想加载函数 from rpy2 import robjects 时 我面临以下错误 R 写入控制台 gettext fmt domain domain trim trim
  • MapOverlay 绑定不起作用

    我正在尝试使用 MVVM 代码结构在 Windows Phone 8 上运行地图叠加 我似乎无法将 MapOverlay 的 GeoCoordinate 属性正确绑定到我的 ViewModel 而且我不知道为什么 目前的 XAML 是 He
  • 在jqGrid中,是否可以使用Ajax来获取custom_element的数据?

    我正在做某事类似于这个问题我有一个复选框列表作为自定义编辑控件 不同之处在于我想从服务器获取我的列表 而不是在客户端上硬编码 检查1 检查2 检查3 有什么方法可以在列设置或在自定义元素功能 看来我需要类似的东西dataUrl您用于选择项目
  • 从多个表中获取数据

    医学硕士 MedicalID MedicalName 1 pk abc 2 xyx 3 pqr 儿童医学硕士 ChildMID MedicalID Station Name 1 pk 1 fk bnb mfk 2 1 def rwr 3 2
  • 使用 LINQ 获取多维数组的分区(N 维数组的 (N-1) 维实例)

    我想从 3d 数组中获取 2d 数组 假设我有一个维度为 10 10 10 的双 3d 数组 A3我需要获得一个二维数组 A2 A3 5 即第二维的索引等于例如5 如果我想获得 2d 数组 A2 即 2d 数组的 1d 实例 的分区 例如
  • 查找嵌套在 Repeater 控件内的控件

    我正在尝试查找在中继器中呈现的文本框的值thoughUserControl 即 Repeater 有一个 UserControl 的占位符 UserControl 内部是 TextBox 标记实际存在的位置 我以前用文本框做过这个直接在里面
  • 如何在 JavaScript 中使用 fetch() 读取 JSON 文件?

    如何使用 javascript 中的 fetch 函数读取本地 JSON 文件 我有一个包含一些转储数据的 JSON 文件和一个读取服务器上 JSON 文件的函数 例如 readJson console log this let vm th
  • 如何将数字附加到 XSL 文件内的 ID

    我有以下 XSL 文件 该文件将重复多次 在我的例子中为 4 次
  • 如何从另一个线程更新 GUI?

    我的线程有问题JSF申请 也许有人可以帮助我 启动后 我运行新线程 该线程正在进行一些后台操作 该线程正在工作while true loop 但当它无能为力时 它会调用wait 它正在循环工作 因为我必须调用notify 在一些用户操作之后
  • BeanUtils 复制属性:注册 ConvertUtils

    我有用 Java 编写的 Web 应用程序 我在用着BeanUtils copyProperties方法 如果一个date字段为空 会抛出错误 我通过使用解决了它ConvertUtils register method ConvertUti
  • Spring Data Neo4j:使用嵌入的 Neo4j 服务器:JAR 打包

    我终于能够在我的 java 应用程序中创建一个使用嵌入式数据库的服务器实例 如下所示here 当我从 Eclipse 运行它时 它可以正常工作 但这实际上不是我的目的 除其他事项外 我的应用程序向数据库提供新的节点和关系 我有一个 Neo4