java - 使用 web.xml 配置带有 Glassfish 4 的 JX-RS 会导致错误

标签 java glassfish jersey web.xml glassfish-4

我正在尝试使用 JX-RS 创建一个 Java EE 应用程序。我已经使用以下配置让它工作:

@ApplicationPath("rs")
public class MyApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet<>();
        // register root resource
        classes.add(ProbeREST.class);
        return classes;
    }
}

但是,我更愿意使用 web.xml 进行配置。我认为与简单的 xml 配置相比,上面的配置非常丑陋,如下所示:

<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">
    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/rs/*</url-pattern>
    </servlet-mapping>
</web-app>

不幸的是,当我尝试部署应用程序时,我收到错误:

Exception while deploying the app [my_app] : There is no web component by the name of javax.ws.rs.core.Application here.

我怎样才能避免这个错误?

最佳答案

如 JAX-RS 2.0 中所述,2.3.2 Servlet 章中,您确实错过了 web.xml 中的 servlet 条目:

<?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">
        <servlet>
            <servlet-name>javax.ws.rs.core.Application</servlet-name>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>javax.ws.rs.core.Application</servlet-name>
            <url-pattern>/rs/*</url-pattern>
        </servlet-mapping>
    </web-app>

关于java - 使用 web.xml 配置带有 Glassfish 4 的 JX-RS 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319654/

相关文章:

java - Java 的方法执行操作更好吗?

java - Last.fm java.lang.ClassCastException - 从文件中读取 User 对象

java - 推送网络服务 : Invalid UTF-8 start byte

JSF 1.2 应用程序无法与 GlassFish v3 配合使用

java - 如何在 Jersey RESTful web 服务中放置 cookie?

java - 为什么我的 for 循环没有在 netbeans GUI 上提供输出?

java - 如何增加资源?

deployment - GlassFish 3.1.2 在部署时给出 404,没有任何错误

java - 在调用正确的@Path 后,Jersey 返回 404

java - 如何禁用 Jersey 2.x 中的日志记录