gpt4 book ai didi

maven - @WebServlet 请求的资源不可用

转载 作者:行者123 更新时间:2023-11-28 23:17:41 28 4
gpt4 key购买 nike

我有一个同时使用 @Weblistener@WebServlet 注释的 webapp。

当启动 Web 应用程序时,会找到并执行 @Weblistener 注释类。尝试使用其中一个 servlet 时,出现“资源不可用”页面。

如果我在 web.xml 中额外定义了 servlet,tomcat 在启动时会提示相同的 urlpattern 被使用了两次,这表明 @WebServlet 被正确扫描.

该应用程序在 Eclipse 中运行良好,但当我在 tomcat 服务器上构建和运行它时,出现此错误。

请让我知道您需要哪些信息。

这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app
version="3.1"
metadata-complete="false"
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">

<display-name>MySearchApp</display-name>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

</web-app>

这是其中一个 servlet 类

@WebServlet(name="SearchServlet", displayName="SearchServlet", urlPatterns={"/search"})
public class Search extends HttpServlet {

这是我的maven文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.test</groupId>
<artifactId>mysearchapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>biosearch Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
......
</dependencies>
<build>
<finalName>mysearchapp</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
</project>

我正在通过 Docker 运行该应用程序。这是我的 Dockerfile,它位于我的项目的根文件夹中。

FROM freedomkk/tomcat-maven:8

ENV BUILD_DIR /tmp/mysearchapp

WORKDIR $BUILD_DIR

COPY . $BUILD_DIR

RUN mvn clean && \
mvn compile war:war -e && \
cp target/mysearchapp.war $CATALINA_HOME/webapps/

WORKDIR $CATALINA_HOME

CMD ["bin/catalina.sh", "run"]

EXPOSE 8080

最佳答案

我最终使用 Eclipse 的嵌入式 Maven 运行时在我的本地机器上构建了 war 文件。当我尝试使用外部 Maven 安装时,我遇到了与上述相同的问题。

Dockerfile 变得更简单了。我仍然认为 Maven 解决方案更优雅。

FROM tomcat:8.0-jre8

WORKDIR $CATALINA_HOME

COPY mysearchapp.war webapps/

CMD ["catalina.sh", "run"]

EXPOSE 8080

关于maven - @WebServlet 请求的资源不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47414808/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com