/* * Copyright 2012-2013 the original author or authors. * * 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. */ package com.kodcu.boot; import com.kodcu.controller.ApplicationController; import jdk.nashorn.api.scripting.NashornScriptEngineFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.web.*; import org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.*; import org.springframework.web.client.RestTemplate; 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 javax.script.ScriptEngine; import java.util.Base64; @Configuration @EnableWebSocket @ComponentScan(basePackages = "com.kodcu.**") //@EnableAutoConfiguration @Import({ DispatcherServletAutoConfiguration.class, EmbeddedServletContainerAutoConfiguration.class, // ErrorMvcAutoConfiguration.class, HttpEncodingAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, // JacksonAutoConfiguration.class, // JmxAutoConfiguration.class, // MultipartAutoConfiguration.class, ServerPropertiesAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class, // ThymeleafAutoConfiguration.class, WebMvcAutoConfiguration.class, WebSocketAutoConfiguration.class, }) public class SpringAppConfig extends SpringBootServletInitializer implements WebSocketConfigurer { @Autowired private ApplicationController applicationController; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(applicationController, "/ws", "/ws**", "/ws/**").withSockJS(); } @Bean @Lazy public NashornScriptEngineFactory nashornScriptEngineFactory() { NashornScriptEngineFactory nashornScriptEngineFactory = new NashornScriptEngineFactory(); return nashornScriptEngineFactory; } @Bean @Scope("prototype") @Lazy public ScriptEngine scriptEngine() { ScriptEngine scriptEngine = nashornScriptEngineFactory() .getScriptEngine(); // .getScriptEngine(new String[]{"--persistent-code-cache", "--class-cache-size=50"}); return scriptEngine; } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringAppConfig.class); } @Bean public RestTemplate restTemplate() { return new RestTemplate(); } @Bean public Base64.Encoder base64Encoder() { return Base64.getEncoder(); } }