Netbeans调试Web服务和Web客户端

时间:2017-03-15 22:21:15

标签: java web-services netbeans

我使用Netbeans创建部署在Glashfish上的Web客户端和Web服务(在调试模式下)。

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

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

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

1 个答案:

答案 0 :(得分:1)

一些想法:

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

在调试模式下安装SOAP-UI后启动glassfish。部署您的Web服务。创建一个新的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服务需要在特殊标题部分中使用GUUID和消息日期时间,因此我执行以下操作:

<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和其他服务器完成了这项工作,因此它可以工作。