【问题标题】:Web Service with Java from XML Database to XQuery使用 Java 从 XML 数据库到 XQuery 的 Web 服务
【发布时间】:2015-06-20 11:26:48
【问题描述】:

这是我人生中的第一次编程。 现在我必须使用 Java 创建 Web 服务(Rest,但是当 Soap 适合这种情况时,我尝试使用 Soap 方法)。 从自己的 FTP 服务器中的 XML 数据库中提取数据并返回。

使用 Java 或其他方法从 XML 数据转换到 XQuery。


XML DB →REST Web 服务 (XQuery) →XML DB 返回 或者我想选择更简单的方法。

XML 数据库:文本、图片、URL、姓名、年份。

我尝试创建网络服务几周。 安装软件和插件,并检查是否全部运行;

BaseX, Tomcat 7.0.62 本地主机, 泽西 1.19, Eclipse 4.4 Luna 和插件, JAVA 1.8, JDK 8, JAXB

例如,我阅读了教程: http://www.vogella.com/tutorials/REST/article.html http://www.ibm.com/developerworks/data/library/techarticle/dm-0901rodrigues/

但它没有工作。我遇到了以下异常:

enter code here
`javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)`

根本原因:

enter code here
`com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)
com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359)
com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509)
com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:339)
com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394)
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577)
javax.servlet.GenericServlet.init(GenericServlet.java:158)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)`

我在寻找有用的资源来帮助我解决这个问题时遇到了问题,我希望得到有关如何继续的建议。

【问题讨论】:

  • 这东西很难。通常不适合初学者。
  • 你需要别人的帮助,比如教授或者试试topcoder吧
  • 我对您的问题投了反对票,但请不要因为我们过滤 SO 上的问题很简单而气馁。所以首先欢迎来到SO!不幸的是,您的问题非常不清楚您要达到的目标以及为什么要做您所描述的事情。听起来您几乎迷路了,我觉得您的问题非常不具体,可能不适合 SO。
  • @dirkk 没错。因为我不确定 Web 服务以及如何创建 Web 服务。我现在已经“Web服务可以将计算机连接到计算机”。我现在必须创建 Web 服务。另外,我对使用 stackoverflow 了解不多。
  • 你可能想查看这个初学者指南,也许这可以让你开始:swennenhuis.nl/basexfordummies/BaseX_for_dummies.pdf 但是,我觉得你的目标太高了,应该从编程的基础开始,而不是坚持你必须实现一个网络服务。需要这个的人应该找有经验的人来做这个......

标签: java xml web-services rest xquery


【解决方案1】:

尚不清楚 Java 是真正的需求,还是您认为需要的技术。如果您可以不用它,您可以看看原生 XML 数据库。对于开源,请查看 eXist 或 BaseX。它们都带有自己的 HTTP 绑定机制,甚至 REST 服务库和框架。

【讨论】:

  • 看看 RESTXQ (docs.basex.org/wiki/RESTXQ),一种用于构建 REST 应用程序的 XQuery 技术,这正是您的用例。使用 basex,如果您下载 zip 版本 (basex.org/products/download/all-downloads),您只需启动 basexhttp,您将在 localhost:8984 获得示例 REST 应用程序。我怀疑它会变得比这更容易......
  • @dirkk 非常感谢您提供更多信息。我检查了网站,然后再试一次!我可以问更多关于新方法的问题吗?
  • @Florent 谢谢你的建议。我的意思是,XML DB →(XML) →REST Web 服务 →(XQuery) →XML DB 返回所以我认为我需要 Java。我还检查了 eXist 或 BaseX
  • @dirkk 我阅读了链接和github.com/BaseXdb。但我需要更多解释,例如 URL jersey.java.net/documentation/1.19/index.html 。我不明白,我该如何为我的案例应用程序(通过 Web 服务连接 XML 数据库)。谢谢。
  • 如果 docs.basex.org/wiki/RESTXQ 中的某些内容您无法实现,最好针对您无法实现的确切内容创建一个新问题,而不是简洁的“我不明白” " 在评论中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多