为什么我的servlet在Wildfly中返回403,而在tomcat中返回200?

问题描述 投票:0回答:1

我已经创建了我认为最简单的战争,当我将其部署到 tomcat 9.0.43 时,它运行良好。但我无法让它与 Wildfly 32.0.0.1 beta 一起使用。

我正在使用带注释的 Servlet,所以我的来源只是:

package infoservlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalDateTime;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/")
public class InfoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.append(LocalDateTime.now() + "\n");

        writer.flush();
    }
}

我的pom是:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>markscottwright</groupId>
    <artifactId>infoservlet</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
    </build>
</project>

我通过 cp-ing 到

standalone/deployments
webapps
来部署战争。我可以在
infoservlet.war.deployed
中看到
standalone/deployments

我的 Wildfly 运行为:

standalone.sh -b 127.0.0.1 -Djboss.server.base.dir=/tmp/wildfly3/standalone -Djboss.socket.binding.port-offset=300
,但是当我尝试获取部署的 servlet 时:

$ curl localhost:8380/infoservlet/ -I
HTTP/1.1 403 Forbidden
Connection: keep-alive
Content-Type: text/html;charset=UTF-8
Content-Length: 68
Date: Tue, 09 Apr 2024 20:40:02 GMT

另一方面,Tomcat 工作正常:

$ curl localhost:8080/infoservlet/ -I
HTTP/1.1 200 
Content-Length: 27
Date: Tue, 09 Apr 2024 20:40:31 GMT

我想我遗漏了一些关于 Wildfly 的东西——大概是某种安全设置。我做错了什么?

java tomcat servlets wildfly
1个回答
0
投票

WildFly 32 是 Jakarta EE 10 容器。您的 servlet 使用的是 Jakarta EE 8。您需要迁移您的部署以与 Jakarta EE 10 一起使用,以便与 WildFly 27+ 一起使用。

如果您想使用 Jakarta EE 8,则需要使用 WildFly 26.1.3.Final。

© www.soinside.com 2019 - 2024. All rights reserved.