suc*_*awk 5 java tomcat servlets classloader
我目前正在使用Tomcat 7.我想部署/安装一个将在其上下文中的每个webapp中加载的servlet.我正在寻找一个解决方案,不涉及我将servlet添加到每个webapp的战争.这可能吗?
最终,我希望它能够在每个webapp的上下文根的公共子路径上处理请求.
我想也许我可以从tomcat通用类加载器加载一个带注释的servlet,但我无法让它工作.例如,相同的带注释的servlet在战争中工作,但不在常见的类加载器中工作.
@WebServlet(
description = "Says Hello",
urlPatterns = { "/HelloServlet" })
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// log hello
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
你描述的东西与Servlet的逻辑不完全兼容。
如果您想在 Tomcat 中使用来自 2 个不同应用程序的服务/库,那么您可以在 Tomcat 中添加一个库作为共享库。然后,您将能够从应用程序 servlet 中使用该库。如果你想实现这一点,你必须添加 jar $CATALINA_HOME/shared/lib,然后编辑$CATALINA_HOME/conf/catalina.properties以添加{catalina.home}/mylibs/*.jar属性common.loader。然后,您将能够在应用程序的各种 servlet 中使用您的库。
但是,这与您所描述的不同。事实上,你所描述的在Tomcat中是不可行的,因为每个Web应用程序都有自己的ApplicationContext。因此,webappA的应用程序上下文将为http://host/webappA,而webappB的应用程序上下文将为http://host/webappB。因此,如果您希望在这两个应用程序之外有一个 servlet,那么该 servlet 将属于不同的 ApplicationContext。因此,无法通过属于先前 ApplicationContext 的http://host/webappA/common、http://host/webappB/common路径访问此 servlet。
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |