AxisHTTPSessionListener 的替代品是什么?

问题描述 投票:0回答:1

我在 web.xml 中使用

AxisHTTPSessionListener
作为监听器,如下所示。

<listener>
    <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
</listener>

现在我正在将 JDK 版本 11 升级到 17,其中一部分将 javax 升级到 jakarta。

问题是 AxisHTTPSessionListener 内部使用 javax。

package org.apache.axis.transport.http;

import java.util.Enumeration;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.xml.rpc.server.ServiceLifecycle;
import org.apache.axis.components.logger.LogFactory;
import org.apache.commons.logging.Log;

public class AxisHTTPSessionListener implements HttpSessionListener {

所以我遇到了以下错误

Error configuring application listener of class [org.apache.axis.transport.http.AxisHTTPSessionListener] ([/test].log)
java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionListener

如何解决?

java tomcat apache-axis
1个回答
1
投票

这是Tomcat升级造成的,不是jdk升级造成的。

参见 Tomcat 迁移 10

Tomcat 9.0.x 和 Tomcat 10.0.x 之间存在重大重大变化。规范 API 使用的 Java 包已从 javax...更改为 jakarta...。需要针对新 API 重新编译 Web 应用程序。

我认为你需要一个针对 jakarta 而不是 javax 编译的 axis 版本

我看到有这张票要求在轴上提供雅加达支持

您可以使用支持包重定位的工具(例如Shadow)来生成指向 jakarta servlet 类的新/黑客轴 jar(假设它只是包重定位并且不需要逻辑更改)

另一种选择是获取轴源并在那里进行更改

© www.soinside.com 2019 - 2024. All rights reserved.