相关疑难解决方法(0)

如何仅使用注释设置JAX-RS应用程序(没有web.xml)?

是否可以仅使用注释设置JAX-RS应用程序?(使用Servlet 3.0和JAX-RS Jersey 1.1.0)

我试过,没有运气.web.xml似乎需要使用一些.


配置A(工作,但具有web.xml配置)

web.xml中

   ...
   <servlet>
      <servlet-name>org.foo.rest.MyApplication</servlet-name>
   </servlet>
   <servlet-mapping>
       <servlet-name>org.foo.rest.MyApplication</servlet-name>
       <url-pattern>/*</url-pattern>
   </servlet-mapping>
   ...
Run Code Online (Sandbox Code Playgroud)

Java的

@ApplicationPath("/")
public class MyApplication extends Application {
    ...
}
Run Code Online (Sandbox Code Playgroud)

配置B(不工作,抛出异常)

@ApplicationPath("/")
@WebServlet("/*") // <-- 
public class MyApplication extends Application {
    ...
}
Run Code Online (Sandbox Code Playgroud)

后者似乎坚持认为Application将是Servlet的子类(例外不会留下任何猜测)

java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet
Run Code Online (Sandbox Code Playgroud)

问题

  1. 为什么web.xml定义有效,但注释没有?有什么不同?

  2. 有没有办法使它工作,例如有一个没有web.xml的JAX-RS应用程序?

java jax-rs java-ee servlet-3.0

76
推荐指数
4
解决办法
11万
查看次数

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

我正在尝试使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢使用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>
Run Code Online (Sandbox Code Playgroud)

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

Exception while deploying the app [my_app] : There is no web component by the name of javax.ws.rs.core.Application here.
Run Code Online (Sandbox Code Playgroud)

我该如何防止此错误?

java web.xml glassfish jersey glassfish-4

4
推荐指数
1
解决办法
2573
查看次数

标签 统计

java ×2

glassfish ×1

glassfish-4 ×1

java-ee ×1

jax-rs ×1

jersey ×1

servlet-3.0 ×1

web.xml ×1