BEA-101165 Could not load user defined filter in web.xml: org.apache.struts2.dispatcher.FilterDispat

最近在写一个struts2 应用,修改struts.xml是,后台报错:

BEA-101165 Could not load user defined filter in web.xml: org.apache.struts2.dispatcher.FilterDispatcher

struts.xml代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE struts PUBLIC
         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
         "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>

	<!-- 该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。-->
	<constant name="struts.custom.i18n.resources" value="globalMessages" />

	<!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />

	<!-- 该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。开发阶段设置true 生产模式设置false -->
	<constant name="struts.i18n.reload" value="true" />

	<!--该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。 开发阶段最好true 生产模式设置false
	<constant name="struts.configuration.xml.reload" value="true" />-->

	<!--对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。
		对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。-->
	<constant name="struts.dispatcher.parametersWorkaround " value="true" />

	<!-- 设置浏览器是否缓存静态内容,默认值为true,开发阶段最好false 生产模式最好设置true-->
	<constant name="struts.serve.static.browserCache " value="false" />

	<!-- 开发模式下设为true,这样可以打印出更详细的错误信息 生产模式设置false
	<constant name="struts.devMode" value="true" />-->

	<!-- 如果前面的在获得一个有效的ActionMapper或Uri失败,一个复合的映射器能委托一系列的ActionMapper -->
	<constant name="struts.mapper.composite" value="struts" />

	<!-- 标识默认的jar包-->
	<constant name="struts.convention.default.parent.package" value="default-package" />

	 <!-- 指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring -->
	<constant name="struts.objectFactory" value="spring"/>

	<include file="struts-hello.xml"/>
	<include file="struts-json.xml"/>

 </struts>

代码中,我注释了两个常量,struts.configuration.xml.reload、struts.devMode,重启weblogic,后台未报错。至于为什么这两个常量设置时,后台报错,本人正在研究,后续更新。
<Sep 5, 2025 5:57:13,676 PM CST> <Error> <HTTP> <BEA-101165> <Could not load user defined filter in web.xml: com.yinhai.hfdata.common.core.mvc.WebSecurityRequestBlackListFilter. java.lang.AbstractMethodError at weblogic.servlet.internal.FilterManager$FilterInitAction.run(FilterManager.java:400) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:344) at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203) at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71) Truncated. > Sep 05, 2025 5:57:14 PM org.glassfish.jersey.server.ApplicationHandler bindProvidersAndResources WARNING: Component of class interface org.keycloak.admin.client.resource.ServerInfoResource cannot be instantiated and will be ignored. <Sep 5, 2025 5:57:14,018 PM CST> <Warning> <org.glassfish.jersey.server.ApplicationHandler> <BEA-000000> <Component of class interface org.keycloak.admin.client.resource.ServerInfoResource cannot be instantiated and will be ignored.> Sep 05, 2025 5:57:14 PM org.glassfish.jersey.server.ApplicationHandler bindProvidersAndResources WARNING: Component of class interface org.keycloak.admin.client.resource.RealmsResource cannot be instantiated and will be ignored. <Sep 5, 2025 5:57:14,019 PM CST> <Warning> <org.glassfish.jersey.server.ApplicationHandler> <BEA-000000> <Component of class interface org.keycloak.admin.client.resource.RealmsResource cannot be instantiated and will be ignored.>
最新发布
09-06
### 解决 WebLogic 无法加载自定义过滤器出现 `java.lang.AbstractMethodError` 的问题 `java.lang.AbstractMethodError` 通常是由于方法签名不匹配或者类版本不一致导致的。以下是一些可能的解决方案: #### 1. 检查类版本一致性 确保在 WebLogic 服务器中使用的所有库版本一致。不同版本的库可能会导致方法签名不匹配。可以检查项目的依赖管理文件(如 `pom.xml` 或 `build.gradle`),确保所有相关库的版本一致。 #### 2. 检查方法实现 确保 `com.yinhai.hfdata.common.core.mvc.WebSecurityRequestBlackListFilter` 类实现了所有抽象方法。可以查看该类是否实现了 `javax.servlet.Filter` 接口的所有方法,示例代码如下: ```java import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import java.io.IOException; public class WebSecurityRequestBlackListFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化代码 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 过滤逻辑 chain.doFilter(request, response); } @Override public void destroy() { // 销毁代码 } } ``` #### 3. 检查类加载顺序 WebLogic 有自己的类加载机制,可能会导致类加载顺序混乱。可以尝试在 `weblogic.xml` 文件中配置类加载顺序,示例如下: ```xml <weblogic-web-app> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> </weblogic-web-app> ``` ### 解决 Jersey 中 `ServerInfoResource` 和 `RealmsResource` 组件无法实例化的问题 #### 1. 检查依赖库 确保项目中包含了正确版本的 Keycloak 管理客户端库。可以在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-admin-client</artifactId> <version>18.0.2</version> </dependency> ``` #### 2. 检查实例化方式 确保使用正确的方式实例化 `ServerInfoResource` 和 `RealmsResource`。示例代码如下: ```java import org.keycloak.admin.client.Keycloak; import org.keycloak.admin.client.resource.RealmsResource; import org.keycloak.admin.client.resource.ServerInfoResource; public class KeycloakExample { public static void main(String[] args) { Keycloak keycloak = Keycloak.getInstance( "http://localhost:8080/auth", "master", "admin", "admin", "admin-cli" ); RealmsResource realmsResource = keycloak.realms(); ServerInfoResource serverInfoResource = keycloak.serverInfo(); } } ``` #### 3. 检查权限和配置 确保 Keycloak 服务器的配置正确,并且客户端有足够的权限访问 `ServerInfoResource` 和 `RealmsResource`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daxiang12092205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值