java - 无法与 Maven 和 Jetty 创建 SSL 连接

标签 java web-services maven ssl jetty

我有一个使用 Jetty 和 Maven 运行的 Web 服务。现在,我想为这个 WS 创建一个 SSL 连接。 我在我的 pom.xml 文件中应用了这段代码:

pom.xml :

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <configuration>
        <scanIntervalSeconds>5</scanIntervalSeconds>
        <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                <port>9090</port>
                <maxIdleTime>60000</maxIdleTime>
            </connector>
            <connector implementation="org.mortbay.jetty.security.SslSocketConnector">
                <port>443</port>
                <maxIdleTime>60000</maxIdleTime>
                <keystore>jetty-ssl.keystore</keystore>
                <password>jetty6</password>
                <keyPassword>jetty6</keyPassword>
            </connector>
        </connectors>
    </configuration>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>keytool-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <id>clean</id>
            <goals>
                <goal>clean</goal>
            </goals>
        </execution>
        <execution>
            <phase>generate-resources</phase>
            <id>genkey</id>
            <goals>
                <goal>generateKeyPair</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <keystore>jetty-ssl.keystore</keystore>
        <dname>cn=NCSL004</dname>
        <keypass>jetty6</keypass>
        <storepass>jetty6</storepass>
        <alias>jetty6</alias>
        <keyalg>RSA</keyalg>
    </configuration>
</plugin>

当我运行 maven 时,我得到:

>       [INFO] >>> jetty-maven-plugin:8.1.13.v20130916:run (default-cli) @ Test >>> 

>       [INFO] --- keytool-maven-plugin:1.3:clean (clean) @ Test ---
>       [INFO] Keystore file 'jetty-ssl.keystore' deleted successfully.
>       [INFO] 
>       [INFO] --- keytool-maven-plugin:1.3:generateKeyPair (genkey) @ Test ---
>       [INFO] 
>
>       ...
>
>       2013-12-13 10:47:46.160:INFO:oejs.AbstractConnector:Started             
>       SelectChannelConnector@0.0.0.0:8080 <br />
>       [INFO] Started Jetty Server 

当我尝试连接 [https://localhost:443] 时出现错误,此外 [http://localhost:9090] 我也出现错误! 所以我的网络服务只适用于 [http://localhost:8080]。 Maven似乎没有实现端口配置。

我该如何解决这个错误?

谢谢!

最佳答案

一些事情......

  1. 端口 443 在特殊保留空间内(端口 1 到 1024),因此非特权用户不会绑定(bind)到它。

  2. 您使用的是 jetty-8.1.13,但它位于 org.eclipse.jetty 命名空间中,而不是 org.mortbay.jetty 中,因此您的 <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 行对于 Jetty 8 都是错误的。这些条目适用于 Jetty 6 及更早版本。

对于 Jetty 8,它看起来像这样......

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>8.1.14.v20131031</version>
  <configuration>
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <webApp>
      <contextPath>/test</contextPath>
    </webApp>
    <connectors>
       <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
          <port>9090</port>
          <maxIdleTime>60000</maxIdleTime>
       </connector>
       <connector implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
          <port>9443</port>
          <maxIdleTime>60000</maxIdleTime>
          <keystore>src/test/resources/server.keystore</keystore>
          <keyPassword>123456</keyPassword>
          <password>123456</password>
       </connector>
     </connectors>
  </configuration>
</plugin>

关于java - 无法与 Maven 和 Jetty 创建 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563631/

相关文章:

java - 我无法在主类中使用类

java - 使用 Maven 下载 Spring 3.0.0 依赖项

.net - 防止 .NET 写入 C :\Windows\Temp

java - 如何使用JPA制作Maven包,但独立于服务提供商;稍后如何由该包的用户插入我的服务提供商?

java - TextView 没有出现在带有自定义适配器的 ListView 中

java - 实现等待和通知

php - 通知网络服务如果应用程序关闭

android - 解析 SOAP 响应时出现非法属性错误

maven - Fabric8 docker-maven-插件 : include additional tags on build

java.lang.AbstractMethodError : javax. ws.rs.core.Response$ResponseBuilder.status