Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 多次使用通用服务名称部署Axis2服务组_Java_Web Services_Deployment_Axis2 - Fatal编程技术网

Java 多次使用通用服务名称部署Axis2服务组

Java 多次使用通用服务名称部署Axis2服务组,java,web-services,deployment,axis2,Java,Web Services,Deployment,Axis2,我目前有一个Axis2 web服务,它只有一个未命名的服务,Axis2会使用.aar文件或服务目录的名称自动为其生成一个服务名称,具体取决于我是否部署该服务。这样,我就可以在Axis2的服务目录的不同服务文件夹下使用一些不同的配置文件部署相同的服务,而无需配置不同的服务名称或其他。如下所示: […]axis2\WEB-INF\services\service1\META-INF\service.xml […]axis2\WEB-INF\services\service2\META-INF\se

我目前有一个Axis2 web服务,它只有一个未命名的服务,Axis2会使用.aar文件或服务目录的名称自动为其生成一个服务名称,具体取决于我是否部署该服务。这样,我就可以在Axis2的服务目录的不同服务文件夹下使用一些不同的配置文件部署相同的服务,而无需配置不同的服务名称或其他。如下所示:

  • […]axis2\WEB-INF\services\service1\META-INF\service.xml
  • […]axis2\WEB-INF\services\service2\META-INF\service.xml
  • […]axis2\WEB-INF\services\service3\META-INF\service.xml
在本例中,我将使用文件夹中的不同配置文件部署同一服务三次,这意味着service.xml对于所有服务都是相同的。如果我提供了一个服务名称,这将不起作用,因为服务名称在所有Axis2服务中都必须是唯一的

不,我想在上面提供的服务中添加第二个服务,这意味着每个服务由一个至少包含两个服务的服务组组成。在本例中,Axis2需要服务的名称,我希望该名称是通用的,并且在所有服务中都是相同的,因为我不想为每个部署的服务更改service.xml。我想把我的服务称为“上传”、“下载”等

默认情况下,Axis2无法使用相同的命名服务部署三个服务,但我可以实现接口ServiceLifeCycle,并将启动方法中的服务名称更改为唯一的名称,例如,通过生成随机UUID或其他方式。这样,服务名称就不再是确定性的了,因此我更喜欢在service.xml中配置的服务名称前面加上服务部署文件夹的命名方案。如下所示:

  • 服务1.上传
  • 服务1.下载
  • 服务2.上传
  • 服务2.下载 [……]
似乎我是,因此您知道部署由具有通用命名服务的服务组组成的服务的其他方法吗?请记住,总体目标是约定优先于配置,我不想为每个已部署的服务更改service.xml,只想将服务部署到不同的、唯一的文件夹中


谢谢

可以使用AxisService.getClassLoader().getResource()访问服务文件夹中的文件,并获得服务文件夹的绝对路径。根据所访问的文件,您可以通过获取所访问文件的父级和一些约定,简单地确定服务的部署文件夹。如果您有部署文件夹,则可以使用其名称和服务组中配置的服务名称,将其设置为生命周期类的启动方法中的新服务名称。由于部署文件夹在Axis2的整个服务文件夹中都必须是唯一的,因此您对所有服务都具有唯一性,并且可以使用您想要的任何约定来命名部署文件夹。使用此命名约定,web服务客户端可以访问该服务

重要的部分只是在lifecycle类的startUp方法中更改服务名称,因为服务名称只需要在之后是唯一的,并使用类加载器获取到服务目录的绝对路径