More websocket work
This commit is contained in:
parent
47a81ebd8f
commit
a8eb4a1967
|
@ -25,42 +25,48 @@ import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.scheduling.TaskScheduler;
|
import org.springframework.scheduling.TaskScheduler;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
|
|
||||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
|
||||||
import org.springframework.web.socket.WebSocketHandler;
|
import org.springframework.web.socket.WebSocketHandler;
|
||||||
import org.springframework.web.socket.config.annotation.EnableWebSocket;
|
import org.springframework.web.socket.config.annotation.EnableWebSocket;
|
||||||
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
|
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
|
||||||
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
|
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
|
||||||
import org.springframework.web.socket.handler.PerConnectionWebSocketHandler;
|
import org.springframework.web.socket.handler.PerConnectionWebSocketHandler;
|
||||||
import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;
|
|
||||||
|
|
||||||
import ca.uhn.fhir.jpa.subscription.SubscriptionWebsocketHandlerDstu2;
|
import ca.uhn.fhir.jpa.subscription.SubscriptionWebsocketHandlerDstu2;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebSocket()
|
@EnableWebSocket()
|
||||||
@EnableWebMvc
|
public class WebsocketDstu2Config implements WebSocketConfigurer {
|
||||||
@Controller
|
|
||||||
public class WebsocketDstu2Config extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerWebSocketHandlers(WebSocketHandlerRegistry theRegistry) {
|
public void registerWebSocketHandlers(WebSocketHandlerRegistry theRegistry) {
|
||||||
theRegistry.addHandler(subscriptionWebSocketHandler(), "/websocket/dstu2").setAllowedOrigins("*");
|
theRegistry.addHandler(subscriptionWebSocketHandler(), "/websocket/dstu2").setAllowedOrigins("*");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
|
// public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
|
||||||
configurer.enable();
|
// configurer.enable();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Bean
|
// @Bean
|
||||||
public ServletServerContainerFactoryBean createWebSocketContainer() {
|
// public String containerInit() {
|
||||||
ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
|
// try {
|
||||||
container.setMaxTextMessageBufferSize(8192);
|
// Class.forName("javax.websocket.WebSocketContainer");
|
||||||
container.setMaxBinaryMessageBufferSize(8192);
|
// createWebSocketContainer();
|
||||||
return container;
|
// } catch (ClassNotFoundException e) {
|
||||||
}
|
// // ok
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return "";
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Bean
|
||||||
|
// @Lazy
|
||||||
|
// public ServletServerContainerFactoryBean createWebSocketContainer() {
|
||||||
|
// ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
|
||||||
|
// container.setMaxTextMessageBufferSize(8192);
|
||||||
|
// container.setMaxBinaryMessageBufferSize(8192);
|
||||||
|
// return container;
|
||||||
|
// }
|
||||||
|
|
||||||
@Bean(autowire = Autowire.BY_TYPE)
|
@Bean(autowire = Autowire.BY_TYPE)
|
||||||
public WebSocketHandler subscriptionWebSocketHandler() {
|
public WebSocketHandler subscriptionWebSocketHandler() {
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
package ca.uhn.fhir.jpa.config;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* #%L
|
||||||
|
* HAPI FHIR JPA Server
|
||||||
|
* %%
|
||||||
|
* Copyright (C) 2014 - 2016 University Health Network
|
||||||
|
* %%
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* #L%
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowire;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.scheduling.TaskScheduler;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
|
||||||
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
||||||
|
import org.springframework.web.socket.WebSocketHandler;
|
||||||
|
import org.springframework.web.socket.config.annotation.EnableWebSocket;
|
||||||
|
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
|
||||||
|
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
|
||||||
|
import org.springframework.web.socket.handler.PerConnectionWebSocketHandler;
|
||||||
|
import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;
|
||||||
|
|
||||||
|
import ca.uhn.fhir.jpa.subscription.SubscriptionWebsocketHandlerDstu2;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSocket()
|
||||||
|
@Controller
|
||||||
|
@EnableWebMvc
|
||||||
|
public class WebsocketDstu2TomcatConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerWebSocketHandlers(WebSocketHandlerRegistry theRegistry) {
|
||||||
|
theRegistry.addHandler(subscriptionWebSocketHandler(), "/websocket/dstu2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
|
||||||
|
configurer.enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ServletServerContainerFactoryBean createWebSocketContainer() {
|
||||||
|
ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
|
||||||
|
container.setMaxTextMessageBufferSize(8192);
|
||||||
|
container.setMaxBinaryMessageBufferSize(8192);
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(autowire = Autowire.BY_TYPE)
|
||||||
|
public WebSocketHandler subscriptionWebSocketHandler() {
|
||||||
|
return new PerConnectionWebSocketHandler(SubscriptionWebsocketHandlerDstu2.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public TaskScheduler websocketTaskScheduler() {
|
||||||
|
ThreadPoolTaskScheduler retVal = new ThreadPoolTaskScheduler();
|
||||||
|
retVal.setPoolSize(5);
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ import org.springframework.web.cors.CorsConfiguration;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.jpa.config.WebsocketDstu2Config;
|
import ca.uhn.fhir.jpa.config.WebsocketDstu2Config;
|
||||||
|
import ca.uhn.fhir.jpa.config.WebsocketDstu2TomcatConfig;
|
||||||
import ca.uhn.fhir.jpa.config.dstu3.WebsocketDstu3Config;
|
import ca.uhn.fhir.jpa.config.dstu3.WebsocketDstu3Config;
|
||||||
import ca.uhn.fhir.jpa.dao.DaoConfig;
|
import ca.uhn.fhir.jpa.dao.DaoConfig;
|
||||||
import ca.uhn.fhir.jpa.dao.IFhirSystemDao;
|
import ca.uhn.fhir.jpa.dao.IFhirSystemDao;
|
||||||
|
@ -105,7 +106,7 @@ public class TestRestfulServer extends RestfulServer {
|
||||||
myAppCtx.register(TdlDstu2Config.class);
|
myAppCtx.register(TdlDstu2Config.class);
|
||||||
baseUrlProperty = FHIR_BASEURL_TDL2;
|
baseUrlProperty = FHIR_BASEURL_TDL2;
|
||||||
} else {
|
} else {
|
||||||
myAppCtx.register(TestDstu2Config.class, WebsocketDstu2Config.class);
|
myAppCtx.register(TestDstu2Config.class, WebsocketDstu2TomcatConfig.class);
|
||||||
baseUrlProperty = FHIR_BASEURL_DSTU2;
|
baseUrlProperty = FHIR_BASEURL_DSTU2;
|
||||||
}
|
}
|
||||||
myAppCtx.refresh();
|
myAppCtx.refresh();
|
||||||
|
|
|
@ -2,10 +2,6 @@
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ./xsd/web-app_3_0.xsd">
|
version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ./xsd/web-app_3_0.xsd">
|
||||||
|
|
||||||
<absolute-ordering>
|
|
||||||
<name>spring_web</name>
|
|
||||||
</absolute-ordering>
|
|
||||||
|
|
||||||
<listener>
|
<listener>
|
||||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||||
</listener>
|
</listener>
|
||||||
|
|
Loading…
Reference in New Issue