【发布时间】:2016-11-21 20:02:23
【问题描述】:
我有一个简单的 Java 应用程序(不是 Web 应用程序)并使用 maven 通过 Jar 文件分发它。我需要通过 HTTP(类似于 REST API)公开它的一些公共方法,以便其他应用程序可以通过进行 REST 调用来重用它。 例如,在做一些研究时,我看到 Jersey 是一个选项,但它似乎只适用于 Java Web 应用程序。我也遇到过 HTTPComponents + HTTPClient,但代码比 Jersey 复杂得多。
我的问题是Java应用程序通过HTTP暴露公共方法是否有一个简单的解决方案。
谢谢你, 萨拉
【问题讨论】:
-
一旦您拥有 HTTP 端点,您就牢牢地处于 Web 应用程序领域。我不会挂断这些语义。 Jersey 是一个很棒的 Java 库。
-
感谢您的回复@DejaVuSansMono。我的意思是我没有 web.xml 我仍然想将应用程序严格公开为一个 jar。我需要这些用户访问这些休息 URL 的方式是将我的 jar 添加到他们的应用程序中,然后进行休息调用以使用我将公开的那些 API。我知道这可以通过 httpcomponents 实现,我觉得它很麻烦,正在寻找更好的解决方案。
-
“作为罐子”是什么意思?如果您正在谈论让他们将 jar 包含在自己的程序中,那么直接进行 Java 调用会更简单、更有效。如果您说的是一个可运行的 jar,它是它自己的程序,那么 Spring Boot 会将您需要的一切(包括嵌入式 Web 服务器)打包到一个 jar 中。
-
如果你想暴露接口被其他java运行应用程序通过http调用你可以使用Spring HttpInvokerProxyFactoryBean...
-
听起来您还没有任何 Web 功能。 Spring Boot 将允许您使用 Web 界面非常简单地包装这些 API 调用。也就是说,如果他们有您的可运行 jar,他们对您的代码的访问权限与您将其作为库分发一样多,您不妨为每个人省去麻烦。
标签: java rest jersey httpclient apache-httpcomponents