我正在使用 Jersey/Tomcat 编写 RESTful API,我遇到过:
javax.servlet.ServletException: Servlet.init() for servlet [com.tuiasi.petru.sop.service.MyApplication] threw exception
.......
java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
调用API时。
我相信我已经用尽了许多简单的解决方案,包括我在这里看到的解决方案。我想这与我在使用的 IntelliJ IDEA 中设置的部署配置有关。所以基本上我的代码如下:
@ApplicationPath("api")
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(...);
}
}
@Path("data")
public class DataController {
...
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response list() {
return Response.ok().build();
}
}
我的 web.xml:
<?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" version="3.1">
<display-name>SOPStorageService server</display-name>
</web-app>
当我在 IntelliJ IDEA 中部署时,我选择了一种战争爆炸式的工件,其中添加了存储服务及其所有依赖项。
我还没有完全排除的唯一问题是某些罐子之间可能不兼容。我想知道是否有人有更好的眼光来发现这种特殊情况下可能存在的问题。
非常感谢任何帮助。
您可以查看 Tomcat 日志来确定出了什么问题,然后跳转到源代码行进行调试。
就我而言,我在 HTTP 响应正文中收到类似的错误消息,其中不包含任何有用的消息。
但是,后来查看Tomcat的日志,发现它说的远不止HTTP响应。
@ApplicationPath("api") -> @ApplicationPath("/api") @Path("数据") -> @Path("/数据")