Jetty maven插件无法热重新部署shiro过滤器

2024-04-27

我不确定这是jetty的问题还是shiro的问题,但我正在尝试使用Jetty-Maven插件进行开发,我想要的关键功能之一是Jetty在文件更改时的热重新部署。然而,当 jetty 尝试重新加载应用程序时,Shiro 抛出以下异常,我不确定可以采取什么措施来纠正这个问题。

[Scanner-0] ERROR org.apache.shiro.web.servlet.AbstractFilter - Unable to start Filter: [No WebEnvironment found: no EnvironmentLoaderListener registered?].
java.lang.IllegalStateException: No WebEnvironment found: no EnvironmentLoaderListener registered?
        at org.apache.shiro.web.util.WebUtils.getRequiredWebEnvironment(WebUtils.java:276)
        at org.apache.shiro.web.servlet.ShiroFilter.init(ShiroFilter.java:73)
        at org.apache.shiro.web.servlet.AbstractShiroFilter.onFilterConfigSet(AbstractShiroFilter.java:152)
        at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:97)
        at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:123)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:732)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:279)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1314)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:722)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:492)
        at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:275)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.maven.plugin.JettyRunMojo.restartWebApp(JettyRunMojo.java:527)
        at org.eclipse.jetty.maven.plugin.JettyRunMojo$1.filesChanged(JettyRunMojo.java:481)
        at org.eclipse.jetty.util.Scanner.reportBulkChanges(Scanner.java:676)
        at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:539)
        at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391)
        at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:329)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)

我的 web.xml 如下所示:

<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">  

<!-- SHIRO CONFIGURATION ============================================== -->

<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>
</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>

<!-- DATA SOURCE ====================================================== -->

<resource-ref>
  <description>Account Data Source</description>
  <res-ref-name>jdbc/AccountDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

</web-app> 

最后,这是我的 Maven pom 文件的相关部分:

<build>
  <plugins>
    <plugin>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <version>9.0.0.RC2</version>
      <configuration>
        <jettyXml>src/jetty/jetty.xml</jettyXml>
        <scanIntervalSeconds>1</scanIntervalSeconds>
        <webApp>
          <contextPath>/</contextPath>
          <overrideDescriptor>src/jetty/override-web.xml</overrideDescriptor>
        </webApp>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.24</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>

编辑:另一条相关信息。我正在 eclipse 中编辑文件,并且正在使用 M2E Maven Integeration for Eclipse 插件。它可能与 eclipse 和/或此插件重新编译文件的方式有关。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jetty maven插件无法热重新部署shiro过滤器 的相关文章

随机推荐