JAX-WS Web 服务入门指南

http://netbeans.org/kb/docs/websvc/jax-ws_zh_CN.html

创建 Web 服务

本练习旨在创建一个适用于确定要使用的部署容器的项目。具有项目后,您将在其中创建一个 Web 服务。

选择容器

您可以在 Web 容器或 EJB 容器中部署 Web 服务。这取决于您的具体选择。例如,如果您计划部署到只有一个 Web 容器的 Tomcat Web Server,请创建一个 Web 应用程序,而不是 EJB 模块。

  1. 选择“文件”>“新建项目”(Ctrl-Shift-N)。从 "Web" 类别中选择“Web 应用程序”,或从“企业”类别中选择“EJB 模块”。
  2. 将该项目命名为 CalculatorWSApplication
  3. 根据您要使用的部署服务器,执行以下操作:
    • 对于 GlassFish,请将“Java EE 版本”设置为 "Java EE 5"。
    • 对于 Tomcat Web Server,请取消选中“将源代码级别设置为 1.4”复选框。
  4. 单击以浏览其余页面,然后单击“完成”。

通过 Java 类创建 Web 服务

  1. 右键单击 "CalculatorWSApplication" 节点,然后选择“新建”>“Web 服务”。
  2. 将该 Web 服务命名为 CalculatorWS ,在“包”中键入 org.me.calculator ,然后单击“完成”。

    “项目”窗口将显示新 Web 服务的结构,并且编辑器区域将出现可视设计器。对于 Web 应用程序,您现在会看到以下内容:


    显示 Web 服务的“项目”窗口

设计 Web 服务

本练习旨在向 Web 服务中添加一项操作,该操作用于添加从客户端接收到的两个数字。

向 Web 服务中添加操作

  1. 在可视设计器中单击“添加操作”。将显示一个对话框,您可以在其中定义新操作。
  2. 在“添加操作”对话框的上半部分中,在“名称”中键入 add ,并在“返回类型”下拉列表中键入 int 。在“添加操作”对话框的下半部分中,单击“添加”以创建 int 类型的参数 i 。然后,再次单击“添加”以创建 int 类型的参数 j

    现在,您将看到以下内容:


    “添加操作”对话框
  3. 在“添加操作”对话框的底部,单击“确定”。

    现在,可视设计器将显示以下内容:


    Web 服务可视设计器,其中显示了已添加的操作
  4. 单击“源”,此时您会注意到前面的步骤生成了如下所示的源代码:
    结果
  5. 在编辑器中,将框架 add 操作扩展为以下代码(所做的更改以粗体显示):
        @WebMethod
    public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
    int k = i + j;
    return k ;
    }

正如您在上面的代码中所看到的一样,Web 服务仅接收两个数字,然后返回二者之和。在下一部分中,您将使用 IDE 测试 Web 服务。

部署和测试 Web 服务

将 Web 服务部署到 Web 容器时,您可以使用 IDE 测试 Web 服务,以便查看其功能是否符合预期效果。IDE 中集成了 GlassFish 所提供的测试器应用程序,使用它可以实现此目的。Tomcat Web Server 也有一种类似的工具。在 GlassFish 的测试器页上,您可以输入值并对其进行测试,但是 Tomcat Web Server 却不具备此功能。对于后一种情况,您只能看到已部署 Web 服务,而无法测试值。当前还没有用于测试 EJB 模块是否成功部署的工具。

测试是否成功部署到 Web 容器:

  1. 右 键单击项目,然后选择“取消部署后再次部署”。IDE 将启动应用服务器,生成应用程序,然后将应用程序部署到服务器。您可以在“输出”视图中的 "CalculatorWSApplication (run-deploy)" 以及 "GlassFish " 或 "Tomcat" 标签中看到这些操作的进度。
  2. 在 IDE 的“项目”标签中,展开 CalculatorWSApplication 项目的“Web 服务”节点。右键单击 "CalculatorWS" 节点,然后选择“测试 Web 服务”。
    显示“测试 Web 服务”上下文菜单选项的“项目”标签

    IDE 将在浏览器中打开测试器页(如果您已将 Web 应用程序部署到 GlassFish 中)。对于 Tomcat Web Server 和 EJB 模块的部署,情况有所不同:

    • 如果已部署到 GlassFish,请在测试器页中键入两个数字,如下所示:
      将 Web 服务成功部署到 GlassFish 时显示的 Web 服务测试器页

      将显示这两个数字之和:


      显示 Web 服务测试结果的 Web 页
    • 如果已部署到 Tomcat Web Server,您将看到以下内容,用于指示您已成功部署 Web 服务:
      将 Web 服务成功部署到 Tomcat 服务器时显示的 Web 页
    • 右键单击项目节点,选择“属性”,然后单击“运行”。根据您要使用的部署服务器,执行以下操作:
      • 对于 GlassFish,请在“相对 URL”字段中键入 /CalculatorWSService?Tester
      • 对于 Tomcat Web Server,请在“相对 URL”字段中键入 /CalculatorWS?Tester

      注意: 由于已部署的 EJB 模块的结果不会显示在浏览器中,因此您无法执行上述步骤(如果您正在使用 EJB 模块)。

