2017-10-13 58 views
0

在技术面试中,我被问到了这个问题的一个集成实习生角色。从客户角度访问SOAP服务URL

他正在深入了解SOAP Web服务。

问题)。请考虑您正在通过SOAP将Web服务公开给客户端。 当您检查它时,通过其提供服务的URL已启动并正在运行。 但客户端有问题,他无法访问您的Web服务。 您将如何解决此问题?

我的回答是:

我会首先检查客户端URL是试图访问该服务是正确的。 将检查.wsdl文件:端口,绑定&将检查一次是否向URL发送SOAP请求,我是否通过SOAP UI在本地接收SOAP响应。 如果我得到错误,将根据我得到的错误进行故障排除:如页面未找到,空例外等。

我觉得他还在期待别的一点。他暗示说在哪个注册表中你将检查所有已托管的Web服务(我猜这是一个很大的生产支持问题:P)

我告诉我可能会查看UDDI注册表,但不确定这个。

请让我知道你的意见可能是一个正确的方法?

回答

1

Apache jUDDI PMC在这里。是的,可以使用UDDI来验证客户端是否指向正确的位置,假设客户端知道UDDI服务器及其注册的位置以及客户端知道在UDDI服务器上查询什么内容,并且UDDI查询是该UDDI查询的一部分客户的正常工作流程。这是很多假设,但肯定是可行的。

大部分时间,端点都在一个配置文件的某个地方或某个白痴硬编码它。

这就是说,这个我去列出检查SOAP服务连接(从客户的角度来看)的主机名在URL

  • ping远程主机
  • HTTP GET到

    • DNS解析SOAP服务的URL +?wsdl(这通常是有效的)。这也是验证SSL连接的好时机。
    • 您还可以解析WSDL文档,假设返回一个用于标识端点URL的文档。
    • 最后如果这一切正常,执行服务。 HTTP 200是通用的一个积极的迹象

    编辑: 另一种替代的方法是实现每个SOAP服务,简单的返回真/假,回答这个问题:“我是开了一个非常简单的API(WSDL法)商业?”。这种方法将提供一种标准化的方法来通过测试外部依赖性(数据库和什么)来识别服务是否可用。

  • +0

    感兴趣的投入。不过,我需要澄清你分享的这些观点。'端点在某个配置文件中或某个白痴被硬编码':你在说什么配置文件,你能具体吗? &'HTTP GET到SOAP服务的URL +?wsdl(通常这会工作)。这也是验证SSL连接的好时机':因此,使用get()调用我试图在URL中打开wsdl文件。那么我们可以从中得出什么结论呢? –

    +0

    在开发与远程Web服务交互的软件时,该服务的位置必须存储在某个位置。根据不同的语言,它可能是.config文件(.net),.properties文件(java)或其他任何东西。否则,它是硬编码。如果URL更改会发生什么? – spy

    +0

    'HTTP GET GET to the URL of SOAP service +?wsdl'。大多数web服务框架都是通过反射创建一个wsdl文档,如果?wsdl响应,它很可能会访问它的服务。告诉你服务需要的资源是否在线,例如数据库 – spy