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

为什么在部署Jersey应用程序时会出现“java.lang.IllegalStateException:资源配置在此上下文中不可修改”?

公冶森
2023-03-14
HTTP Status 500 - Servlet.init() for servlet com.app.rest.MyResourceConfig threw exception

type Exception report

message Servlet.init() for servlet com.app.rest.MyResourceConfig threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet com.app.rest.MyResourceConfig threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    java.lang.Thread.run(Thread.java:662)

root cause

java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
    org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:270)
    org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:218)
    org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:448)
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:300)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
    javax.servlet.GenericServlet.init(GenericServlet.java:160)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    java.lang.Thread.run(Thread.java:662)

我还无法找到根本原因,我唯一的怀疑是可能是缺少了运行依赖项或Eclipse中的其他配置,这些配置与我自己的本地Tomcat服务器环境和远程服务器上的Tomcat不同。

我在资源配置类中的代码是:

package com.app.rest;

import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;

import com.app.rest.services.RunDetailsService;
import com.app.rest.services.RunHistoryService;
import com.app.rest.services.RunPollService;
import com.app.rest.services.RunTestService;


@ApplicationPath("api")
public class MyResourceConfig extends ResourceConfig {

    public MyResourceConfig() {
        register(RunHistoryService.class).
        register(RunTestService.class).
        register(RunDetailsService.class).
        register(RunPollService.class);     
    }   
}

你觉得可能的原因是什么?

共有1个答案

高胜
2023-03-14

一个可能的原因是您对该URL调用有两个或多个适用的映射。

例如:

@path(“/{myParam}”)

 类似资料:
  • 我创建了一个在本地实现REST服务的应用程序,使用: 日蚀靛蓝球衣2.4 Tomcat 7.0.47 当使用Eclipse在本地运行时,服务工作正常,但是当部署我的WAR文件时,当我试图获取其中一个服务URL时,我得到以下异常: 我还无法找到根本原因,我唯一的怀疑是,这可能是Eclipse中缺少运行依赖项或其他配置,这些配置与我自己的本地Tomcat服务器环境和远程服务器上的Tomcat不同。 我

  • 我对Java相当陌生,正在进行我的第一个JPA项目,同时试图理解Netbeans创建的所有对象。我使用向导从数据库表中创建了一个“User”JPA实体。然后我去了AbstractFacade.java,那里有一个超级类,它添加了一个新方法,可以通过电子邮件地址找到特定的用户。 接下来,我UsersFacaceRest.java并添加了以下方法。我不知道为什么在这个例子中我需要@override,因

  • 我正在开发一个简单的应用程序,它使用泽西作为框架来构建API,并使用Jackson来处理JSON。 当我部署应用程序时,通过复制 我很确定这个问题不在java代码中,因为它曾经与*一起工作。jar包含方法。但我厌倦了这一点,希望将其迁移到maven体系结构。 我不会发布我的全部代码,但你可以在这里看到。 为了简化操作,下面列出了我使用的依赖项: jersey json v1.19 什么会导致此错误

  • 问题内容: 我正在尝试使用Minikube,Docker Registry和演示节点项目创建本地Kubernetes部署。 我做的第一件事是安装Docker v1.12.3,然后是Minikube v0.12.2。 然后我通过运行此命令创建了一个Docker Registry容器(通过本教程,仅运行下面的第一个命令) 接下来,我运行此minikube命令以创建本地kubernetes集群: 我的项

  • 当我在glassfish 4.1中部署war文件时,会出现以下异常

  • 我正在开发一个JavaEE6应用程序,其部署目标是GlassFish V3.1。为了隔离应用程序的实例(因为我们可能部署了多个用于测试和生产的实例,或者多个QA实例),我希望将应用程序范围的资源用于应用程序中的所有资源: JDBC连接 JMS资源 自定义资源 不幸的是,由于JDBC连接细节不是静态的,所以我需要支持以下顺序: 部署战争 在部署过程中,检测空的JDBC URL/用户/密码,并且不执行