Java Resteasy部署在glassfish 4.1上随机失败

Java Resteasy部署在glassfish 4.1上随机失败,java,glassfish,resteasy,servlet-3.0,Java,Glassfish,Resteasy,Servlet 3.0,我使用Resteasy的REST应用程序有问题。 当我使用此依赖项部署应用程序时 <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-servlet-initializer</artifactId> <version>3.0.11.Final</version> </dependency>

我使用Resteasy的REST应用程序有问题。 当我使用此依赖项部署应用程序时

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-servlet-initializer</artifactId>
    <version>3.0.11.Final</version>
</dependency>
在ResteasyServletInitializer的源代码中,第109行是这样的(带有上下文)

所以我假设这是一个Glassfish错误,Glassfish无法正确返回正确的对象。 我没有发现在清除osgi缓存等之后,重新部署时会发生这种情况。这似乎是非常随机的

似乎有关联,我试着添加

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

javax.servlet
所以我不想尝试这个。
这似乎是在回避问题,而不是解决问题

我的Glassfish版本是Glassfish服务器开源版本4.1(build 13)

请帮我拿这个


干杯

我最终避免了这个问题,因为我确保应用程序战争不包括RESTEasy


所以我现在构建了两个WAR:一个使用RESTEasy(部署在Tomcat和Wildfly上需要),另一个不使用RESTEasy(部署在Glassfish上)。这似乎比要求更改Glassfish安装要好,但实现了同样的效果:避免安装两个JAX-RS实现。

我最终避免了这个问题,因为我确保应用程序WAR不包括RESTEasy


所以我现在构建了两个WAR:一个使用RESTEasy(部署在Tomcat和Wildfly上需要),另一个不使用RESTEasy(部署在Glassfish上)。这似乎比要求更改Glassfish安装要好,但实现了同样的效果:避免安装两个JAX-RS实现。

我刚刚发现,当执行ResteasyServletInitializer时,我的应用程序已经注册。但我不知道申请是在哪一点注册的。只是有同样的问题,那就是我是如何来到这里的。在我的例子中,我注意到Glassfish自己的org.Glassfish.jersey.servlet.init.JerseyServletContainerInitializer在发生此错误之前成功初始化了应用程序。在调试ResteasyServletInitializer之后,我注意到了同样的情况。我发布了关于此主题的另一个问题:。遗憾的是,目前还没有答案。你设法解决了这个问题吗?正如新问题中提到的那样,我“解决”了这个问题:(p.s.从glassfish/modules/folder“works”中删除jersey-container-servlet.jar)在下面添加了我的回答。对于其他冲突,我看到的另一种可能性是,Glassfish默认情况下不遵循Servlet规范的建议,即在父类装入器之前应咨询本地类装入器。我也了解了这一点,并尝试了delegate=“false”但是没有任何效果。我刚刚发现当ResteasyServletInitializer被执行时,我的应用程序已经注册了。但我不知道申请是在哪一点注册的。只是有同样的问题,那就是我是如何来到这里的。在我的例子中,我注意到Glassfish自己的org.Glassfish.jersey.servlet.init.JerseyServletContainerInitializer在发生此错误之前成功初始化了应用程序。在调试ResteasyServletInitializer之后,我注意到了同样的情况。我发布了关于此主题的另一个问题:。遗憾的是,目前还没有答案。你设法解决了这个问题吗?正如新问题中提到的那样,我“解决”了这个问题:(p.s.从glassfish/modules/folder“works”中删除jersey-container-servlet.jar)在下面添加了我的回答。对于其他冲突,我看到的另一种可能性是,Glassfish默认情况下不遵循Servlet规范的建议,即在父类装入器之前应咨询本地类装入器。我也了解了这一点,并尝试了delegate=“false”,但没有任何效果。对于您的情况,这是一个很好的解决方案。遗憾的是,我在球衣方面遇到了问题,因此开始使用resteasy作为替代品。这是解释我和泽西的问题的原始帖子。对你来说,这是一个很好的解决方案。遗憾的是,我在球衣方面遇到了问题,因此开始使用resteasy作为替代品。这是解释我和泽西的问题的原始帖子。
ServletRegistration.Dynamic reg = servletContext.addServlet(applicationClass.getName(), HttpServlet30Dispatcher.class);
reg.setLoadOnStartup(1); //Line 109
reg.setAsyncSupported(true);
reg.setInitParameter("javax.ws.rs.Application", applicationClass.getName());
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>