如果提供 index.html,则 Jersey 端点无法加载
Jersey endpoints fail to load if index.html is provided
我有一个 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
提供单页 angular 应用程序,但是点击 localhost:8080/Sandbox/rest/*
告诉我找不到我的端点。 Angular 应用程序是在 Jersey 应用程序之后引入的,在 Angular 应用程序之前,我的 Jersey 端点在此配置下运行良好(减去 welcome-file-list
)。为什么 Angular 应用会掩盖我的 Jersey 端点?
答案与 web.xml 无关。我的一位同事协助我设置项目以使用 Angular 并从我的 pom 文件中删除了这个块:
<resource>
<directory>src/main/webapp</directory>
</resource>
我有一个 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
提供单页 angular 应用程序,但是点击 localhost:8080/Sandbox/rest/*
告诉我找不到我的端点。 Angular 应用程序是在 Jersey 应用程序之后引入的,在 Angular 应用程序之前,我的 Jersey 端点在此配置下运行良好(减去 welcome-file-list
)。为什么 Angular 应用会掩盖我的 Jersey 端点?
答案与 web.xml 无关。我的一位同事协助我设置项目以使用 Angular 并从我的 pom 文件中删除了这个块:
<resource>
<directory>src/main/webapp</directory>
</resource>