使用 NetBeans IDE 5.0 开发 Web 服务客户端快速入门指南


请注意,这是一个草案文档,其中的文本和屏幕快照均不反映 NetBeans IDE 5.0 中 Web 服务支持的最终状态。

这份快速入门指南为您介绍如何利用 NetBeans IDE 5.0 快速、轻松地使用实时 Web 服务。它展示了 NetBeans IDE 5.0 中可用的 Web 服务功能,但未深入探讨更多的细节。如需了解详细信息,请参见使用 NetBeans IDE 5.0 开发 Web 服务客户端教程。

在此快速入门指南中,您可实现一个使用能复原变位词的 Web服务的 Java 项目。

我们特意简化了场景,当然您可以对其加以扩展。使用 NetBeans IDE 5.0 开发 Web 服务客户端教程提供了一个更有用的示例,该示例更为复杂和健壮。

本教程介绍以下主题:

安装并设置完毕后,本教程可以在 20 分钟内完成。

注意: 使用 Web 服务的应用程序的能力取决于其最弱的 Web 服务。无论是移除所使用的某个 Web 服务,还是此服务出于某些原因无法正常运行,基于它的整个应用程序将会崩溃。对于本快速入门指南和它所基于的Web服务也是同样。不能保证本指南所用的服务总是可用的。但是,即使它们不是一直可用,以下内容也应提供了足够的一般信息,可使您了解如何使用服务,而不单纯是演示服务。

设置环境

开始编写代码之前,必须确保您具备所有必要的软件。

安装软件

