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

WebSphere 9部署Crnk应用Servlet.init()两次调用报SRVE0271E错误咨询

问题原因

该现象是WebSphere Web容器的默认Servlet加载逻辑和Tomcat存在差异导致的:第一次init是过滤器链处理前WAS预加载Servlet触发,第二次是过滤器链处理完成后正式处理请求时再次触发初始化,两次初始化状态冲突就会抛出SRVE0271E错误。

可用解决方法

方法1:修改Web容器自定义属性(最适配当前场景的配置方案)

这是WAS专门针对这类init重复调用问题提供的官方配置项,操作步骤如下:

  • 登录WebSphere集成解决方案控制台,进入路径:服务器 > 服务器类型 > WebSphere Application Server,点击部署该应用的目标服务器名称
  • 在容器设置分类下选择Web容器,点击右侧的自定义属性
  • 点击新建,添加如下属性:
    • 名称:com.ibm.ws.webcontainer.invokeFiltersAfterServletLoaded
    • 值:false
  • 保存配置,同步节点后重启对应服务器即可生效。

方法2:配置Servlet启动时加载

避免请求触发时才初始化Servlet,从根源上规避重复加载问题:
在应用的web.xml中对应Crnk Servlet的配置段添加<load-on-startup>1</load-on-startup>配置,数值越小启动加载优先级越高,示例配置如下:

<servlet>
    <servlet-name>SimpleCrnkServlet</servlet-name>
    <servlet-class>xxx.xxx.SimpleCrnkServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

方法3:排查重复Servlet配置

WebSphere对重复Servlet定义的处理逻辑和Tomcat不同,若你同时通过@WebServlet注解和web.xml两种方式定义了同一个Servlet,会生成两个独立的ServletWrapper实例,就会触发两次init调用,删掉其中一种重复配置即可。

内容的提问来源于stack exchange,提问作者Mariusz W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:54:03