当前位置: 首页 > 知识库问答 >
问题:

泽西岛:HTTP错误500 jakarta.servlet。ServletException[重复]

窦啸
2023-03-14

网站.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  See: http://docs.oracle.com/cd/E28613_01/web.1211/b65890/web_xml.htm
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
    <servlet>
        <servlet-name>JerseyApp</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>path.to.package.MainClass</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>JerseyApp</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

我的主要课程:

@ApplicationPath("/")
public class MainClass extends ResourceConfig
{

   public MainClass() {
      // Add a package used to scan for components.
      packages(this.getClass().getPackage().getName());
   }
}

控制器和主类位于同一包中。

@Path("/abc")
public class LabelController
{

   @GET
   @Produces(MediaType.APPLICATION_JSON)
   public List<ABC> getResources(@QueryParam("something") List<String> ids)
   {

建筑等级:

buildscript {
    ext {
        LOMBOK_VERSION = "1.18.22"
        JAVAX_WSRS_VERSION = "2.1.1"
    }
}

plugins {
    id "org.gretty" version "4.0.3"
}

apply plugin: 'java-library'
apply plugin: 'java'
apply plugin: 'war'

repositories {
    mavenLocal()
    maven {
        another intern repositories
    }
}


dependencies {
    compileOnly "org.projectlombok:lombok:${LOMBOK_VERSION}"
    testImplementation "org.projectlombok:lombok:${LOMBOK_VERSION}"
    annotationProcessor "org.projectlombok:lombok:${LOMBOK_VERSION}"

    implementation "com.microsoft.sqlserver:mssql-jdbc:9.4.1.jre11"

    implementation "javax.ws.rs:javax.ws.rs-api:${JAVAX_WSRS_VERSION}"
    implementation 'org.glassfish.jersey.core:jersey-server:3.0.8'
    implementation 'org.glassfish.jersey.containers:jersey-container-servlet:3.0.8'
}

当我用运行应用程序时/gradlew appRun并调用urlhttp://localhost:8080/myservice我遇到了这个错误。

错误:

HTTP ERROR 500 jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
URI:    /myservice/
STATUS: 500
MESSAGE:    jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
SERVLET:    JerseyApp
CAUSED BY:  jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
CAUSED BY:  java.lang.IllegalStateException: InjectionManagerFactory not found.
Caused by:
jakarta.servlet.ServletException: JerseyApp==org.glassfish.jersey.servlet.ServletContainer@80f88154{jsp=null,order=-1,inst=true,async=false,src=DESCRIPTOR:file:///C:/Projects/JerseyApp/build/inplaceWebapp/WEB-INF/web.xml,STARTED}
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:651)
    at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:486)
    at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:731)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1375)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1297)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
    at org.eclipse.jetty.server.Server.handle(Server.java:562)
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
    at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: InjectionManagerFactory not found.
    at org.glassfish.jersey.internal.inject.Injections.lambda$lookupInjectionManagerFactory$0(Injections.java:74)
    at java.base/java.util.Optional.orElseThrow(Optional.java:403)
    at org.glassfish.jersey.internal.inject.Injections.lookupInjectionManagerFactory(Injections.java:74)
    at org.glassfish.jersey.internal.inject.Injections.createInjectionManager(Injections.java:69)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:339)
    at jakarta.servlet.GenericServlet.init(GenericServlet.java:178)
    at org.eclipse.jetty.servlet.ServletHolder$Wrapper.init(ServletHolder.java:1305)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:633)
    ... 29 more

我和intellij一起工作。

共有1个答案

洪楷
2023-03-14

我添加了这个依赖项:实现'org.glassfish.jersey.inject: jersey-hk2:3.0.8'

 类似资料:
  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?

  • 问题内容: 我有一个Jersey REST API,并且正在使用来处理授权。我还在所有端点上使用,以便我的API可以处理数千个并发请求。 我的授权过滤器命中了一个远程服务,但是当运行过滤器时,Jersey尚未将当前线程添加到它的内部,因此我完全失去了异步的好处。 我可以告诉Jersey我希望这是异步的吗? 这是一个示例资源: 更新 刚刚收到泽西队球员的回音,从2.7开始,这是不可能的。只有资源方法

  • 我很难理解泽西岛的注入机制。JAX-RS规范(http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-520005)指出,在应用程序子类、根资源类和提供程序中可以通过@Context进行注入。 我现在有一个在启动时实例化的类,并且有一个在每次请求时调用的方法。在方法内部,我需要访问当前的UriInfo对象。问题是,这个方法不是从我的

  • 我正在泽西岛2中编写一个RESTful网络服务。我想支持响应的 Gzip 编码。按照这个答案,我在我的类中启用了。 在我的资源类中,我返回一个对象。 现在,当我点击这个api时,我得到一个响应,但响应头不包含头,而是包含 header。 请求: 响应: 响应中没有 标头,也没有任何标头。 我在上使用。 我还遗漏了其他配置吗?我如何获得这两个头并得到gzip压缩的响应,而不是接收分块的响应? 编辑:

  • 我试图用户泽西的JSON/bean验证,但是当初始化servlet发生错误。 全栈跟踪: pom.xml: 可能引发异常的行: 更新:使用Java8 更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题更多的文字,这样我就可以发布这个问题再发些短信,这样我就可以发布这个问题了

  • 问题内容: 我在Glassfish上有一个工作正常的JavaEE 6 Web应用程序,该应用程序已经具有JSF前端并具有其身份验证机制((使用基于CDI和注释的安全性),因此有一个登录屏幕,用户输入用户名密码,按登录按钮和Java EE身份验证过程开始。 现在,我想“还将”我的一些服务类公开为REST服务(我可能会使用Jersey),因此也可以从移动设备访问它。但是让我担心的是登录部分。 我将使用