如何使用Java发布易于扩展的Web服务?

时间:2014-07-02 13:52:05

标签: java web-services

以下问题适用于我在实习期间工作的网络服务:

我需要用Java开发一个Web服务,它公开了不断发展的方法。此Web服务实际上调用另一个处理所有执行的Web服务。将使用此Web服务的客户端不一定用Java编写。

始终存在的两种服务方法有:openclose。我们要在Web服务中公开的另一种方法是command方法,该方法至少需要一个String(要在Web服务调用的远程服务器上执行的命令的名称)参数。因此,例如,使用此服务的客户端将能够调用command("save");,并且Web服务将执行save命令。

现在这里是一个棘手的部分:我的老板希望我这样做,以便可以直接调用每个单独的命令(即save,print,exportToPdf - 以及更多),而无需调用{{ 1}}方法并将命令的名称作为String传递。但是,由于定期添加新命令,我们希望能够在text / xml文件中只列出这些命令(及其参数)的列表,并以某种方式使Web服务将这些命令中的每一个都公开为网络方法。

我不确定上述内容是否清楚。这是一个(含糊的)我认为可以做到的想法:

  1. Json RPC
  2.   

    解析HTTP请求的URL,如果它以commandopenclose结尾,则执行这些方法。否则,检查它是否以text / xml文件中的某个命令名称结尾,如果是,则调用该方法。例如,如果客户端尝试通过commandhttp://myservice/open使用Web服务,则将执行这些方法。如果他们尝试http://myservice/command,则会在尝试调用其他Web服务之前检查文本文件。

    1. JAX-WS
    2.   

      我可以为http://myservice/othermethodopenclose方法公开一个网络服务。然后我可以公开一个单独的Web服务,它只包含一个catch-all方法,该方法只调用command方法并将命令名和参数作为参数传递。可以通过各种URL访问第二个Web服务(通过遍历命令列表并使用不同的URL为command加密),例如,Endpoint.publish将调用此catch-all方法,然后调用http://myservice/specialmethod

      我现在已经多次重读这个问题了,我真的不确定它有多清楚。如果不是,这里有一些更简单的问题:

      是否有办法在Web服务中拥有一个包含所有端点的URL,这样如果调用此URL,则会执行特定方法?是否可以在端点URL中使用通配符?

0 个答案:

没有答案