【问题标题】:how to provide API for our system [closed]如何为我们的系统提供 API [关闭]
【发布时间】:2009-05-14 18:59:38
【问题描述】:

我在 Web 服务或 API 方面没有太多经验。

我们有一个基于 Oracle->Sun App Server->Java->Struts2 框架的网站。我们需要为我们的系统提供 API。此 API 将被我们系统之外的其他系统使用。 API 仅适用于我们数据库中的一个简单 SP。另一个系统不想连接到我们的数据库来获得对 SP 的访问权限,而是将 API 作为“网络服务”

能否请社区提供一些关于如何解决此问题的信息? API 会放在我们的网络服务器上吗?那是其他系统将如何连接到它的方式吗?以及如何创建公共 API?

【问题讨论】:

  • 用户能够与 servlet 进行通信就足够了吗,还是他们想要一个 Web 服务接口?
  • 能够与 servlet 通信应该没问题。我不确定您所说的网络服务接口到底是什么意思。但只要他们不必在他们这边安装东西就可以了。

标签: java api


【解决方案1】:

您需要考虑的一些事情是:

您可能想看看https://jersey.dev.java.net/

看看另一家公司是如何做到的也会有所帮助,请查看http://www.flickr.com/services/api/ 了解一些想法。

【讨论】:

    【解决方案2】:

    如果您使用的是 Sun App Server,将 EJB 公开为带有 @WebService 标记的 Web 服务,然后让该 EJB 调用存储过程并返回数据应该是相当简单的。应用服务器为您提供了发布 WSDL 的工具,他们将使用该工具来了解如何调用您的 API。

    话虽如此,在 50,000 英尺处听起来很容易,但处理所有细节确实很痛苦。首先,安全性如何?其次,是否真的需要 WebServices,或者是否有更好的更明显的通信机制,例如(至少)REST,如果不是一些简单的 servlet 通信。最难的部分:您将以什么格式返回这个结果集?

    无论如何,您可能会在这里处理一些政治问题(“什么,您不知道如何提供 Web 服务,每个人都知道,等等”),因此可能有点难以探究要求。好消息是,在最新的 Java EE 中发布 Web 服务非常简单(比使用 Web 服务容易得多)。坏消息是细节将是一个杀手。例如,我见过有经验的 Web 服务开发人员在命名空间问题上花费数小时。

    【讨论】:

    • 谢谢。我有几个问题。如果将 EJB 公开为 Web 服务,该 EJB 是否也会放在 AppServer 上以供他们连接?我会尝试以某种方式提出要求,所以我听起来我不知道 web 服务 :) 另外,我发现了一些东西,展示了如何将 servlet 变成 web 服务 (netbeans.org/kb/55/websvc-jax-ws.html#Exercise_3_2)。
    • 是的,应用服务器将是托管 EJB 并使 Web 服务可用的服务器。它将完成所有繁重的工作,您只需一个带注释的类。
    • 您提供的链接用于使用 Web 服务。这意味着调用它,这就是您的客户/客户将要做的事情。您将创建一个网络服务,该页面的相关部分在这里:netbeans.org/kb/55/websvc-jax-ws.html#Exercise_1
    【解决方案3】:

    肥皂或休息或.. 是奖牌的一方面,取决于客户想要什么。 另一个(更)重要的是 api 设计本身。它应该是无状态的还是有状态的。客户端是位于同一个虚拟机(Appserver)中还是远程在同一个 LAN 中,甚至是在一个 Wan 中。 一旦通信通过线路,由于序列化,它会变慢。因此,您希望 API 方法一次获取更大(但不是太大)的数据块。

    或者换句话说,如果你不知道更多关于你想要做什么和需要做什么,你的问题就无法真正得到回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 2012-11-14
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 2014-02-19
      相关资源
      最近更新 更多