NetBeans IDE 5.0 快速入门指南

来源:互联网 发布:mac系统最新版本 编辑:程序博客网 时间:2024/06/05 17:37

Web 服务是分布式应用程序组件,它们符合一定的标准,因而可供外部使用。分布式环境的激增对企业提出了新的要求,企业必须能够通过开放式网络将某个应用程序的全部或部分功能向其他应用程序公开。使用 Web 服务,可以解决独立开发并在各种不同软件和硬件平台上运行的应用程序的集成问题。

NetBeans IDE 5.0 与基于 JSR-109 的 Web 服务支持捆绑在一起,JSR-109 是一种开发范例,它适用于基于 JAX-RPC (JSR-101) 的 J2EE 开发。NetBeans IDE 5.0 中的 Web 服务功能是端到端 J2EE 功能集的一部分。另外,NetBeans IDE 5.0 还提供了一些向导,用于创建 Web 服务和 Web 服务客户端。

在本教程中,您将实现以下方案之一

  • 由 Servlet 公开的 Web 服务。
  • 由会话 Bean 公开的 Web 服务。
请注意,您必须从要实现的两个方案中选择一个。

本教程介绍了以下主题:

  • 设置环境
  • 开发 Web 服务
  • 公开 Web 服务
  • 使用 Web 服务
  • 疑难解答

在安装和设置完所有内容后,可以在 30 分钟内完成本教程。

设置环境

在开始编写代码之前,您必须确保已安装了所有必需的软件,并且正确设置了服务器。

