我对Webservices或API没有多少经验。
我们有一个基于Oracle-> Sun App Server-> Java-> Struts2框架的网站。我们需要为我们的系统提供API。该API将由我们系统之外的其他系统使用。 API仅适用于我们数据库中的简单SP。另一个系统不希望连接到我们的数据库以获取对SP的访问权限,而是将API作为“webservice”进行访问
请社区了解如何解决这个问题? API会被放在我们的网络服务器上吗?是其他系统将如何连接到它?以及如何创建公共API?
答案 0 :(得分:2)
您需要考虑的一些事情是:
您可能需要查看https://jersey.dev.java.net/。
了解另一家公司如何做到这一点也很有帮助,请查看http://www.flickr.com/services/api/了解一些想法。
答案 1 :(得分:1)
如果您正在使用Sun App Server,那么将EJB作为具有@WebService标记的Web服务公开,然后让该EJB调用Stored Proceedure并返回数据应该是相当简单的。应用服务器为您提供了发布WSDL的工具,这是他们将用来了解如何为您调用API的工具。
话虽如此,在50,000英尺的声音听起来很容易处理所有细节真的很痛苦。首先,安全性如何?其次,WebServices是否真的需要,或者是否存在更明显的更好的通信机制,例如(至少)REST,如果不是一些简单的servlet通信。最困难的部分:您将以什么格式返回此结果集?
无论如何,你可能会在这里处理一些政治足球(“什么,你不知道如何做网络服务,每个人都知道等等”)所以探讨这个问题可能有点困难。要求。好消息是,在最新的Java EE中发布Web服务非常简单(比使用它更容易)。坏消息是细节将成为杀手。例如,我见过有经验的Web服务开发人员在名称空间问题上花费数小时。
答案 2 :(得分:0)
肥皂或休息或..是奖牌的一面,取决于客户想要什么。 另一个(更重要的)是api设计本身。它应该是无国籍的还是有状态的。客户端是否位于相同的VM(Appserver)中,或者位于同一LAN中甚至是Wan中的远程客户端。 一旦通信通过线路,由于序列化它就会变慢。因此,您希望API方法一次获得更大(但不是太大)的数据块。
或换句话说,如果不了解更多关于你想要和需要做的事情,你的问题就无法真正得到解答。