当前位置: 首页 > 知识库问答 >
问题:

使用servlet筛选器时对App Engine错误的Spring Boot应用程序

桓嘉谊
2023-03-14
public class AuthFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest,
                         ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        log.info("TESST");
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <filter>
        <filter-name>AuthFilter</filter-name>
        <filter-class>eu.project.docscatalog.filters.AuthFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AuthFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
[INFO] GCLOUD: 2019-06-03 10:28:07.956:WARN:oejw.WebAppContext:main: Failed startup of context c.g.a.t.d.j.DevAppEngineWebAppContext@a85644c{/,file:///C:/Users/Pierluigi/Desktop/source/docs-catalog/target/docs-catalog-1-0-0/,UNA
VAILABLE}{C:\Users\Pierluigi\Desktop\source\docs-catalog\target\docs-catalog-1-0-0}
[INFO] GCLOUD: java.lang.AbstractMethodError
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:136)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:750)
[INFO] GCLOUD:  at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
[INFO] GCLOUD:  at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742)
[INFO] GCLOUD:  at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742)
[INFO] GCLOUD:  at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:744)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:368)
[INFO] GCLOUD:  at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1497)
[INFO] GCLOUD:  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1459)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:852)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
[INFO] GCLOUD:  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:545)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
[INFO] GCLOUD:  at org.eclipse.jetty.server.Server.start(Server.java:415)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
[INFO] GCLOUD:  at org.eclipse.jetty.server.Server.doStart(Server.java:382)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
[INFO] GCLOUD:  at com.google.appengine.tools.development.jetty9.JettyContainerService.startContainer(JettyContainerService.java:343)
[INFO] GCLOUD:  at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:283)
[INFO] GCLOUD:  at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
[INFO] GCLOUD:  at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:87)
[INFO] GCLOUD:  at com.google.appengine.tools.development.Modules.startup(Modules.java:105)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:282)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:223)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:221)
[INFO] GCLOUD:  at java.security.AccessController.doPrivileged(Native Method)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:221)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:404)
[INFO] GCLOUD:  at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:257)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:248)
 <dependencies>
        <!--Spring boot components-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-data-datastore</artifactId>
        </dependency>

        <!--Standard dep-->

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>${appengine.target.version}</version>
        </dependency>

        <!--Provided-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jul-to-slf4j</artifactId>
            <scope>provided</scope>
        </dependency>

        <!--Test related-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

有人知道是怎么回事吗?我会非常感谢任何伸出援手的人:)

共有1个答案

满玉泽
2023-03-14

我拿到了。

我没有正确地遵循入门页面。

我必须从spring-boot-starter-web中排除spring-boot-starter-tomcat,并包括servlet-api。

 类似资料:
  • 我有一个SpringBoot项目(maven/java8)。 我想通过Maven配置文件(dev.properties|prod.properties)过滤src/main/Resources/application.properties中的一些自定义变量 Maven命令: 应用属性: 开发属性: prod.properties: pom.xml:

  • 我的spring boot应用程序配置为Reactive。但是我的REST APIendpoint配置为返回ResponseEntity而不使用Mono或flux。 我想实现过滤器,这将检查每个endpoint的传入头。旧的Servlet过滤器当然不起作用,新的WebFilter对webflux和其他过滤器也不起作用。

  • 我一直在通过几个链接来理解我们如何从过滤器重定向到上一页。 我想做的是 我有什么遗漏吗? 有什么处理这个案子的标准方法吗?

  • 我在net和stackoverflow中搜索了一个使用servlet过滤器将内容插入响应的示例,但只能找到捕获/压缩输出和/或更改头部的示例。我的目标是在所有HTML响应的结束之前追加一个HTML块。 我正在研究一个解决方案,它扩展HttpServletResponseWrapper以使用我自己的PrintWriter,然后重写它上的write方法。在write方法中,我存储了最后7个字符,以查看

  • 我在springboot应用程序中有筛选器。在embedded tomcate 9.0.34中运行该应用程序时,它可以正常工作。然而,当我创建war并将其部署在外部Tomcate8.5上时,它会抛出以下错误。

  • 它需要做的是获取用户名和密码,验证它并根据密码给出适当的输出。请帮帮我.也让我知道如果我的怀疑是正确的。另外,我听说在servlet程序中编写html代码不是一个好的做法。我还想知道如何在index.html文件中编写上面的html代码,这应该与该程序预期的行为方式相同。谢了。