【问题标题】:Why is jax-rs still scanning all my packages even I declared certain package?为什么即使我声明了某个包,jax-rs 仍在扫描我的所有包?
【发布时间】:2021-06-27 17:06:42
【问题描述】:
<web-app>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>de.mycompany.dept.restapi</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/api/v2/*</url-pattern>
  </servlet-mapping>
</web-app>

即使我将我的 url 声明为 /api/v2/* ,仍然可以连接到没有此前缀的所有端点。这真的很烦人。所以例如可以连接端点/employee

  1. 正如我在 web.xml /api/v2/employee 中所写的
  2. /员工

我不想要第二个选项。我该如何预防。谢谢

【问题讨论】:

  • 不足以重现问题。请提供minimal reproducible example。另外,标题与您的问题有什么关系。你的标题是关于 Java 包,你的问题是关于 URI 路径。
  • 我的 api 只能通过 api/v2/... 访问!!!但现在我有两个选择。例如 localhost:8080/api/v2/employee 或我不想要的 localhost:8080/employee 。你现在明白了吗??
  • 这与您的帖子标题有什么关系?我们还需要minimal reproducible example 才能重现问题。没有这个,我们只能做猜测。

标签: jax-rs java-ee-8


【解决方案1】:

也许不同的方法会起作用。转到 Servlet 类并添加“import javax.servlet.annotation.WebServlet;”。使用类上的“@WebServlet”注释输入您的 url 路径。我在下面留下一个例子。

package net.usermanagement.web;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;// Look here
import javax.servlet.http.HttpServlet;    
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



@WebServlet("foo/baz")     // Look here
public class UserServlet extends HttpServlet {
.
.
.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2016-10-02
    • 2021-09-04
    • 1970-01-01
    • 2022-11-07
    • 2023-02-20
    相关资源
    最近更新 更多