Maven 的 jetty 插件 SSL 配置问题
Posted
技术标签:
【中文标题】Maven 的 jetty 插件 SSL 配置问题【英文标题】:Maven's jetty plugin SSL configuration issue 【发布时间】:2011-01-14 00:08:33 【问题描述】:我正在使用 Jetty 的 Maven 插件,版本 7.0.0.pre5,但我在将其配置为具有 SSL 连接器时遇到问题。每当我启动应用程序时,它都会显示未找到请求的实现。
这是我的 pom.xml 中的插件配置
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.0.0.pre5</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.mortbay.jetty.ssl.SslSelectChannelConnector">
<port>8443</port>
<keystore>src/test/resources/server.keystore</keystore>
<keyPassword>123456</keyPassword>
<password>123456</password>
</connector>
</connectors>
</configuration>
</plugin>
尝试使用 mvn jetty:run 运行它会得到以下输出:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to configure plugin parameters for: org.mortbay.jetty:jetty-maven-plugin:7.0.0.pre5
Cause: Class name which was explicitly given in configuration using 'implementation' attribute: 'org.mortbay.jetty.ssl.SslSelectChannelConnector' cannot be loaded
使用 org.mortbay.jetty.ssl.SslSocketConnector 呈现相同的结果。
这真的很奇怪,因为根据 Jetty 自己的文档,这两个类都存在并且这是它们的正确名称(注意在 Jetty 6 中使用包安全性而不是 ssl)。
参考: http://www.jarvana.com/jarvana/view/org/mortbay/jetty/jetty-assembly/7.0.0.pre5/jetty-assembly-7.0.0.pre5-site-component.jar!/jetty-7.0.0.pre5/jetty-distribution-7.0.0.pre5-site-component/target/site/apidocs/org/mortbay/jetty/ssl/SslSocketConnector.html
http://www.jarvana.com/jarvana/view/org/mortbay/jetty/jetty-assembly/7.0.0.pre5/jetty-assembly-7.0.0.pre5-site-component.jar!/jetty-7.0.0.pre5/jetty-distribution-7.0.0.pre5-site-component/target/site/apidocs/org/mortbay/jetty/ssl/SslSelectChannelConnector.html
欢迎提出任何想法。
【问题讨论】:
【参考方案1】:实际上与 Pascal Thivent 的回答相同,并结合了一个 gnuf 答案但有效的答案(版本 6.1.26)。
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.mortbay.jetty.security.SslSelectChannelConnector">
<port>8443</port>
<keystore>server.keystore</keystore>
<keyPassword>password</keyPassword>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-sslengine</artifactId>
<version>6.1.26</version>
</dependency>
</dependencies>
</plugin>
【讨论】:
【参考方案2】:对于当前版本的jetty-maven-plugin,8.0.0.M2,类名已经移到了org.eclipse.*中,不需要额外的依赖。
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.0.0.M2</version>
<configuration>
<webAppConfig>
<contextPath>/</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<keystore>src/test/resources/server.keystore</keystore>
<keyPassword>123456</keyPassword>
<password>123456</password>
</connector>
</connectors>
</configuration>
</plugin>
见:http://wiki.eclipse.org/Jetty/Starting/Porting_to_Jetty_7
【讨论】:
【参考方案3】:对于使用 Jetty 6.x 的任何人,要包含在插件依赖项中的工件是 jetty-sslengine
。
【讨论】:
这个!太感谢了!此外,连接器实际上是 org.mortbay.jetty.security.SslSelectChannelConnector for 6.x。这里有一个创建密钥库的教程:wiki.eclipse.org/Jetty/Howto/…【参考方案4】:不确定这是否正常,但 jetty-maven-plugin 在其 pom.xml 中没有 jetty-ssl
作为依赖项。所以请像这样更新你的pom:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.0.0.pre5</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
</connector>
<connector implementation="org.mortbay.jetty.ssl.SslSelectChannelConnector">
<port>8443</port>
<keystore>src/test/resources/server.keystore</keystore>
<keyPassword>123456</keyPassword>
<password>123456</password>
</connector>
</connectors>
</configuration>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-ssl</artifactId>
<version>7.0.0.pre5</version>
</dependency>
</dependencies>
</plugin>
插件会成功加载org.mortbay.jetty.ssl.SslSelectChannelConnector
。
【讨论】:
以上是关于Maven 的 jetty 插件 SSL 配置问题的主要内容,如果未能解决你的问题,请参考以下文章