Websphere 8迁移 - AbstractMethodError:javax / servlet / ServletRequest.getDispatcherType

时间:2012-09-06 15:44:59

标签: migration websphere

我想将我的Web应用程序从WAS 7.0.0.7升级到WAS 8.5。应用程序正常部署,但只要我想访问它,我就会遇到以下异常:

java.lang.AbstractMethodError: javax/servlet/ServletRequest.getDispatcherType()Ljavax /servlet/DispatcherType

WAS 8使用Servlet 3.0容器,但它应该与我在我的应用程序中使用的版本2.4向后兼容。

我将类加载设置为PARENT LAST并仍然得到相同的错误。

Websphere正在调用自Servlet 3.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">

1 个答案:

答案 0 :(得分:0)

您是否有机会将包含标准Servlet API的JAR文件与您的应用程序一起使用? 你能列出你的EAR中包含的所有JAR文件吗?

编辑以下来自asker的信息:您提到您正在包装请求对象。我猜测,当你编译代码时,你正在编译Servlet 2.4类。这就是编译经历好的原因(你不必实现getDispatcherType)。稍后,在运行时,您得到AbstractMethodError,因为您的包装器实现不包含现在需要的getDispatcherType方法的实现。

解决这个问题的唯一方法(在我看来)仍然是针对Servlet 3.0类进行编译。 WebSphere 8.5将总是假设请求是Servlet 3.0,没有办法解决它。

有没有理由不能编译Servlet 3.0类?