我有一个使用插件体系结构的Java Web应用程序。我想知道是否有人可以通过Web应用程序运行时通过Serlvet映射到servletconfig来添加servlet的解决方案?这样的想法是,可以将一个类添加到/ WEB-INF / classes文件夹中,并使其成为Servlet,而无需重新启动Web应用程序。同样,如果用户选择删除“插件”,则让代码从servletconfig中删除该类。
没有标准的Servlet API可以完成此任务。
您可以在Tomcat中执行此操作。在您的webapp中,必须实现您的主servlet(一个servlet创建其他),ContainerServlet这样您才能掌握该Wrapper对象。安装班级文件后,您可以进行以下调用,
ContainerServlet
Wrapper
Context context = (Context) wrapper.getParent(); Wrapper newWrapper = context.createWrapper(); newWrapper.setName(name); newWrapper.setLoadOnStartup(1); newWrapper.setServletClass(servletClass); context.addChild(newWrapper); context.addServletMapping(pattern, name);
这些调用会动态创建一个servlet。您需要找到保留此信息的方法。您可以通过更新web.xml或写入自己的文件来实现。