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