如果我将Jersey的url-pattern映射到2.0版本中的/*,则会导致404所有静态资源(例如/index.html).我的web.xml有:
<servlet>
<servlet-name>JerseyApp</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.frog.jump.JerseyApp</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseyApp</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
如何使用相同的网址格式提供静态内容?
我尝试从spring启动应用程序提供index.html(位于main/resources/static下)时收到HTTP 404错误.但是,如果我从项目中删除基于Jersey的JAX-RS类,则http:// localhost:8080/index.html可以正常工作.
以下是主要课程
@SpringBootApplication
public class BootWebApplication {
public static void main(String[] args) {
SpringApplication.run(BootWebApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定我在这里遗失了什么.
谢谢
我有一个非常简单的演示应用程序,使用 Spring Boot 2.0.x.RELEASE
在我的 POM 中我有:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<exclusions>
<exclusion>
<!-- We're using undertow as our embedded web container instead of tomcat -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Embedded web container- serves Jersey resources -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<!-- Support for Spring Actuator & Health Check Endpoints -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
</dependency>
<dependency> …Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring-Boot。我想将 JAX RS 作为我的基本 REST-API 与 WebSockets(使用 Stomp)结合使用。然而,这两个库似乎以冲突告终。
我有以下 WebSocketConfig:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").setAllowedOrigins("http://localhost:8000").withSockJS();
}
Run Code Online (Sandbox Code Playgroud)
以及以下 AppConfig:
public class AppConfig extends ResourceConfig {
public AppConfig() {
register(...);
}
}
Run Code Online (Sandbox Code Playgroud)
如果两个类都被注释,就会出现问题。如果我注释掉 AppConfig,我的套接字连接将毫无问题地连接。在其他情况下,我的 REST-Api 工作但无法建立 WebSocket-Connection(404 异常)。我认为问题出在 Jax RS 组件中,该组件可能尝试“使用”/hello 调用并且没有找到映射到它的资源。
我的问题是:如何告诉 Jax RS 忽略 /hello 调用,以便将其传递给 WebSocketMessageBroker 或使其彼此相邻工作?