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

WSO2 API Manager 4.2.0 gateway-worker节点Docker启动失败求助

问题

使用WSO2 API Manager 4.2.0,通过Docker部署all-in-one实例节点和gateway-worker节点时,gateway-worker节点启动失败,wso2carbon.log中出现如下错误:

ERROR {org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]} - Exception starting filter [CaptchaFilter] java.lang.ClassNotFoundException: org.wso2.carbon.identity.captcha.filter.CaptchaFilter
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:534)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:515)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:149)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:251)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4609)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5248)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.wso2.carbon.tomcat.ext.service.ExtendedStandardService.startInternal(ExtendedStandardService.java:52)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.wso2.carbon.tomcat.internal.CarbonTomcat.start(CarbonTomcat.java:113)
        at org.wso2.carbon.tomcat.internal.ServerManager$1.run(ServerManager.java:167)
        at java.base/java.lang.Thread.run(Thread.java:833)

使用的Dockerfile:

FROM centos:latest
RUN mkdir -p <APIM_HOME>
RUN mkdir -p <JAVA_HOME>
COPY ./wso2am-4.2.0.zip <APIM_HOME>
COPY ./jdk-17_linux-x64_bin.tar.gz <JAVA_HOME>
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum install unzip -y
RUN yum install tar -y
RUN cd <APIM_HOME>/bin/ && ./profileSetup.sh -Dprofile=gateway-worker
RUN cd <JAVA_HOME>/java/ && tar -xvf jdk-17_linux-x64_bin.tar.gz
RUN rm -f <APIM_HOME>/repository/conf/deployment.toml
EXPOSE 8243 8280 9443
ENTRYPOINT ["/bin/bash", "-c", "<APIM_HOME>/bin/api-manager.sh -Dprofile=gateway-worker"]

deployment.toml配置:

[server]
hostname = "<HOSTNAME>"
node_ip = "<IP>"
offset=50
server_role = "gateway-worker"

[user_store]
type = "database_unique_id"

[super_admin]
username = "admin"
password = "admin"
create_admin_account = true

[database.shared_db]
type = "mysql"
url = "<DB_URL>"
username = ""
password = ""

[keystore.tls]
file_name =  "wso2carbon.jks"
type =  "JKS"
password =  "wso2carbon"
alias =  "wso2carbon"
key_password =  "wso2carbon"

[truststore]
file_name = "client-truststore.jks"
type = "JKS"
password = "wso2carbon"

[apim.sync_runtime_artifacts.gateway]
gateway_labels =["Default"]

# key manager implementation
[apim.key_manager]
service_url = "https://Node1:9483/services/"

# Traffic Manager configurations
[apim.throttling]
service_url = "https://Node1:9483/services/"
throttle_decision_endpoints = ["tcp://Node1:5712"]

[[apim.throttling.url_group]]
traffic_manager_urls=["tcp://Node1:9651"]
traffic_manager_auth_urls=["ssl://Node1:9751"]

解决建议

  • 补全安装包解压步骤:Dockerfile仅复制了压缩包到<APIM_HOME>,未执行解压命令,profileSetup.sh无法在未解压的目录下正常运行。添加解压命令:

    RUN cd <APIM_HOME> && unzip wso2am-4.2.0.zip && mv wso2am-4.2.0/* . && rm -rf wso2am-4.2.0 wso2am-4.2.0.zip
    

    确保profileSetup.sh在正确的APIM安装目录下执行。

  • 移除无用的过滤器配置:Gateway Worker节点不需要CaptchaFilter组件,找到<APIM_HOME>/repository/conf/tomcat/web.xml中CaptchaFilter的定义和映射,直接删除即可。

  • 保留默认deployment.toml基础配置:直接删除默认的deployment.toml会缺失gateway-worker必需的组件依赖配置,建议基于默认文件修改,而非完全替换。如果必须自定义,需添加专属配置:

    [apim.gateway]
    mode = "worker"
    
  • 配置Java环境变量:Dockerfile中仅解压了JDK,但未设置JAVA_HOME和PATH,添加以下命令:

    ENV JAVA_HOME=<JAVA_HOME>/java/jdk-17.0.x
    ENV PATH=$JAVA_HOME/bin:$PATH
    

    替换jdk-17.0.x为实际解压后的JDK目录名称。

  • 完善shared_db数据库配置:当前database.shared_db的username和password为空,需填写正确的数据库账号密码,确保gateway-worker能连接共享数据库加载必要配置。

内容的提问来源于stack exchange,提问作者Lilan Mihiranga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:48:10