以下问题适用于我在实习期间工作的网络服务:
我需要用Java开发一个Web服务,它公开了不断发展的方法。此Web服务实际上调用另一个处理所有执行的Web服务。将使用此Web服务的客户端不一定用Java编写。
始终存在的两种服务方法有:open
和close
。我们要在Web服务中公开的另一种方法是command
方法,该方法至少需要一个String(要在Web服务调用的远程服务器上执行的命令的名称)参数。因此,例如,使用此服务的客户端将能够调用command("save");
,并且Web服务将执行save命令。
现在这里是一个棘手的部分:我的老板希望我这样做,以便可以直接调用每个单独的命令(即save,print,exportToPdf - 以及更多),而无需调用{{ 1}}方法并将命令的名称作为String传递。但是,由于定期添加新命令,我们希望能够在text / xml文件中只列出这些命令(及其参数)的列表,并以某种方式使Web服务将这些命令中的每一个都公开为网络方法。
我不确定上述内容是否清楚。这是一个(含糊的)我认为可以做到的想法:
解析HTTP请求的URL,如果它以
command
,open
或close
结尾,则执行这些方法。否则,检查它是否以text / xml文件中的某个命令名称结尾,如果是,则调用该方法。例如,如果客户端尝试通过command
或http://myservice/open
使用Web服务,则将执行这些方法。如果他们尝试http://myservice/command
,则会在尝试调用其他Web服务之前检查文本文件。
我可以为
http://myservice/othermethod
,open
和close
方法公开一个网络服务。然后我可以公开一个单独的Web服务,它只包含一个catch-all方法,该方法只调用command
方法并将命令名和参数作为参数传递。可以通过各种URL访问第二个Web服务(通过遍历命令列表并使用不同的URL为command
加密),例如,Endpoint.publish
将调用此catch-all方法,然后调用http://myservice/specialmethod
。
我现在已经多次重读这个问题了,我真的不确定它有多清楚。如果不是,这里有一些更简单的问题:
是否有办法在Web服务中拥有一个包含所有端点的URL,这样如果调用此URL,则会执行特定方法?是否可以在端点URL中使用通配符?