JFinal

登录 注册

使用Jfinal-undertow,感觉没有加载web.xml里面的Filter,不知什么原因

web.xml在Tomacat下正常加载了的。但是切换到了undertow,好像并没有加载,导致里面配置的ShiroFilter没有初始化,影响系统的权限功能正常使用。

JFinal-undertow,系统是怎样给一个初始化过程呢?我应该在什么地方加载ShiroFilter之类的Filter


以下是web.xml配置:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">

	<display-name>shop</display-name>
	<listener>
		<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
	</listener>
	<filter>
		<filter-name>shiroFilter</filter-name>
		<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
		<init-param>
			<param-name>configPath</param-name>
			<param-value>classpath:shiro.ini</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>shiroFilter</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
		<dispatcher>ERROR</dispatcher>
	</filter-mapping>
	<filter>
		<filter-name>JFinalFilter</filter-name>
		<filter-class>com.jfinal.core.JFinalFilter</filter-class>
		<init-param>
			<param-name>configClass</param-name>
			<param-value>com.jeasygooshop.cfg.JFWebConfig</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>JFinalFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<session-config>
		<session-timeout>120</session-timeout>
	</session-config>
	
</web-app>

评论

  • 12-05 22:27
    由于 undertow 是为嵌入式 server 而生,所以 jfinal undertow 项目是不需要 web.xml 这个文件的

    线上这版 Filter、Servelt、Listener、WebSocket 最新的配置方式如下:
    UndertowServer.create(AppConfig.class)
    .configWeb( builder -> {
    // 配置 Filter
    builder.addFilter("myFilter", "com.abc.MyFilter");
    builder.addFilterUrlMapping("myFilter", "/*");
    builder.addFilterInitParam("myFilter", "key", "value");

    // 配置 Servlet
    builder.addServlet("myServlet", "com.abc.MyServlet");
    builder.addServletMapping("myServlet", "*.do");
    builder.addServletInitParam("myServlet", "key", "value");

    // 配置 Listener
    builder.addListener("com.abc.MyListener");

    // 配置 WebSocket,MyWebSocket 需使用 ServerEndpoint 注解
    builder.addWebSocketEndpoint("com.abc.MyWebSocket");
    })
    .start();

    这个配置方法在源码的 UndertowServer.configWeb(...) 上有。注意,上面的配置版本还未发布到中心库,现在的老版本是通过
    UndertowServer.addFilterInfo(...) 来添加的 Filter

    建议通过下面的方法直接用上新版本:
    git clone git@gitee.com:jfinal/jfinal-undertow.git
    cd jfinal-undertow
    mvn clean install
    注意要先将 pom.xml 中的 skip 标签改成 true 才能安装

    最后改一下版本号为 : 1.2-SNAPSHOT 即可用上最新版本
  • 12-06 13:49
    @JFinal 上次有说不支持Shiro
  • 发送