我想把我的WAS应用程序从7.0.0.7升级到8.5。应用程序通常会部署,但只要我想访问它,我就会得到以下异常:
java.lang.AbstractMethodError: javax/servlet/ServletRequest.getDispatcherType()Ljavax /servlet/DispatcherTypeWAS8使用Servlet3.0容器,但它应该与我在应用程序中使用的2.4版本向后兼容。
我将类加载设置为最后一个父类,但仍然得到相同的错误。
Websphere正在调用自Servlet3.0以来可用的getDispatcherType()。为什么?
我使用以下web.xml头
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">发布于 2012-09-07 23:33:00
您是否可能在应用程序中包含包含标准Servlet的JAR文件?你能列出你耳朵里包含的所有JAR文件吗?
编辑了来自asker的以下信息:您提到您正在包装请求对象。我猜,当您编译代码时,您是针对Servlet2.4类进行编译的。这就是编译通过OK的原因(您不必实现getDispatcherType)。稍后,在运行时,您将获得AbstractMethodError,因为包装器实现不包含当前需要的getDispatcherType方法的实现。
解决这个问题的唯一方法(我认为)仍然是针对Servlet3.0类进行编译。WebSphere 8.5总是假定请求是Servlet3.0,没有办法绕过它。
为什么不能针对Servlet3.0类进行编译?
https://stackoverflow.com/questions/12303736
复制相似问题