关于Java:创建供内部应用程序使用的Web服务并将其公开给其他人

Creating a web service for use in an internal application and exposing it to others

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

更新资料

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


我将通用的业务逻辑放在"业务服务"中,并且:

  • 通过网络应用中的操作调用它
  • 将其作为其他应用程序的Web服务公开
  • 对我来说,这种方法没有什么坏处,并且使用Spring来实现它非常容易和干净。实际上,我发现将这种业务服务仅公开为Web服务并从Web应用程序中调用是很丑陋的(而且我很确定,在Web应用程序端实现起来会更加复杂)。您有不同的"使用上下文",只需为它们提供适当的接口即可。

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

    您可以在同一WAR中部署Web应用程序和Web服务(但这只是部署选择,您可以将业务逻辑打包在JAR中,并在多个WAR中使用它)。关于端口,我不确定您的问题。传统上,您将在应用程序服务器之前使用网络服务器(例如apache)。如果不这样做,则始终可以选择在端口80上运行应用程序服务器。实际上,在两种情况下,您都可以自由使用所需的任何端口。使用端口80十分方便。

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