安装软件

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

  • NetBeans IDE 5.0(下载
  • 服务器(以下任一服务器):
    • Sun Java System Application Server Platform Edition 8 2005Q1 (下载)
  • Java Standard Development Kit (JDKTM) 1.4.2 版(下载)或 5.0 版(下载

注册服务器

在使用 Web 服务之前,必须注册 Sun Java System Application Server 实例。如果安装了 NetBeans IDE 5.0/SJS Application Server 包,则会自动注册本地 Sun Java System Application Server。

  • 如果要部署到其他服务器(如 JBoss Application Server 或 Tomcat Web Server),请选择“帮助”>“帮助内容”,然后阅读相关的帮助主题。
  1. 从主窗口中选择“工具”>“服务器管理器”。
  2. 单击“添加服务器”。选择服务器,并为该实例指定名称。然后单击“下一步”。
  3. 指定应用服务器的安装目录(例如,C:/Sun/Appserver),将“注册本地缺省域”单选按钮保持选中状态,然后单击“下一步”。
  4. 从“位置”组合框中选择应用服务器的本地实例的位置。
  5. (可选)单击“下一步”,输入管理员用户名和口令。如果不希望在 IDE 用户目录中存储用户名和口令,可以将这些字段保留为空。IDE 在每次需要此信息时会提示您输入。
    注意:Sun Java System Application Server 的缺省管理员口令是 adminadmin
    • 有关 SJS Application Server 的详细信息
  6. 单击“完成”。
  7. 单击“运行环境”窗口,然后展开“服务器”节点。将列出新的服务器实例。
  8. 右键单击应用服务器的节点,然后选择“启动服务器”。

开发 Web 服务

对 Web 服务进行编码非常容易。IDE 会处理所有实现细节,因此您可以集中精力对 Web 服务的业务逻辑进行编码。

创建项目

  1. 决定是要从 Web 应用程序还是会话 Bean 中公开 Web 服务。
  2. 选择“文件”>“新建项目”(Ctrl-Shift-N),然后根据上一步中的决定执行以下操作之一:
    • 在“类别”下选择 "Web",然后在“项目”下选择“Web 应用程序”。单击“下一步”。
    • 在“类别”下选择“企业”,然后在“项目”下,选择“EJB 模块”。单击“下一步”。
  3. 将项目命名为 HiWS,将“项目文件夹”更改为计算机中的任何文件夹,并确保在“服务器”下拉列表中选择了所选的服务器。请注意,“服务器”下拉列表中仅列出了在 IDE 中注册的服务器。
  4. 单击“完成”。

创建 Web 服务

  1. 右键单击项目节点,然后选择“新建”>“Web 服务”。将 Web 服务命名为 HiWS,在“包”字段中键入 org.me.hi,然后单击“完成”。

    创建并编译 Web 服务时,需要等待几秒钟。将在源代码编辑器中打开一个名为 HiWSImpl.java 的实现类(在 Web 应用程序中),或者打开一个名为 HiWSBean.java 的会话 Bean(在 EJB 模块中)。

  2. 在“项目”窗口中,展开“Web 服务”节点,右键单击 HiWS Web 服务节点,然后选择“添加操作”。在“名称”字段中键入 sayHi,然后在“类型”下拉列表中键入 "String"。单击“添加”并定义一个名为 s 且类型为 java.lang.String 的参数。单击“确定”。

     

  3. 在“添加操作”对话框中,单击“确定”以创建操作框架。

    展开“源包”节点和 org.me.hi 节点。双击 HiWSSEI.java 节点,并注意已在接口类中声明了操作并抛出 java.rmi.RemoteException 异常。

  4. 在源代码编辑器中,将操作框架填写到实现类或会话 Bean 中。该类为 HiWSImpl.java(在 Web 应用程序中)或 HiWSBean.java(在 EJB 模块中)。要执行此操作,请在 sayHi 操作的主体中将 "return null;" 替换为以下代码:
        return "Hi " + s + "!";

    现在,新的 sayHi 方法应如下所示:

        public java.lang.String sayHi(java.lang.String s) throws java.rmi.RemoteException {   return "Hi " + s + "!";    }

生成和配置 SOAP 消息处理程序以进行记录

(可选)可以使用 SOAP 消息处理程序提供的功能来丰富 Web 服务的内容。在此可选节中,可以创建一个记录程序。

  1. 右键单击项目节点,然后选择“新建”>“文件/文件夹”。在“类别”下选择“Web 服务”,然后在“文件类型”下选择“消息处理程序”。单击“下一步”。
  2. 将消息处理程序命名为 HiWSLogger,在“包”下拉列表中选择 org.me.hi,然后单击“完成”。

    将创建一个名为 HiWSLogger.java 的实现类,并在源代码编辑器中将其打开。不必添加或更改任何代码,您现在就拥有了一个记录程序,因为 IDE 消息处理程序模板提供的缺省代码可提供完备的记录程序功能。

  3. 在“项目”窗口中,展开“Web 服务”节点,右键单击 HiWS 节点,然后选择“配置处理程序”。在“配置 SOAP 消息处理程序”对话框中,单击“添加”,然后找到 HiWSLogger 类。单击“确定”。

    将在对话框中列出消息处理程序类。

  4. 单击“确定”完成 SOAP 消息处理程序的配置。

    展开“配置文件”节点。双击 webservices.xml 节点,并注意已声明了处理程序。


公开 Web 服务

在公开 Web 服务时,可以使其供客户端使用。可以使用 IDE 作为客户端,以便在部署后对其进行测试。

部署 Web 服务

根据 Web 服务的实现方式,请执行以下操作之一:

  • 对于作为 Web 应用程序实现的 Web 服务,请执行以下操作:
    1. 选择“工具”>“选项”,然后从“Web 浏览器”下拉列表中选择您的浏览器。单击“确定”。
    2. 在“项目”窗口中右键单击 HiWS 项目节点,然后选择“属性”。在“项目属性”对话框中,选择“运行”窗格。在“相对 URL”文本框中键入 /HiWS?WSDL。“相对 URL”文本框用于指定要作为应用程序入口点运行的、相对于上下文路径的 URL。单击“确定”。
    3. 如果您处于公司防火墙的保护下,并且需要设置代理主机和端口号,请参见疑难解答
    4. 在“项目”窗口中右键单击 HiWS 项目节点,然后选择“运行项目”。

      将启动该服务器并部署 Web 服务。此时应该会看到在浏览器中显示 Web 服务的 WSDL 文件。WSDL 文件发布 Web 服务的端点,以使负责创建 Web 服务客户端的开发者能够知道 Web 服务可以提供哪种功能。

  • 对于作为会话 Bean 实现的 Web 服务,请在“项目”窗口中右键单击 HiWS 项目,然后选择“部署项目”。将启动该服务器并部署 Web 服务。请注意,浏览器中不显示会话 Bean。

要能够创建“使用 Web 服务”一节中所述的 Web 服务客户端,必须始终部署 Web 服务。

注册和测试 Web 服务

  1. 在“项目”窗口中,展开“Web 服务”节点,右键单击 HiWS Web 服务节点,然后选择“添加到注册表”。

    您可能会收到一条如下所示的错误消息:

       Unable to add web service to registry. Make sure it has been deployed,   the server is running, and the correct WSDL URL was entered.

    如果收到此错误消息,请确保已经部署了 Web 服务,然后再次选择“添加到注册表”。

    将出现一个对话框,其中推荐了可用于注册 Web 服务的 URL。

  2. 记下该 URL,因为稍后在创建 Web 服务客户端时需要使用它。单击“确定”。
  3. 在“运行环境”窗口 (Ctrl-5) 中,展开“Web 服务”节点,然后继续展开节点,直至找到 sayHi 节点。右键单击 sayHi 节点,然后选择“测试操作”。在“测试 Web 服务操作”对话框的“值”文本框中键入 "John",然后单击 "Submit"。将在对话框底部显示结果 "Hi John!"。单击“关闭”。
  4. 查看服务器日志,以查看消息处理程序生成的日志消息。例如,如果使用 Sun Java System Application Server,请展开“运行环境”窗口中的“服务器”节点,右键单击服务器的节点,然后选择“查看服务器日志”。将显示 server.log 文件,文件末尾包含一条如下所示的消息:
       |Log message: Wed Sep 07 10:47:45 CEST 2005--sayHi String_1:John |#]

    这是由上一节中创建的 SOAP 消息处理程序生成的日志消息。

如果测试操作之后,认为 Web 服务的功能可以满足要求,并可能会对其他人有用,则可以保持部署 Web 服务,从而使其能够用于需要它的客户端。


使用 Web 服务

使用 Web 服务是指客户端在使用 Web 服务时所执行的操作。使用 IDE 可以很容易地设置客户端,以使其使用 Web 服务。可以使用向导来导入描述 Web 服务接口的 WSDL 文件。然后,可以将其集成到客户端中,以使该 Web 服务完成一些有用的工作。

注意:可以在 Web 应用程序或 Java 应用程序中使用 Web 服务。在随后的示例中,将只在 Web 应用程序中使用 Web 服务。有关 Web 服务客户端(无论是在 Web 应用程序还是 Java 应用程序中实现)的详细信息,请参见 NetBeans IDE 5.0 Web 服务客户端快速入门指南

创建 Web 应用程序项目

  • 选择“文件”>“新建项目”(Ctrl-Shift-N)。在“类别”下选择 "Web"。在“项目”下选择“Web 应用程序”。单击“下一步”。将项目命名为 HiWSClient,将“项目文件夹”更改为计算机中的任何文件夹,并确保在“服务器”下拉列表中选择了所选的服务器。单击“完成”。

搜索有关 Web 服务的信息

  1. 右键单击 HiWSClient 项目节点,然后选择“新建”>“Web 服务客户端”。将正在运行的 Web 服务的 URL 复制并粘贴到 WSDL URL 文本框中。例如,URL 可能如下所示:
    http://localhost:8080/HiWS/HiWS?WSDL
  2. 单击“检索 WSDL”。如果“本地文件名”文本框中填写了 WSDL 文件名,则说明已经正确检索到了 WSDL 文件。在“包”字段中键入 org.me.hi
  3. 根据服务器的不同,请执行以下相应的操作:
    • 对于 Sun Java System Application Server,请选择 J2EE 容器生成的静态桩模块。
    • 对于其他服务器(如 JBoss Application Server 或 Tomcat Web Server),可能需要选择 IDE 生成的静态桩模块。
  4. 单击“完成”。
  5. 展开“Web 服务引用”节点,然后继续展开节点,直至找到 sayHi 节点。右键单击 sayHi 节点,然后选择“测试操作”。在“测试 Web 服务操作”对话框的“值”文本框中键入 "John",然后单击 "Submit"。将在对话框底部显示结果 "Hi John!"。在对操作进行测试后,如果认为公开的 Web 服务有用,则可以开发一个客户端应用程序与之进行交互。

开发 Web 服务客户端

  1. 右键单击 HiWSClient 项目节点,然后选择“新建”> "Servlet"。将 Web 服务命名为 HiServlet,在“包”下拉列表中键入 org.me.hi,单击“下一步”,然后单击“完成”。将在源代码编辑器中打开 Servlet HiServlet.java
  2. 在源代码编辑器中,在 HiServlet 类的 processRequest 操作中单击鼠标右键。选择“Web 服务客户端资源”>“调用 Web 服务操作”,选择 sayHi 操作,然后单击“确定”。
  3. 现在即可填写生成的框架代码,以使其如下所示:
       try {       out.println(getHiWSSEIPort().sayHi("John"));   } catch(java.rmi.RemoteException ex) {       out.println("<p>Caught an exception <p>" + ex);   }

     

  4. 重新整理代码片段,使其位于 processRequest 方法的 <body> 标记之间:
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {     response.setContentType("text/html;charset=UTF-8");     PrintWriter out = response.getWriter();     out.println("<html>");     out.println("<head>");     out.println("<title>Servlet HiServlet</title>");     out.println("</head>");     out.println("<body>");     try {         out.println(getHiWSSEIPort().sayHi("John"));     } catch(java.rmi.RemoteException ex) {         out.println("<p>Caught an exception <p>" + ex);     }     out.println("</body>");     out.println("</html>");     out.close(); }

     

  5. 接下来,为使用户能够与 Web 服务进行交互,将一个窗体添加到 Servlet 中,并将用户的输入传递给 Web 服务(仅下面的红色代码与上面的代码不同):

     

     protected void processRequest(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {     response.setContentType("text/html;charset=UTF-8");     PrintWriter out = response.getWriter();     out.println("<html>");     out.println("<head>");     out.println("<title>Servlet HiServlet</title>");     out.println("</head>");     out.println("<body>");     out.println("<p>Enter your name:</p>");     out.println("<form method=/"get/">");     out.println("<input type=/"text/" name=/"name/" size=/"25/">");     out.println("<br>");     out.println("<p>");     out.println("<input type=/"submit/" value=/"Submit/">");     out.println("</form>");     String name = request.getParameter("name");     if ( name != null ) {        try {      out.println(getHiWSSEIPort().sayHi(name));        } catch(java.rmi.RemoteException ex) {          out.println("<p>Caught an exception <p>" + ex);        }     }     out.println("</body>");     out.println("</html>");     out.close(); }

    不要忘记将字符串 "John" 更改为变量 name,如以上代码中所示!

     

部署 Web 服务客户端

  1. 在“项目”窗口中右键单击 HiWSClient 项目节点,然后选择“属性”。在“项目属性”对话框中,选择“运行”窗格。执行以下操作:
    • 在“服务器”下拉列表中选择服务器。
    • 在“相对 URL”文本框中键入 /HiServlet
    • 单击“确定”。
  2. 在“项目”窗口中右键单击 HiWSClient 项目,然后选择“运行项目”。

    将部署 Web 服务客户端。在 IDE 的缺省浏览器中,应该会看到如下所示的内容:

    部署的客户端 1

     

  3. 键入 "John",然后单击 "Submit"。现在,您应该会看到以下内容:

    部署的客户端 2


疑难解答

由于 IDE 提供了与 Web 服务通信所需的大部分代码,因此,您遇到的问题只可能来自您自己代码中的错误。另外,如果您处于防火墙的保护下,也可能会遇到一些问题。后面的疑难解答提示就是试图解决该问题的。

  • 部署到 Sun Java System Application Server。如果在部署应用程序时未正确设置代理主机和端口,将会在浏览器中看到与以下类似的内容:

    代理问题 1

    要解决此问题,请按照下列步骤操作:

       

    1. 在“运行环境”窗口中,确保 Sun Java System Application Server 正在运行。如果它正在运行,服务器名称左侧会显示绿色箭头。

       

    2. 展开 Sun Java System Application Server 节点,右键单击 JVM 节点,然后选择“属性”。

       

    3. 单击 JVMOptions 属性右侧的省略号。

       

    4. 将以下两个属性添加到列表中:

         

      • -Dhttp.proxyHost=my.host

         

      • -Dhttp.proxyPort=my.port.number

      确保为这些属性设置的值与适用于您的环境。

     

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

    代理问题 1

    要解决此问题,请按照下列步骤操作:

       

    1. 选择“工具”>“选项”。

       

    2. 在“选项”窗口中,设置代理主机和端口号。