如果提供index.html,则无法加载Jersey端点

时间:2015-09-21 14:08:15

标签: java angularjs rest jersey

我有一个Jetty服务器,它提供一个Angular页面,但也有几个Jersey端点编码。我的Angular项目位于resources目录中,在构建和运行后,target看起来像这样:

WEB-INF
    classes
        index.html
        com/
    web.xml

我的web.xml看起来像这样:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

<display-name>Sandbox</display-name>

<servlet>
    <servlet-name>Jersey</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

    <!-- Adds JSON processing to map java classes to JSON text in both directions -->
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>

    <!-- Tell the Jersey framework where to search for services.  Also, JAX-RS is needed
         for the JSON serialization -->
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.hb.apps.server;org.codehaus.jackson.jaxrs</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

<mime-mapping>
    <extension>json</extension>
    <mime-type>text/html</mime-type>
</mime-mapping>

通过此设置,点击localhost:8080/Sandbox会提供单页角度应用,但是点击localhost:8080/Sandbox/rest/*会告诉我无法找到我的端点。 Angular应用程序是在Jersey应用程序之后引入的,在Angular应用程序之前,我的Jersey端点在此配置下工作正常(减去welcome-file-list)。为什么Angular应用程序会掩盖我的Jersey端点?

1 个答案:

答案 0 :(得分:0)

答案与web.xml无关。我的一位同事协助我设置了与Angular一起工作的项目,并从我的pom文件中删除了这个块:

<resource>
    <directory>src/main/webapp</directory>
</resource>