【问题标题】:Jetty Webservice - https protocol based address is not supportedJetty Webservice - 不支持基于 https 协议的地址
【发布时间】:2015-02-10 17:27:20
【问题描述】:

我正在使用码头版本 7.5.1。

我的网络服务在“http://...”端点上运行良好,但是当我将其更改为“https://...”时出现问题。

Endpoint e = Endpoint.create(webservice);
e.publish("https://localhost:" +  serverPort + "/ws/mywebservice);

我收到以下错误消息: “不支持基于 https 协议的地址”。

我尝试过使用SslChannelConnectorSelectChannelConnector 以及两者的组合。

  Connector connector = new SelectChannelConnector();
  connector.setPort(59180);

  SslContextFactory factory = new SslContextFactory();
  factory.setKeyStore("keystore");
  factory.setKeyStorePassword("password");
  factory.setKeyManagerPassword("password");
  factory.setTrustStore("keystore");
  factory.setTrustStorePassword("password");

  SslSelectChannelConnector sslConnector = new SslSelectChannelConnector(factory);
  sslConnector.setPort(443);
  sslConnector.setMaxIdleTime(30000);

  server.setConnectors(new Connector[]{connector, sslConnector});

我也尝试修改发布路径中的端口。但没有成功。

会不会是我的密钥库文件的创建出了问题? 即使我输入了错误的密码,它也会显示不同的错误消息,说明我的密码错误。

我的选择已经不多了。有什么想法吗?

编辑:更多信息:

Servlet 现在可以在 HTTPS 上正常工作。Web 服务不行。我可能以错误的方式发布它吗?

【问题讨论】:

    标签: web-services ssl jetty


    【解决方案1】:

    我在各种论坛上发现了几个有类似问题的主题。但一直没有找到解决办法。我想为未来的受害者写下我的解决方案:

    publish 方法只接受 http 协议。即使您为 https 发布,这仍然应该是 "http://..."。另一方面,您应该使用 SSL 连接器的端口

    Endpoint e = Endpoint.create(webservice);
    e.publish("http://localhost:443/ws/mywebservice);
    

    使用任何其他协议,您总是会得到 “不支持基于 xxx 协议的地址” 异常。 See source code.

    注意 1: 网络服务此时已经可以正常工作了。但是有一点要讨论:生成的 wsdl 文件(https://localhost:443/ws/mywebservice?wsdl)将引用http://... 路径。您可能会争论 wsdl 文件是要求还是只是文档。

    更正 WSDL 文件中的主机名并不难,但替换协议更难。最简单的解决方案可能是只编辑 wsdl 文件并托管文件,这当然不是很“动态”。

    或者,我通过创建一个替换地址的 WsdlServlet 解决了这个问题。另一方面,仅仅为了修复一个角色而创建一个完整的类确实感觉很糟糕。 :)

    注意 2: 此码头版本中的另一个错误是身份验证。没有任何身份验证就不可能提供网络服务。关闭所有可能的身份验证后,您可以获得的最好的东西:您仍然必须使用“抢先式身份验证”并输入随机用户名和密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多