2017-09-05 43 views
0

我正在开发一个简单的应用程序,它使用Jersey作为框架构建API,Jackson处理JSON。在Tomcat 8.5上部署泽西岛应用程序

当我通过部署在复制的webapps/ &粘贴的应用,,我可以看到我的index.jsp。虽然我创建的资源不可访问,但它始终显示一个404页面。没有显示错误,而不是在catalina。*日志文件中发生的事件。

我很确定这个问题不在java代码中,因为它曾经使用* .jar include方法工作。但我厌倦了这一点,并希望将其迁移到Maven架构。

我不会发布我的整个代码,但you can see it here

为了方便起见,这里遵循我使用的依赖关系的列表:

  • 球衣JSON的1.19
  • 球衣服务器v2.25.1
  • 新泽西媒体JSON -jackson v2.25.1
  • 杰克逊核v2.9.0
  • 杰克逊模块-JAXB的注解v2.9.0
  • 杰克逊 - 注解v2.9.0
  • 杰克逊,数据绑定v2.9.0
  • 杰克逊JAXRS基v2.9.0
  • ackson-JAXRS JSON的提供商v2.9.0

什么会导致这个错误?我没有什么可遵循的,没有堆栈跟踪,没有错误信息,什么都没有。难道是缺乏一些依赖?

回答

1
  1. 摆脱jersey-json。这是1.x,它会让你感到混乱
  2. 你需要的不仅仅是jersey-server。您还需要

    <dependency> 
        <groupId>org.glassfish.jersey.containers</groupId> 
        <artifactId>jersey-container-servlet</artifactId> 
        <version>2.25.1</version> 
    </dependency> 
    
  3. 你应该摆脱你的web.xml中。您不需要使用@ApplicationPath配置注释。你也可以在你的web.xml中使用一个非常旧的模式版本。我不知道这是否会让你感到困扰。更好的办法是完全摆脱web.xml,除非你能找到更新的文件头。

0

不是很知道这个,但尝试添加的servlet到web.xml, 因为我最后一次使用的球衣我发现它是necesary与服务器

例如这个沟通是什么,我加入一个web.xml

<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>"PACKAGE WHERE DO YOU HAVE YOUR CLASS"</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

请注意,我是尤斯GlassFish服务器和Tomcat的不(在“servlet的类”),但这个migth让你和你的想法 我真的希望这可以帮助您:)