在Spring启动应用程序中配置Jetty上的AJP端口

时间:2016-08-17 07:32:27

标签: spring-boot jetty embedded-jetty ajp

我正在尝试在Spring启动应用程序中为Jetty服务器配置AJP端口。但是,我看过有关Tomcat AJP连接器的示例,但没有看到Jetty的示例。有人能告诉我如何在Jetty上配置AJP端口吗?

2 个答案:

答案 0 :(得分:2)

Spring boot捆绑Jetty 9.3默认情况下。 AJP功能已在jetty 9中下载。如果你真的需要使用AJP,那么你必须在你的类路径中添加jetty 8,并编写一个自定义的JettyServerCustomizer(http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/jetty/JettyServerCustomizer.html)。

我认为您不会在Spring文档中找到有关此配置的任何内容。一旦编写了自定义程序,就必须阅读Jetty文档,了解如何实现AJP配置。

Jetty已经将AJP倾向于支持HTTP连接器。除非你有一个真实的用例,否则我会建议迁移到HTTP。

我没有尝试过代码,但是这应该可行(需要包装在spring引导代码中)

 return new JettyServerCustomizer() {

            @Override
            public void customize(Server server) {
                s.addConnector(new Ajp13SocketConnector());

            }   
        };

你的类路径中需要jetty-server 8.x和jetty-ajp 8.x.使用最新的8.x版本,您的pom.xml(如果您是maven用户)应包含:

    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>8.1.19.v20160209</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-ajp</artifactId>
        <version>8.1.19.v20160209</version>
    </dependency>

答案 1 :(得分:0)

上面建议的示例的完整示例对于任何人的参考

@Bean
    public EmbeddedServletContainerFactory jettyContainer() {
        JettyEmbeddedServletContainerFactory factory = new JettyEmbeddedServletContainerFactory();
        JettyServerCustomizer customizers = new JettyServerCustomizer() {
            @Override
            public void customize(Server server) {
//              Connector connector = new Ajp13SocketConnector();
//              connector.setPort(9009); //if you want a custom port
                server.addConnector(new Ajp13SocketConnector());
            }
        };
        factory.addServerCustomizers(customizers);
        return factory;
    }

日志

  

o.e.jetty.server.AbstractConnector:已开始   SelectChannelConnector@0.0.0.0:7090 o.e.jetty.server.AbstractConnector   :启动Ajp13SocketConnector@0.0.0.0:9009   o.e.jetty.ajp.Ajp13SocketConnector:AJP13不是安全协议。   请保护端口9009 .s.b.c.e.j.JettyEmbeddedServletContainer:   码头始于7090,9009港口