当前位置: 代码迷 >> Web前端 >> netbeans创设webservice服务端server|webservice客户端client示例
  详细解决方案

netbeans创设webservice服务端server|webservice客户端client示例

热度:157   发布时间:2012-11-20 09:55:43.0
netbeans创建webservice服务端server|webservice客户端client示例

创建 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. 单击以浏览其余页面,然后单击“完成”。

    NetBeans 6.1 提供了一些用于创建项目的新选项,对于这些选项,可以保留其缺省设置。例如,可以将“使用专用文件夹存储库”复选框保留为取消选中状态。

通过 Java 类创建 Web 服务

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

设计 Web 服务

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

向 Web 服务中添加操作

  1. 在可视设计器中单击“添加操作”。将显示一个对话框,您可以在其中定义新操作。
  2. 在“添加操作”对话框的上半部分中,在“名称”中键入 add,并在“返回类型”下拉列表中键入 int。在“添加操作”对话框的下半部分中,单击“添加”以创建 int 类型的参数 i。然后,再次单击“添加”以创建 int 类型的参数 j
  3. 在“添加操作”对话框的底部,单击“确定”。
  1. 在编辑器中,将框架 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 V2" 或 "Tomcat" 标签中看到这些操作的进度。
  2. 在 IDE 的“项目”标签中,展开 CalculatorWSApplication 项目的“Web 服务”节点。右键单击 "CalculatorWS" 节点,然后选择“测试 Web 服务”。

IDE 将在浏览器中打开测试器页(如果您已将 Web 应用程序部署到 GlassFish 中)。对于 Tomcat Web Server 和 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 方法的节点:

  • 双击 "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 节点。

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

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

    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. 将其他设置保留为缺省值,然后单击“完成”。

      “项目”窗口中的“Web 服务参考”节点将显示新建客户端的结构,其中包括在本教程前面部分创建的 add 操作:

    5. 右键单击 "CalculatorWSServletClient" 项目节点,然后选择“新建”> "Servlet"。将该 Servlet 命名为 ClientServlet,并将其置于名为 org.me.calculator.client 的包中。单击“完成”。
    6. 右键单击 "CalculatorWSServletClient" 项目节点,然后选择“属性”。打开“运行”属性,然后取消选中“在保存时部署”。
    7. 要使 Servlet 成为应用程序的入口点,请右键单击项目节点,选择“属性”,单击“运行”,然后在“相对 URL”中键入 /ClientServlet。单击“确定”。
    8. 如果 ClientServlet.java 存在错误图标,请右键单击项目节点,然后选择“清理并生成”。
    9. 在源代码编辑器中,删除注释掉 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。

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

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

      客户端 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. 将其他设置保留为缺省值,然后单击“完成”。
    11. 在“Web 服务参考”节点中,展开表示 Web 服务的节点。此时将显示您要从客户端调用的 add 操作。
    12. 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。

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

    注:此文转自:http://hi.baidu.com/mywish1987/blog/item/28eb36d35f0191d9562c8460.html

    ?

    另:在使用netbeans开发WEBSERVICE的时候,所布置的服务器如:TOMCAT,有时会因为JAR包的不同版本或缺失而产生异常,具体情况,请查看服务器的log.

      相关解决方案