我目前有一个 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
在此示例中,我将部署相同的服务 3 次,它们的文件夹中只有不同的配置文件,这意味着 service.xml 对于所有服务都是相同的。如果我提供了一个服务名称,这将不起作用,因为服务名称需要在所有 Axis2 服务中都是唯一的。
不,我想在上述提供的服务中添加第二个服务,这意味着每个服务都包含一个服务组,其中至少有两个服务。在这种情况下,Axis2 需要服务的名称,我希望它是通用的,并且在所有服务中都相同,因为我不想为每个部署的服务更改 service.xml。我想将我的服务称为“上传”、“下载”等。
默认情况下,Axis2 无法部署具有相同命名服务的三个服务,但我可以做的是实现接口 ServiceLifeCycle 并将 startUp 方法中的服务名称更改为唯一的名称,例如通过生成随机 UUID 或其他方式。这样,服务名称就不再是确定性的了,因此我更喜欢在 service.xml 中配置的服务名称前面加上服务部署文件夹的命名方案。类似于以下内容:
- 服务1.上传
- 服务1.下载
- 服务2.上传
- 服务2.下载 [...]
似乎我无法在它的 startUp 方法调用期间获取服务的部署文件夹,因此您知道部署由具有通用命名服务的服务组组成的服务的任何其他方法吗?请记住,总体目标是约定优于配置,我只是不想为每个部署的服务更改 service.xml,而只是将服务部署到不同的唯一文件夹中。
谢谢!