java - 创建用于内部应用程序的 Web 服务并将其公开给其他人

标签 java web-services spring tomcat

对于我的 Web 应用程序,我正在考虑使用 Spring 框架。最初,我想有不同的操作,如创建用户或登录,但现在我必须向其他应用程序公开一些功能。我应该创建一个我从我的应用程序调用的 Web 服务,其他人也这样做,还是从 Spring 创建一个操作,然后让其他人调用该 Web 服务?似乎我应该尽量减少调用某些东西的不同方式,但是调用与我的主应用程序在同一应用程序服务器上运行的 Web 服务是否有意义?从性能的角度来看,这是个坏主意吗?

更新

我担心 Tomcat 无法在端口 80 上同时提供静态或动态页面(因此用户可以访问 www.example.com/welcome.jsp 而不是 www.example.com:8080/welcome .jsp),以及一个网络服务,但我想这并不重要,因为两者都只是作为来自 Tomcat 的请求提供的。我猜这意味着我必须将 Tomcat 更改为在端口 80 上运行,并且其他应用程序将可以通过此端口访问 Web 服务。或者我可以让 Tomcat 在端口 8080 上运行,并将 Apache 放在 Tomcat 前面的端口 80 上,Apache 将为 Tomcat 提供请求。对吗?

最佳答案

我会将通用业务逻辑放在“业务服务”中,并且:

  1. 从您的网络应用程序中的操作调用它
  2. 将其公开为其他应用程序的网络服务

对我来说,这种方法没有什么不好的,而且用 Spring 实现它非常简单和干净。实际上,我会发现仅将此业务服务公开为 Web 服务并从 Web 应用程序调用它很丑陋(而且我很确定这在 Web 应用程序端实现起来会更加复杂)。您有不同的“使用上下文”,只需为它们公开足够的接口(interface)即可。

(编辑:我正在回答作为下面评论发布的 OP 的问题)

您可以在同一个 WAR 中部署 Web 应用程序和 Web 服务(但这只是一种部署选择,您可以将业务逻辑打包在一个 JAR 中并在多个 WAR 中使用它)。关于端口,我不确定是否理解您的问题。传统上,您将在应用程序服务器前面使用 Web 服务器(例如 Apache)。如果你不这样做,你总是可以选择在端口 80 上运行你的应用程序服务器。实际上,在这两种情况下你都可以自由使用你想要的任何端口。使用端口 80 很方便。

是的,您的更新是正确的。

关于java - 创建用于内部应用程序的 Web 服务并将其公开给其他人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1647239/

相关文章:

java - 是否有静态类型和可变长度的 Java 数组/列表

Java:每隔几秒创建一次文件

java - 如何在 Java POJO 中使用 @OPTIONS 注释调用 JAX-RS Web 服务进行模型化

c# - 更新服务引用在 WCF 中不起作用

java - BindingResult 不起作用

java - 使用默认模板的 spring mvc 出现 404 错误

使用 SecretKeyFactory 生成 secret 时,Java 字节数组到字符串必须等于 python 字节数组字符串

Java递归方法

eclipse - 如何在 Eclipse 中运行/调试 Java Web 服务项目

java - 如何使用Spring的i18n机制?