使用 Web 服务

现在,您已经部署了 Web 服务,接下来需要创建一个客户端,以便使用 Web 服务的 add 方法。在这里,您将创建三个客户端:Java SE 应用程序中的 Java 类、Web 应用程序中的 Servlet 和 Web 应用程序中的 JSP 页。

注意: 开发 JAX-WS Web 服务客户端 是集中讨论客户端的更高级教程。

客户端 1:Java SE 应用程序中的 Java 类

在本部分中,您将创建一个标准的 Java 应用程序。用于创建应用程序的向导也可以创建 Java 类。之后,您将使用 IDE 的工具来创建一个客户端,并使用在本教程开始时创建的 Web 服务。

如果您将 JDK 6 与 NetBeans IDE 6.5 结合使用,则必须具备 JDK 6 Update 7 或更高版本。

  1. 选择“文件”>“新建项目”(Ctrl-Shift-N)。选择 Java 类别中的“Java 应用程序”选项。将该项目命名为 CalculatorWS_Client_Application 。将“创建主类”保留为选中状态,并接受所有其他缺省设置。单击“完成”。
  2. 右键单击 "CalculatorWS_Client_Application" 节点,然后选择“新建”>“Web 服务客户端”。
  3. 在“项目”中,单击“浏览”。浏览至要使用的 Web 服务。选定 Web 服务后,单击“确定”。
  4. 将其他设置保留为缺省值,然后单击“完成”。

    “项目”窗口将显示新的 Web 服务客户端,其中包括已创建的 add 方法的节点:


    “项目”窗口显示的 Java SE 应用程序中的新 Web 服务客户端
  5. 双击 "Main.java" 以在源代码编辑器中将其打开。删除 TODO 注释,然后将以上所述的 add 节点拖至空行中。现在,您将看到以下内容:
    public static void main(String[] args) {

    try { // Call Web Service Operation
    org.me.calculator.CalculatorWSService service = new org.me.calculator.CalculatorWSService();
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    // TODO initialize WS operation arguments here
    int i = 0;
    int j = 0;
    // TODO process result here
    int result = port.add(i, j);
    System.out.println("Result = "+result);
    } catch (Exception ex) {
    // TODO handle custom exceptions here
    }

    }

    注意: 或者,您也可以在编辑器中单击鼠标右键,然后选择“Web 服务客户端资源”>“调用 Web 服务操作”,而无需拖动 add 节点。

  6. 初始化两个 int 参数。只需将上面的两个 int 参数的值从 0 更改为其他整数(如 3 和 4)即可。
  7. 右键单击项目节点,然后选择“运行”。

    “输出”窗口将立即显示二者之和:

        compile:
    run:
    Result = 7
    BUILD SUCCESSFUL (total time: 1 second)

客户端 2:Web 应用程序中的 Servlet

在本部分中,您将创建一个新的 Web 应用程序,随后创建一个 Servlet。然后,借助该 Servlet 使用在本教程开始时创建的 Web 服务。

