java - Netbeans 调试 Web 服务和 Web 客户端

标签 java web-services netbeans

我正在使用 Netbeans 创建 Web 客户端和 Web 服务,并将其部署在 Glashfish 上(在 Debug模式下)。

我在 Web 服务中放置了一些断点,但是当我启动 Web 客户端(在调试中)并触发对 Web 服务方法的调用时,它永远不会在我设置的断点处停止。

我确实得到了正确的 SOAP 响应,因此我知道 Web 服务的代码已执行。 有没有办法在启动 Web 客户端时调试 Web 服务?

现在,我在 Web 服务中使用 Main 类来模拟客户端,或者对于不使用复杂类型的方法,我可以使用 Netbeans 中的“测试 Web 服务”。

最佳答案

一些想法:

  • 获取 SOAP-UI 进行测试。它比你能做的任何客户都要好得多 产生。您还可以在服务之间使用它。

安装 SOAP-UI 后,以 Debug模式启动 glassfish。部署您的网络服务。创建一个新的 SOAP-UI 项目并将其指向您部署的 Web 服务的 WSDL 文件。

警告:SOAP-UI 并不漂亮,但它非常好。

导入 WSDL 后,打开 SOAP 项目节点,直到看到 Web 服务的操作。

您应该看到类似这样的内容:

SOAP UI

扩展操作并填写请求中缺失的部分。缺失值将用 ? 指示在 XML 请求中,它们在初始请求中应如下所示:

   <ecol:accountTotalDue>
           <!--Optional:-->
           <acc:AccountKeyInfo>
              <!--Optional:-->
              <acc:Client_Ref>?</acc:Client_Ref>
              <!--Optional:-->
              <acc:Debt_ID>?</acc:Debt_ID>
           </acc:AccountKeyInfo>
           <!--Optional:-->
           <acc:Total_Due>?</acc:Total_Due>
        </ecol:accountTotalDue>

您可以像这样对它们进行硬编码:

    <ecol:accountTotalDue>
           <!--Optional:-->
           <acc:AccountKeyInfo>
              <!--Optional:-->
              <acc:Client_Ref>12834756183754</acc:Client_Ref>
              <!--Optional:-->
              <acc:Debt_ID>?</acc:Debt_ID>
           </acc:AccountKeyInfo>
           <!--Optional:-->
           <acc:Total_Due>10000000.00</acc:Total_Due>
        </ecol:accountTotalDue>

请注意,您也可以编写它们的脚本,例如我的 Web 服务需要在特殊 header 部分中包含 GUID 和消息日期时间,因此我执行以下操作:

<irix:MsgReqHdr>
         <irix:MsgGUID>${=java.util.UUID.randomUUID()}</irix:MsgGUID>
           <!--Optional:-->
           <irix:MsgDateTime>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</irix:MsgDateTime>
</irix:MsgReqHdr>

您可以设置不同的请求来测试不同的场景。如果您正在进行认真的 Web 服务开发,那么它确实是必须具备的。它还进行 REST。

这对我来说通常比​​其他任何事情都更有效。我已经用 JBoss、Glassfish、Karaf、Fuse 和其他服务器完成了此操作,因此它可以工作。

关于java - Netbeans 调试 Web 服务和 Web 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42821802/

相关文章:

c# - 如何在一个类中创建一组方法/属性?

web-services - 使用通过网页获取的智能卡凭据

java - Netbeans 中的 iReport 插件缺少预览和设计器按钮

java - 使用 XSOM 从元素获取 minOccurs 属性

java - jBloomberg api 获取股票报价异常

java - 将 Arquillian 测试与 Google App Engine (GAE) 结合使用

java - 尝试在 java 中使用 getResourceAsStream 时出现问题

java - 如何在apache tomcat中配置域名

git - Netbeans:如何显示将被推送的所有 (git) 提交?

xml - NetBeans:如何提供离线 XML 模式?