gpt4 book ai didi

tomcat - 如何使用导入包 "javax.servlet.annotation"加载 OSGi 插件

转载 作者:行者123 更新时间:2023-11-28 23:56:21 25 4
gpt4 key购买 nike

我有一个在 OSGi 中运行的 Web 应用程序,并已部署到 Tomcat。我一直在通过在我的插件中贡献扩展点 org.eclipse.equinox.http.registry 并将以下包添加到 manifest.mf 来注册我的 servlet:

Import-Package: javax.servlet,
javax.servlet.http

到目前为止一切顺利。

现在,我想让我的一个 servlet 支持异步。我试图通过向我的 servlet 类添加以下注释来做到这一点:

@WebServlet(name = "OrderServlet", urlPatterns = {"/order"}, asyncSupported = true)
public class OrderServlet extends HttpServlet {
...
}

这需要将 javax.servlet.annotation 添加到 list 中:

Import-Package: javax.servlet,
javax.servlet.annotation,
javax.servlet.http

当我使用此更改重新部署我的 WAR 时,我的插件无法加载。当我尝试手动启动 bundle 时,OSGi 控制台显示以下错误:

id      State       Bundle
5 INSTALLED abc.asyncServlet_1.0.0
osgi> start 5
gogo: BundleException: The bundle "abc.asyncServlet_1.0.0 [5]" could not be resolved. Reason: Missing Constraint: Import-Package: javax.servlet.annotation; version="0.0.0"
osgi> diag 5
update@plugins/abc.asyncServlet_1.0.0.jar [5]
Direct constraints which are unresolved:
Missing imported package javax.servlet.annotation_0.0.0.

我使用的是 Tomcat 7 并验证了我的 tomcat/lib 目录中的 servlet-api.jar(版本 3.0)具有注释包。

我可以缺少什么?感谢任何指点!

最佳答案

很可能您的 osgi 容器没有加载 servlet-api.jar 文件。您可能需要在您的 config.ini 文件中指定 jar,或者指定您在何处配置哪些包可用于您的 osgi 容器。

关于tomcat - 如何使用导入包 "javax.servlet.annotation"加载 OSGi 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com