如果您使用的是 JDK 6,则必须具备 JDK 6 Update 7 或更高版本。

  1. 选择“文件”>“新建项目”(Ctrl-Shift-N)。从 "Java Web" 类别中选择“Web 应用程序”。将该项目命名为 CalculatorWSServletClient 。单击“完成”。
  2. 右键单击 "CalculatorWSServletClient" 节点,然后选择“新建”>“Web 服务客户端”。

    将显示“新建 Web 服务客户端”向导。

  3. 在“项目”中,单击“浏览”。浏览至要使用的 Web 服务。选定 Web 服务后,单击“确定”。
  4. 将其他设置保留为缺省值,然后单击“完成”。
  5. “项目”窗口中的“Web 服务参考”节点将显示新建客户端的结构,其中包括在本教程前面部分创建的 add 操作:


    “项目”窗口显示的 Servlet 中的新 Web 服务客户端
  6. 右键单击 "CalculatorWSServletClient" 项目节点,然后选择“新建”> "Servlet"。将该 Servlet 命名为 ClientServlet ,并将其置于名为 org.me.calculator.client 的包中。单击“完成”。
  7. 右键单击 "CalculatorWSServletClient" 项目节点,然后选择“属性”。打开“运行”属性,然后取消选中“在保存时部署”。
  8. 要使 Servlet 成为应用程序的入口点,请右键单击项目节点,选择“属性”,单击“运行”,然后在“相对 URL”中键入 /ClientServlet 。单击“确定”。
  9. 如果 ClientServlet.java 存在错误图标,请右键单击项目节点,然后选择“清理并生成”。
  10. 在源代码编辑器中,删除注释掉 processRequest 方法主体的行。该行如下所示:
        /* TODO output your page here

    接下来,删除被注释掉的代码部分结尾的行:

        */

    在以下行后添加一些空行:

        out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");

    现在,将表示 add 操作的节点拖至创建的空白处。

    processRequest 方法现在如下所示(添加的代码在下面以粗体显示):

        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 ClientServlet</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");

    try { // Call Web Service Operation
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    // TODO initialize WS operation arguments here
    int i = 0;
    int j = 0;
    // TODO process result here
    int result = port.add(i, j);
    out.println("Result = "+result);
    } catch (Exception ex) {
    // TODO handle custom exceptions here
    }


    out.println("</body>");
    out.println("</html>");
    out.close();
    }

    ij 的值更改为正整数,如 3 和 4。

  11. 右键单击项目节点,然后选择“运行”。

    将启动服务器(如果它尚未运行);同时,系统将生成并部署应用程序,并且打开浏览器以显示计算结果,如下所示:
    “项目”窗口显示的 Servlet 中的新 Web 服务客户端

客户端 3:Web 应用程序中的 JSP 页

在本部分中,您将创建一个新的 Web 应用程序,然后在“Web 应用程序”向导创建的缺省 JSP 页中使用 Web 服务。

如果您使用的是 JDK 6,则必须具备 JDK 6 Update 7 或更高版本。

  1. 选择“文件”>“新建项目”(Ctrl-Shift-N)。从 "Web" 类别中选择“Web 应用程序”。将该项目命名为 CalculatorWSJSPClient 。单击“完成”。
  2. 右键单击 "CalculatorWSJSPClient" 节点,然后选择“新建”>“Web 服务客户端”。
  3. 在“项目”中,单击“浏览”。浏览至要使用的 Web 服务。选定 Web 服务后,单击“确定”。
  4. 将其他设置保留为缺省值,然后单击“完成”。

    “项目”窗口将显示新的 Web 服务客户端,如下所示:


    “项目”窗口显示的 Servlet 中的新 Web 服务客户端
  5. 在“Web 服务参考”节点中,展开表示 Web 服务的节点。此时将显示您要从客户端调用的 add 操作。
  6. add 操作拖至客户端的 index.jsp 页,并将其放在 H1 标记下。将在 index.jsp 页中立即生成用于调用服务操作的代码,如下所示:
    <%
    try {
    org.me.calculator.CalculatorWSService service =
    new org.me.calculator.CalculatorWSService();
    org.me.calculator.CalculatorWS port =
    service.getCalculatorWSPort();
    // TODO initialize WS operation arguments here
    int i = 0;
    int j = 0;
    // TODO process result here
    int result = port.add(i, j);
    out.println("Result = "+result);
    } catch (Exception ex) {
    // TODO handle custom exceptions here
    }
    %>

    ij 的值从 0 更改为其他整数,如 3 和 4。

  7. 右键单击项目节点,然后选择“运行”。

    将启动服务器(如果它尚未运行)。同时,系统将生成并部署应用程序,并且打开浏览器以显示计算结果:


    显示结果的 JSP 页
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值