当前位置: 首页 > 知识库问答 >
问题:

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

郭志泽
2023-03-14

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

  • [...]axis2\WEB-INF\service\service1\META-INF\service.xml
  • [...]axis2\WEB-INF\service\service2\META-INF\service.xml
  • [...]axis2\WEB-INF\service\service3\META-INF\service.xml

在本例中,我将使用文件夹中的不同配置文件部署同一服务三次,这意味着service.xml对于所有服务都是相同的。如果我提供了一个服务名称,这将不起作用,因为服务名称在所有Axis2服务中都必须是唯一的。

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

默认情况下,Axis2不能部署具有相同命名服务的三个服务,但是我可以做的是实现接口ServiceLifeCycle,并将starUp方法中的服务名称更改为唯一的名称,例如通过生成随机UUID或其他方式。通过这种方式,服务名称不再是不确定的,因此我更喜欢类似于服务部署文件夹的命名方案,该文件夹位于service.xml.中配置的服务名称的前面。

  • 服务1.上传
  • 服务1.下载
  • 服务2.上传
  • 服务2.下载[...]

似乎我无法在启动方法调用期间获取服务的部署文件夹,因此您知道部署由具有通用命名服务的服务组组成的服务的任何其他方法吗?请记住,总体目标是约定而不是配置,我只是不想为每个部署的服务更改service.xml,而只是将服务部署到不同的唯一文件夹中。

谢谢

共有1个答案

公良泰宁
2023-03-14

可以使用AxisService.getClassLoader(). getResources()访问服务文件夹中的文件,并获得服务文件夹的绝对路径。根据所访问的文件,您可以通过获取所访问文件的父级和一些约定来简单地确定服务的部署文件夹。如果您有部署文件夹,您可以在服务组中使用它的名称和配置的服务名称,将其设置为生命周期类的starUp方法中的新服务名称。由于部署文件夹在Axis2的服务文件夹中已经需要是唯一的,因此您对所有服务都有独特的东西,并且可以使用您想要的任何约定来命名部署文件夹,使用此命名约定为Web服务客户端访问服务。

重要的部分只是更改生命周期类的starUp方法中的服务名称,因为服务名称只需要在之后是唯一的,并且使用类加载器获得一个到一个服务目录的绝对路径。

感谢Kenster使用类加载器。

 类似资料:
  • 本文档用来说明通过预编译好的安装包来安装并运行基于 MySQL/MariaDB 的 Seafile 服务器。(MariaDB 是 MySQL 的分支) 下载 到下载页面下载最新的服务器安装包. 部署和目录设计 假设你公司的名称为 haiwen, 你也已经下载 seafile-server_1.4.0_* 到你的 home 目录下。 我们建议这样的目录结构: mkdir haiwen mv seaf

  • 本文档详细介绍如何使用预编译好的软件包来安装和运行 Seafile 服务器。 下载 到下载页面下载最新的服务器安装包. 部署和目录结构 注意: 如果你把 Seafile 文件放在一个外部存储的目录里(比如NFS,CIFS),你应该使用 MySQL 而不是 SQLite 来作为数据库。请参考下载和安装Seafile服务器(使用MySQL)。 假设你公司的名称为”haiwen”,你也已经下载 seaf

  • 部署服务 我们使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点运行。 新建服务 现在我们在上一节创建的 Swarm 集群中运行一个名为 nginx 服务。 $ docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine 现在我们使用浏览器,输入任意节点 IP

  • 服务端部署 1. 源码部署 CAT安装环境 Linux 2.6以及之上(2.6内核才可以支持epoll),线上服务端部署请使用Linux环境,Mac以及Windows环境可以作为开发环境,美团点评内部CentOS 6.5 Java 6,7,8,服务端推荐使用jdk7的版本,客户端jdk6、7、8都支持 Maven 3及以上 MySQL 5.6,5.7,更高版本MySQL都不建议使用,不清楚兼容性

  • 部署模式 SOFARegistry 支持两种部署模式,分别是集成部署模式及独立部署模式,本文将介绍最简单的单节点集成部署模式,更多更详细的部署模式介绍可以查看 部署文档。 部署步骤 1. 下载源码或者安装包 下载源码方式 git clone https://github.com/sofastack/sofa-registry.git cd sofa-registry mvn clean packa

  • 关于aiohttp服务器部署,这里有以下几种选择: 独立的服务器。 使用nginx, HAProxy等反向代理服务器,之后是后端服务器。 在反向代理之后在部署一层gunicorn,然后才是后端服务器。 独立服务器 只需要调用aiohttp.web.run_app(),并传递aiohttp.web.Application实例即可。 该方法最简单,也是在比较小的程序中最好的解决方法。但该方法并不能完全