Servlet类com.foobar.jaxrs.application.MyApplication不是javax.servlet.Servlet

帕特里克

我正在尝试使用Servlet 3.1和Application子类配置Jersey。一段时间以来一直在阅读文档,并试图解决这个问题,但是我不确定这里出了什么问题。

web.xml(尽管我不需要一个,但我得到了一个没有一个的404 ...)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">

<display-name>Foobar Models</display-name>

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

<session-config>
    <session-timeout>30</session-timeout>
    <cookie-config>
        <name>SESSIONID</name>
    </cookie-config>
</session-config>

<servlet>
    <servlet-name>Foo Bar Application</servlet-name>
    <servlet-class>com.foobar.jaxrs.application.FooBarApplication</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Foo Bar Application</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

</web-app>

应用子类

package com.foobar.jaxrs.application;

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/api")
public class FooBarApplication extends Application {
public Set<Class<?>> getClasses() {
    Set<Class<?>> s = new HashSet<Class<?>>();
    s.add(com.foobar.api.HealthCheckResource.class);
    return s;
}
}

HealthCheckResource.java

package com.foobar.api;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("health")
public class HealthCheckResource {

    @GET
    @Produces("text/html")
    public String getHeath() {
        return "Foo Bar Application is healthy!";
    }

}

在码头上运行(与Tomcat 8相同)

HTTP ERROR 404

Problem accessing /foobar/api/health. Reason:

    Servlet class com.foobar.jaxrs.application.FooBarApplication is not a javax.servlet.Servlet
Caused by:

javax.servlet.UnavailableException: Servlet class com.foobar.jaxrs.application.FooBarApplication is not a javax.servlet.Servlet
    at org.mortbay.jetty.servlet.ServletHolder.checkServletType(ServletHolder.java:362)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:243)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
....
帕特里克

我发现了问题-我在使用Servlet 2.5的gradle码头插件中运行,但我正在部署Servlet 3.1应用程序。在使用正确的配置部署到Tomcat 8之后,我能够在没有web.xml的情况下正常运行。

它仍然不能与Jetty一起使用(需要获得Jetty的更新版本),但是在Tomcat 8中,它可以工作:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">

    <display-name>Foo Bar Models</display-name>

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

</web-app>

BaseApplication.java包com.foobar.jaxrs.application;

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("")
public class BaseApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> s = new HashSet<Class<?>>();
        s.add(com.patrickkee.resources.HealthCheckResource.class);
        return s;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

javax.servlet.ServletException:类[org.glassfish.jersey.servlet.ServletContainer]不是Servlet

来自分类Dev

javax.servlet.UnavailableException:SRVE0201E:Servlet [my_ws]:不是Servlet类

来自分类Dev

Servlet类org.restlet.ext.servlet.ServerServlet不是jakarta.servlet.Servlet

来自分类Dev

Servlet application with RESTFul Urls

来自分类Dev

Tomcat:“违规类:javax / servlet / Servlet.class”,然后超时

来自分类Dev

jakarta.servlet.ServletException:类[com.practice.MyServlet]不是Servlet

来自分类Dev

新的servlet抛出javax.servlet.ServletException:包装器找不到servlet类

来自分类Dev

从servlet转发到servlet

来自分类Dev

不扩展Servlet类的Java Servlet

来自分类Dev

不能访问javax.servlet.Filter的; 对于javax.servlet.Filter的类文件未找到

来自分类Dev

无法将RepositoryRestMvcConfiguration强制转换为javax.servlet.Servlet

来自分类Dev

javax.servlet.ServletException:实例化 servlet 类 java.UserScoresServlet 时出错

来自分类Dev

找不到类:javax.servlet.ServletException:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

来自分类Dev

org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher无法转换为javax.servlet.Servlet

来自分类Dev

Servlet 5.0 JAR在javax.servlet。*上引发编译错误,但Servlet 4.0 JAR不会

来自分类Dev

java.lang.ClassCastException:Servlet.Telnet无法转换为javax.servlet.Servlet

来自分类Dev

Singleton in a Servlet

来自分类Dev

Servlet会话

来自分类Dev

Servlet转发

来自分类Dev

无法加载类javax.servlet.jsp.el.ImplicitObjectELResolver $ ImplicitObjects

来自分类Dev

JSF javax.servlet.ServletException:找不到方法:类实体

来自分类Dev

带有以下内容的网址:“ / servlet”转到“ ip / servlet”,而不是“ ip / app / servlet”

来自分类Dev

ServletException:未指定servlet类

来自分类Dev

Java和Servlet的类路径

来自分类Dev

导入javax.servlet.ServletRegistration无法解析

来自分类Dev

如何模拟javax.servlet.ServletInputStream

来自分类Dev

与javax servlet的春季兼容性

来自分类Dev

java.lang.NoClassDefFoundError:javax / servlet / ServletContext

来自分类Dev

javax.servlet.ServletException的jco问题

Related 相关文章

  1. 1

    javax.servlet.ServletException:类[org.glassfish.jersey.servlet.ServletContainer]不是Servlet

  2. 2

    javax.servlet.UnavailableException:SRVE0201E:Servlet [my_ws]:不是Servlet类

  3. 3

    Servlet类org.restlet.ext.servlet.ServerServlet不是jakarta.servlet.Servlet

  4. 4

    Servlet application with RESTFul Urls

  5. 5

    Tomcat:“违规类:javax / servlet / Servlet.class”,然后超时

  6. 6

    jakarta.servlet.ServletException:类[com.practice.MyServlet]不是Servlet

  7. 7

    新的servlet抛出javax.servlet.ServletException:包装器找不到servlet类

  8. 8

    从servlet转发到servlet

  9. 9

    不扩展Servlet类的Java Servlet

  10. 10

    不能访问javax.servlet.Filter的; 对于javax.servlet.Filter的类文件未找到

  11. 11

    无法将RepositoryRestMvcConfiguration强制转换为javax.servlet.Servlet

  12. 12

    javax.servlet.ServletException:实例化 servlet 类 java.UserScoresServlet 时出错

  13. 13

    找不到类:javax.servlet.ServletException:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  14. 14

    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher无法转换为javax.servlet.Servlet

  15. 15

    Servlet 5.0 JAR在javax.servlet。*上引发编译错误,但Servlet 4.0 JAR不会

  16. 16

    java.lang.ClassCastException:Servlet.Telnet无法转换为javax.servlet.Servlet

  17. 17

    Singleton in a Servlet

  18. 18

    Servlet会话

  19. 19

    Servlet转发

  20. 20

    无法加载类javax.servlet.jsp.el.ImplicitObjectELResolver $ ImplicitObjects

  21. 21

    JSF javax.servlet.ServletException:找不到方法:类实体

  22. 22

    带有以下内容的网址:“ / servlet”转到“ ip / servlet”,而不是“ ip / app / servlet”

  23. 23

    ServletException:未指定servlet类

  24. 24

    Java和Servlet的类路径

  25. 25

    导入javax.servlet.ServletRegistration无法解析

  26. 26

    如何模拟javax.servlet.ServletInputStream

  27. 27

    与javax servlet的春季兼容性

  28. 28

    java.lang.NoClassDefFoundError:javax / servlet / ServletContext

  29. 29

    javax.servlet.ServletException的jco问题

热门标签

归档