之前的旧项目整合h2数据库web.xml内容如下
<context-param> <param-name>db.url</param-name> <param-value>jdbc:h2:~/test</param-value> </context-param>
如何在jfinal中添加context-param参数呢?
我的尝试如下
ConsumerWebBuilder添加2个监听器
public class ConsumerWebBuilder implements Consumer<WebBuilder> { @Override public void accept(WebBuilder builder) { // builder.addServletInitParam("myServlet", "key", "value"); // 配置 Listener // org.h2.server.web.DbStarter builder.addListener("com.uairobot.bill.jfinal.listener.MyListener"); builder.addListener("org.h2.server.web.DbStarter"); } }
在自定义的监听器中获取servetContext,设置conttextParam
import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import lombok.extern.slf4j.Slf4j; @Slf4j public class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { org.h2.Driver.load(); ServletContext servletContext = servletContextEvent.getServletContext(); servletContext.setInitParameter("db.url", "litong"); String value = servletContext.getInitParameter("db.url"); log.info("db.url:{}", value); } }
这做确实可以添加context-param中,但是问题是
2个listener那个先执行,必须是设置参数的先执行?
在com.jfinal.server.undertow.WebBuilder中新增一个addServetContext的方法,请指导
项目:JFinal
UndertowServer.create(...)
.configWeb(web -> {
web.addListener("...");
web.addInitParameter("...", "...");
})
.start();
如果上面这个不行,试一下这个:
UndertowServer.create(...)
.configWeb(web -> {
DeploymentInfo di = web.getDeploymentInfo();
di.xxx(...); // 这里调用 di 内的一些方法尝试实现功能
})
.start();
先通过 web.getDeploymentInfo() 获取到一个 DeploymentsInfo 对象,然对所有配置都可以通过这个对象中的方法来配置