【问题标题】:How can I change soap address in a JBoss 7 java webservice如何在 JBoss 7 java webservice 中更改肥皂地址
【发布时间】:2012-07-17 17:42:56
【问题描述】:

如何更改网络服务中的肥皂地址。我正在开发 JBoss 7.1.1。

我有这个网络服务类:

@WebService
public class Card {

   @WebMethod
   public CardResponseDTO insertCard(
           @WebParam(name = "cardRequestCardDTO") CardDTO cardDTO,
           @WebParam(name = "userName") String userName) {

       Date today;
       CardResponseDTO cardResponseDTO = new CardResponseDTO();

       try {
            today = Calendar.getInstance().getTime();
            // My logic in here...
            return cardResponseDTO;
       } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            cardResponseDTO.setErrorCode(-2);
            cardResponseDTO.setErrorMessage(ex.getMessage());
            return cardResponseDTO;
       }
   }
}

当我在本地主机上工作时,可以很好地使用这个 WSDL:

<wsdl:service name="CardService">
  <wsdl:port binding="tns:CardServiceSoapBinding" name="CardPort">
    <soap:address location="http://localhost:8080/inventory-ws/Card"/>
  </wsdl:port>
</wsdl:service>

但是当我部署到名为 server1.somedomain.com 的服务器时,它不起作用,因为我只有 http://server1:8080/ ...

<wsdl:service name="CardService">
  <wsdl:port binding="tns:CardServiceSoapBinding" name="CardPort">
     <soap:address location="http://server1:8080/inventory-ws/Card"/>
  </wsdl:port>
</wsdl:service>

我需要的是如何让它在我的服务器中使用完整的 url:server1.domedomain.com。

提前致谢。

【问题讨论】:

    标签: java jax-ws jboss7.x


    【解决方案1】:

    如果您需要为公共访问部署 SOAP Web 服务,例如通过 Apache,您可以在 standalone.xml 中删除这一行:&lt;wsdl-host&gt;${jboss.bind.address:127.0.0.1}&lt;/wsdl-host&gt;
    然后主机名将从 WSDL URL 中获取。
    在这种情况下,您不需要为每个部署阶段更改配置。例如 dev.myhost.com、qa.myhost.com 或 ww.myhost.com。

    这也避免了公共服务使用错误的 SSL 端口 8443 的问题。

    【讨论】:

      【解决方案2】:

      为了澄清,

      在standalone.xml中,就在标签下面:

      <subsystem xmlns="urn:jboss:domain:webservices:1.1">
      

      您必须修改这些条目

      <modify-wsdl-address>true</modify-wsdl-address>
      <wsdl-host>www.myhost.com</wsdl-host>
      

      更改端口:

      <wsdl-port>80</wsdl-port> <!-- case you need change port, instead 8080 -->
      <wsdl-secure-port>443</wsdl-secure-port> <!-- case you need change port, instead 8443 -->
      

      更改 URI 架构:

      <wsdl-uri-scheme>https</wsdl-uri-scheme> <!-- or http for non secure -->
      

      【讨论】:

      • 我们如何处理端口?就我而言,我不希望端口出现在肥皂地址中,但确实如此。无法将我提供的 wsdl-port 覆盖为空白,因为它会引发解析错误。
      【解决方案3】:

      你必须配置 jboss 来监听你想要的接口。 为此,您必须编辑standalone.xml 文件并添加一些新的接口标签。 我认为这篇文章可能有用。 https://community.jboss.org/message/614897

      【讨论】:

      • 谢谢@ppapapetrou,我只是在standalone.xml上进行了更改www.myhost.com
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多