You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook Pro M3运行WSO2 Docker镜像失败求助

WSO2 MI Docker镜像启动失败:找不到Axis2HttpTransportSender类

问题背景

我使用MacOS Apple Silicon平台的WSO2 Integration Studio 8.2.0(内置WSO2 Micro Integrator 4.2.0),为示例项目构建Docker镜像后,运行时出现Carbon初始化失败的问题。

运行镜像的命令及错误日志如下:

pritish@172-117-001-070 ~ % export DOCKER_DEFAULT_PLATFORM=linux/amd64      
pritish@172-117-001-070 ~ % docker run -p 8290:8290 -t healthcheck:1.0.0-SNAPSHOT

错误日志:

[2024-04-02 18:09:33,336]  INFO {EventAdminConfigurationNotifier} - Logging configuration changed. (Event Admin service unavailable - no notification sent).
[2024-04-02 18:09:34,482] FATAL {CoreServerInitializer} - WSO2 Carbon initialization Failed org.apache.axis2.AxisFault: Exception occured while loading the Axis configuration from /home/wso2carbon/wso2mi-4.0.0/conf/axis2/axis2.xml
    at org.wso2.micro.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:181)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)
    at org.wso2.micro.core.CarbonConfigurationContextFactory.createNewConfigurationContext(CarbonConfigurationContextFactory.java:66)
    at org.wso2.micro.integrator.core.internal.CoreServerInitializer.initializeCarbon(CoreServerInitializer.java:208)
    at org.wso2.micro.integrator.core.internal.CoreServerInitializer.initMIServer(CoreServerInitializer.java:125)
    at org.wso2.micro.integrator.core.internal.Activator.start(Activator.java:82)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365)
    at org.eclipse.osgi.container.Module.doStart(Module.java:598)
    at org.eclipse.osgi.container.Module.start(Module.java:462)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820)
    at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)
Caused by: org.apache.axis2.deployment.DeploymentException: org.apache.synapse.transport.netty.sender.Axis2HttpTransportSender cannot be found by axis2_1.6.1.wso2v63
    at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:718)
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:125)
    at org.wso2.micro.core.CarbonAxisConfigurator.populateAxisConfiguration(CarbonAxisConfigurator.java:312)
    at org.wso2.micro.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:179)
    ... 23 more
Caused by: java.lang.ClassNotFoundException: org.apache.synapse.transport.netty.sender.Axis2HttpTransportSender cannot be found by axis2_1.6.1.wso2v63
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:512)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:423)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:415)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:155)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:315)
    at org.apache.axis2.util.Loader.loadClass(Loader.java:261)
    at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java

解决步骤

1. 对齐MI版本

日志显示镜像内使用的是wso2mi-4.0.0,但本地Integration Studio内置的是MI 4.2.0,版本不匹配会导致依赖缺失:

  • 修改项目Dockerfile,将基础镜像改为wso2/wso2mi:4.2.0,确保与本地环境版本一致。

2. 修复Axis2配置依赖

若版本对齐后仍报错,检查传输发送器配置:

  • 打开项目内conf/axis2/axis2.xml,找到<transportSender>节点,确认org.apache.synapse.transport.netty.sender.Axis2HttpTransportSender对应的synapse-transport-netty_*.jar存在于镜像的wso2mi-4.2.0/lib目录。
  • 若依赖缺失,手动添加该jar包到项目资源目录,构建镜像时同步到容器对应路径。

3. 优化Apple Silicon平台Docker配置

当前强制使用linux/amd64架构可能存在兼容性问题:

  • 尝试使用WSO2官方ARM64架构镜像wso2/wso2mi:4.2.0-arm64,无需设置DOCKER_DEFAULT_PLATFORM环境变量,直接构建运行。

4. 重新构建验证

  • 清理旧镜像:docker rmi healthcheck:1.0.0-SNAPSHOT
  • 重新构建镜像,确保所有依赖和配置文件正确同步到容器内。
  • 运行镜像时根据选择的架构镜像,决定是否保留DOCKER_DEFAULT_PLATFORM变量。

内容的提问来源于Stack Exchange,提问作者Pritish Mohanty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:14:53