开始之前,需要在计算机上安装如下软件:

  • NetBeans IDE 5.0(下载)。
  • Java Standard Development Kit (JDKTM) version 1.4.2(下载)或 5.0(下载

在 Java 项目中使用 Web 服务

使用 Web 服务包括四个步骤:使用 Web 服务客户端向导通过 Web 服务的 WSDL 文件创建基本 Web 服务客户端、使用 IDE 的内置客户端测试 Web 服务、使用自己的代码开发客户端,最后部署结果。

创建客户端

  1. 选择 File > New Project (Ctrl-Shift-N)。在 Categories 下选择 Samples,然后选择 General。在 Projects下,选择 Anagram Game。单击 Next,然后单击 Finish。

    在 IDE 中打开 AnagramGame 样例。

  2. 右键单击 AnagramGame 项目节点,选择 New > Web Service Client。Web服务客户端向导出现。此向导用于获得客户端所基于的 WSDL 文件并用于生成使客户端能够连接到 Web 服务的文件和代码片段。

  3. 3. 在 Web 服务客户端向导中指定要使用的 WSDL 文件。在此例中,使用恢复变位词的 Web 服务。在 WSDL URL 字段中输入如下 URL:

    http://services.aonaware.com/CountCheatService/CountCheatService.asmx

    单击 Retrieve WSDL 下载。如果您位于防火墙后面,可能需要设置代理,否则无法下载 WSDL。在这种情况下,请单击 Proxy Settings 并设置代理主机和端口号。

  4. 输入 com.toy.anagrams.cheat 作为包的名称。包名称指定将在其中生成客户端文件的包。

  5. 单击 Finish。单击 Upgrade Project。

    在 Projects 窗口的 Web Service References 节点中,您应看到如下内容:

    Projects 窗口。

    Projects 窗口显示名为“CountCheatService”的 Web 服务使您的应用程序可使用操作“letterSolutions”和“letterSolutionsMin”。在 Files 窗口中,可在项目的 build 文件夹中看到由 Web 服务客户端向导所生成的文件。

测试 Web 服务

  1. 在 Projects 窗口的 Web Service References 节点中,双击“letterSolutionsMin”操作。出现 Test Web Service Operation 对话框。

  2. 键入“batsartcoin”作为 anagram 参数,键入“11”作为“minLetters”参数。

  3. 单击 Submit 按钮。执行此步骤时,将联系 Web 服务并调用操作。

  4. 等待获得引用(这不会占用太长的时间),单击对话框底部的 Value,随后看到的结果应与下图类似:

    Projects 窗口。

注意: 如果您看到的结果与上图相似,说明测试已经成功。Web 服务已启动并运行,且返回了引用。若未返回引用,且您位于防火墙后,请参见故障排除的第二部分以获得帮助。

开发客户端

  1. 在 Projects 窗口中展开 Source Packages,然后展开 com.toy.anagrams.ui。双击 Anagrams.java 在 Source Editor 中打开它。

  2. 双击 Guess 按钮将文本更改为 Cheat。

  3. 右键单击 Cheat 按钮,选择 Events > Action > actionPerformed[guessedWordActionPerformed]。

    Source Editor中将显示 guessedWordActionPerformed 源代码。

  4. guessedWordActionPerformed 方法的开头处添加一些空行,右键单击并选择 Web service Client Resources > Call Web Service Operation。

  5. 在 Invoke 对话框的 Select Operation 中选择 letterSolutionsMin,单击 OK。

    在方法的顶部可看到调用 Web 服务的代码片段。添加一些代码,将 anagram 从 game 传递到 Web 服务,然后重新排列方法中生成的代码,整个代码的形式如下(红色的代码是新添加到此方法中的):

     private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {
    
      String anagram = scrambledWord.getText();
      int no_of_letters = anagram.length();
    
      try {
          com.toy.anagrams.cheat.CountCheatService countCheatService = new com.toy.anagrams.cheat.CountCheatService_Impl();
          com.toy.anagrams.cheat.CountCheatServiceSoap countCheatServiceSoap = countCheatService.getCountCheatServiceSoap();
          String[] s = countCheatServiceSoap.letterSolutionsMin(anagram,no_of_letters).getString();
    
          if (s.length > 0) {
    	 for (int i = 0; i < s.length; i++) {
                  guessedWord.setText(s[i]);
    	 }
             if (WordLibrary.isCorrect(wordIdx, guessedWord.getText())){
                feedbackLabel.setText("Correct! Try a new word!");
                getRootPane().setDefaultButton(nextTrial);
             } else {
                feedbackLabel.setText("Incorrect! Try again!");
                guessedWord.setText("");
             }
          } else {
             feedbackLabel.setText("Sorry... word not recognized!");
          }
    
      } catch(javax.xml.rpc.ServiceException ex) {
           // TODO handle ServiceException
      } catch(java.rmi.RemoteException ex) {
           // TODO handle remote exception
      }      
      guessedWord.requestFocusInWindow();
     }

部署客户端

  1. 右键单击 Project 节点,然后选择 Run Project。

  2. 项目运行。您将看到带有 Cheat 按钮而不是 Guess 按钮的 Anagram Game。您将看到带有 Cheat 按钮而不是 Guess 按钮的 Anagram Game。

  3. 单击 Cheat。变位词被发送给 Web 服务、复原、返回并显示在文本框中,Anagram Game 进行检查:

    Projects 窗口。

注意: 如果您位于防火墙后,并且未为项目设置代理主机和端口号,Anagram Game 中将不会显示由 Web 服务返回的复原后的变位词,而是不显示任何内容。参见故障排除以获得帮助。

就是这些。我们已经完成了任务。您使用了变位词复原 Web 服务,且并未编写太多的代码。


故障排除

由于 IDE 提供与 Web 服务通信所需的大多数代码,所以只有您遇到的问题才是自己的代码中的错误。此外,虽如此,如果您在防火墙后面,则可能会遇到几个问题。随后的故障排除提示将试图解决这一问题。

  • 部署 Java 应用程序。 如果在 IDE 中运行 Java 应用程序时未设置代理主机和端口号,将不会返回复原的变位词。

    要解决此问题,则执行以下操作:

    1. 右键单击项目并选择 Properties。

    2. 在 Project Properties 对话框中,单击 Run 并在 VM 选项对话框中设置代理主机和端口,格式如下:
      -Dhttp.proxyHost=my.host -Dhttp.proxyPort=my.port.number

  • 在 IDE 中测试。 如果在 IDE 中测试应用程序时未正确地设置代理主机和端口,IDE 中将显示如下错误:

    代理问题 1

    要解决此问题,则执行以下操作:

    1. 选择 Tools > Options。

    2. 在 Options 窗口中,设置代理主机和端口号。

下一步

要发送评论和建议、获得支持和随时获得关于 NetBeans IDE J2EE 开发特性的最新发展情况,请加入 nbusers@netbeans.org 邮件列表。

 
 
 搜索