31

是否可以同时以安全和不安全的方式运行单个 @WebService bean,最好使用相同的 URL,但 http/https 协议不同?

我可以使用以下方式安全或不安全地运行服务:

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

或者

<transport-guarantee>NONE</transport-guarantee>

在 sun-ejb-jar.xml 中

IE。

<ejb>
  <ejb-name>MyEJB</ejb-name>
  <webservice-endpoint>
    <port-component-name>MyWebService</port-component-name>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </webservice-endpoint>
</ejb>

建议?

4

3 回答 3

2

为什么您不使用 Apache HTTP 服务器或类似服务器代理应用程序服务器?我通常这样做,并在它前面留下到 HTTP 的 SSL 握手/打开文本连接。

于 2013-01-23T19:43:35.613 回答
1

只需删除<transport-guarantee>CONFIDENTIAL</transport-guarantee>,您的 bean 也将在 http 和 https 上可用。 <transport-guarantee>CONFIDENTIAL</transport-guarantee>意味着严格的安全性,任何来的http请求都会被重定向到https(ssl)。

删除它<transport-guarantee>CONFIDENTIAL</transport-guarantee>,您将获得很大的灵活性。

于 2013-01-24T11:13:25.650 回答
1

我知道这是一个很老的问题。但是,我想提供这个答案,因为我最近遇到了完全相同的问题。

根据 Oracle 文档:

  • 当应用程序要求传输数据时指定 CONFIDENTIAL 以防止其他实体观察传输的内容。
  • 指定 NONE 表示容器必须接受任何连接上的受约束请求,包括不受保护的请求。

由于这仅仅是一个传输保证,NONE 值应该为您提供所需的功能,即 EJB Web 服务同时响应 http 和 https 请求。

这里的问题是 Glassfish 中的一个错误,它显然限制您接受对您的 EJB Web 服务的 http 或 https 请求:

根据上一个 jira 任务,该问题应该已修复并从 Glassfish 4.0_b75 开始工作。

于 2013-10-10T13:00:52.640 回答