Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中发布易于扩展的web服务?_Java_Web Services - Fatal编程技术网

如何在Java中发布易于扩展的web服务?

如何在Java中发布易于扩展的web服务?,java,web-services,Java,Web Services,以下问题是关于我在实习期间正在使用的web服务: 我需要用Java开发一个web服务,它公开不断发展的方法。这个web服务实际上调用另一个处理所有执行的web服务。将使用此web服务的客户端不一定是用Java编写的 始终存在的两种服务方法是:open和close。我们希望在web服务中公开的另一个方法是command方法,该方法将至少一个字符串(web服务调用的远程服务器上要执行的命令的名称)作为参数。例如,使用此服务的客户机将能够调用命令(“save”)和web服务将执行save命令 现在有一

以下问题是关于我在实习期间正在使用的web服务:

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

始终存在的两种服务方法是:
open
close
。我们希望在web服务中公开的另一个方法是
command
方法,该方法将至少一个字符串(web服务调用的远程服务器上要执行的命令的名称)作为参数。例如,使用此服务的客户机将能够调用
命令(“save”)
和web服务将执行save命令

现在有一个棘手的部分:我的老板希望我这样做,以便可以直接调用每个单独的命令(即save、print、exportToPdf-以及更多命令),而不必调用
命令
方法并将命令名作为字符串传递。但是,随着新命令的周期性添加,我们希望能够在文本/xml文件中列出这些命令(及其参数),并以某种方式使web服务将这些命令中的每一个作为web方法公开

我不确定上述情况是否清楚。下面是一个(模糊的)想法,我认为这可以做到:

  • Json RPC
  • 解析HTTP请求的URL,如果以
    open
    close
    command
    结尾,则执行这些方法。否则,检查它是否以text/xml文件中的一个命令名结尾,如果是,则调用该方法。例如,如果客户端试图通过
    http://myservice/open
    http://myservice/command
    ,则将执行这些方法。如果他们尝试
    http://myservice/othermethod
    然后在尝试调用其他web服务之前检查文本文件

  • Jax-WS
  • 我可以为
    打开
    关闭
    命令
    方法公开一个web服务。然后,我可以公开一个单独的web服务,其中只包含一个catch-all方法,该方法反过来只调用
    命令
    方法,并将命令名和参数作为参数传递。第二个web服务可以在不同的URL上访问(通过迭代命令列表并为每个命令使用不同的URL校准
    Endpoint.publish
    ),例如,
    http://myservice/specialmethod
    将调用此catch-all方法,该方法将依次调用
    命令(“specialmethod”)

    我已经把这个问题重读了好几遍,我真的不知道它有多清楚。如果不是,这里有一些更简单的问题:


    有没有一种方法可以在web服务中拥有一个全面的端点URL,这样,如果调用这个URL,就会执行一个特定的方法?是否可以在端点URL中使用通配符?

    是否强制使用“命令”方法?我怀疑随着API的增长,您最终将不得不对该方法进行大量维护。其他需求听起来像REST,您最大的问题是从数百个提供REST接口的框架中挑选一个。Spring框架可能有您想要的。用户界面是什么?他们会像在浏览器中一样输入URL吗?如果您有一个为命令提供按钮(或其他)的HTML页面,那么URL以及最终的服务器端调用是如何实现的问题是次要的。不,“command”方法不是强制性的,它只是存在的,因为现有的web服务(我必须创建的web服务将使用它)就是这样的作品这就像是通过消息调用方法(我想这就是它的调用)。我不知道用户界面是什么样子的。基本上,我正在编写的这个web服务将被编写客户端的开发人员使用,但不想调用现有的web服务,因为“命令”方法非常笨拙)我对服务器配置的经验有限,但我知道您可以在服务器配置方面做一些奇特的事情。这将是另一种隐藏实际服务器端实现的方法,不让它显示预期的URL。Apache包含
    RewriteRule
    configuration命令,该命令应允许您将URL的最后一部分转换为以command?text=$1结尾的URL参数。