Spring-boot:将应用程序添加到tomcat服务器

时间:2016-10-10 20:00:44

标签: angularjs tomcat spring-boot

我有一个后端,它建立在spring-boot上,然后是我学校的一些自定义代码。 前端是纯粹的角度应用程序,我通过gulp服务从不同的服务器提供服务。 它们只通过REST调用连接。

后端已经运行了一个身份验证模块,现在我需要从后端运行的同一个tomcat服务器提供这个角度应用程序,这样它也可以使用这个身份验证模块。

我找到this about multiple connectors所以我将其复制为以下类以设置多个连接器:

@ConfigurationProperties
public class TomcatConfiguration {

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
        //tomcat.addAdditionalTomcatConnectors(createSslConnector());
        return tomcat;
    }

    private Connector createSslConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
        try {
            File keystore = new ClassPathResource("keystore").getFile();
            File truststore = new ClassPathResource("keystore").getFile();
            connector.setScheme("https");
            connector.setSecure(true);
            connector.setPort(8443);
            protocol.setSSLEnabled(true);
            protocol.setKeystoreFile(keystore.getAbsolutePath());
            protocol.setKeystorePass("changeit");
            protocol.setTruststoreFile(truststore.getAbsolutePath());
            protocol.setTruststorePass("changeit");
            protocol.setKeyAlias("apitester");
            return connector;
        } catch (IOException ex) {
            throw new IllegalStateException("can't access keystore: [" + "keystore"
                    + "] or truststore: [" + "keystore" + "]", ex);
        }
    }
}

问题是我没有看到或找不到如何设置这些连接器,因此它们从我的angularJS构建文件夹中提供。

在搜索时我遇到了Spring-Boot : How can I add tomcat connectors to bind to controller,但我不确定在该解决方案中我是否应该更改当前的应用程序或为这两个应用程序创建一个父应用程序。

我目前的应用程序主要是这样的:

@Configuration
@ComponentScan({"be.ugent.lca","be.ugent.sherpa.configuration"})
@EnableAutoConfiguration
@EnableSpringDataWebSupport
public class Application extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);

    }
}

如果可能的话,我想了解更多关于spring-boot上下文中连接器的信息。 如果这不是可行的方法,我希望有人能够符合第二种解决方案或建议更改我的代码。

我真的不太确定这些解决方案,我想破坏我的应用程序。 (虽然它是用github备份的)

1 个答案:

答案 0 :(得分:1)

只需将AngularJS +其他前端资源放入src/main/resources/static文件夹Spring Boot will serve them automatically