java创建客户业务类_Java EE 5 中的 Web 服务 (JAX-WS)

Java API for XML Web Services (JAX-WS) 2.0,JSR 224 是 Java EE 5 平台的重要组成部分。作为 Java API for XML-based RPC 1.1 (JAX-RPC) 的后续发行版本,JAX-WS 简化了使用 Java 技术开发 Web 服务的工作。并且通过对多种协议(如 SOAP 1.1、SOAP 1.2、XML)的支持,以及提供用于支持其他协议和 HTTP 的工具,它解决了 JAX-RPC 1.1 中存在的一些问题。JAX-WS 使用 JAXB 2.0 提供数据绑定服务,并支持通过定制来控制生成的服务端点接口。通过对标注的支持,JAX-WS 简化了 Web 服务开发,并缩小了运行时 JAR 文件的大小。

本文档向您介绍了有关使用 IDE 开发 JAX-WS Web 服务以及在三个不同的客户端(Java SE 应用程序中的 Java 类、Web 应用程序中的 Servlet 或 JSP 页)中使用它的基础知识。在本文档中创建的三个客户端是独立的应用程序,它们都使用同一个 Web 服务。

请注意,这是为即将推出的 5.5 发行版本提供的草案文档,在某些情况下,此处描述的功能不一定能够在最新的 5.5 内部开发版本中使用。

预计所需时间:25 分钟

本教程所需的软件

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

NetBeans IDE 5.5(内部开发版本)(下载)。

Java Standard Development Kit (JDK) 版本 5.0(下载)。

Sun Java System Application Server 9.0(如果未与安装的 NetBeans IDE 捆绑在一起,请下载并单独安装它)。

教程练习

安装并配置教程环境

如果尚未注册 Sun Java System Application Server 9.0 的实例,则必须先进行注册,然后才可以着手开发 Java EE 5 应用程序:从主窗口中,选择 "Tools" > "Server Manager"。

单击 "Add Server..."。选择 "Sun Java System Application Server",并为此实例指定一个名称,然后单击 "Next"。

指定服务器信息、应用服务器本地实例的位置以及要将 Web 服务部署到的域。

单击 "Finish"。

注意:也可以部署到 Tomcat Web Server,但由于它仅具有一个 Web 容器,因此应在下一部分创建 Web 应用程序,而不是 EJB 模块。与 JSR-109 Web 服务不同的是,JAX-WS Web 服务可以成功地部署到 Tomcat Web 容器中。

创建 Web 服务

本练习的目的是创建一个适用于您决定使用的部署容器的项目。在建立项目后,您将在其中创建 Web 服务。

选择容器

您可以在 Web 容器或 EJB 容器中部署 Web 服务。这要取决于具体的选择。例如,如果您计划部署到仅具有 Web 容器的 Tomcat Web Server 上,则应该选择创建 Web 应用程序,而不是 EJB 模块。选择 "File" > "New Project" (Ctrl-Shift-N)。从 "Web" 类别中,选择 "Web Application",或者从 "Enterprise" 类别中,选择 "EJB Module"。

将项目命名为 CalculatorWSApplication。

根据要使用的部署服务器,请执行以下操作:

对于 Sun Java System Application Server,将 J2EE 版本设置为 "Java EE 5"。

对于 Tomcat Web Server,请取消选中 "Set Source Level to 1.4" 复选框。

单击 "Finish"。

通过 Java 类创建 Web 服务

右键单击 CalculatorWSApplication 节点,然后选择 "New" > "Web Service"。

将 Web 服务命名为 CalculatorWS,在 "Package" 中键入 org.me.calculator,然后单击 "Finish"。

将在 "Projects" 窗口中显示新建的 Web 服务。例如,对于 Web 应用程序,现在 "Projects" 窗口将如下所示:

279157_1.png

IDE 将自动创建服务器所需的部署描述符(如果有)。对于 Sun Java System Application Server,则不需要部署描述符。对于部署到 Tomcat Web Server 的 Web 服务,将添加 sun-jaxws.xml 以及 web.xml 中的 WSServlet 项。

小结

在本练习中,您创建了一个 NetBeans 项目并建立了 Web 服务。

对 Web 服务进行编码

本练习的目的是对 IDE 生成的文件和代码执行一些有意义的操作。您将添加一个操作,该操作将从客户端接收到的两个数字相加起来。

将业务逻辑添加到 Web 服务

展开 "Web Services" 节点,然后双击 CalculatorWS 节点。将在源代码编辑器中打开 Web 服务。请注意,代码中已存在了一个操作。它被注释掉了。现在,我们将从头开始创建一个新的操作。创建此操作的另一种方法是删除代码注释掉的行。

在类主体(位于注释掉的代码之上或之下)中单击鼠标右键,然后选择 "Web Service" > "Add Operation"。

在 "Add Operation" 对话框的上半部分,在 "Name" 中键入 add,并从 "Return Type" 下拉列表中选择 int。

在 "Add Operation" 对话框的下半部分,单击 "Add",然后创建一个类型为 int、名为 i 的参数。单击 "OK"。

重新单击 "Add",然后创建一个类型为 int、名为 j 的参数。

单击位于 "Add Operation" 对话框底部的 "OK"。

请注意,add 方法的框架已添加到源代码编辑器中:

@WebMethod

public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {

// TODO implement operation

return 0;

}

按如下所示更改 add 方法(更改内容以粗体显示):

@WebMethod

public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {

int k = i + j;

return k;

}

小结

在本练习中,您已为 Web 服务添加了代码。

部署并测试 Web 服务

在将 Web 服务部署到 Web 容器时,IDE 允许您测试 Web 服务以查看它是否能够按预期的那样工作。鉴于此目的,在 IDE 中集成了 Sun Java System Application Server 提供的 Tester 应用程序。对于 Tomcat Web Server,也存在类似的工具。但是,Sun Java System Application Server 的 Tester 页允许您输入值并对其进行测试,而 Tomcat Web Server 则不允许这样做。在后一种情况下,您只能看到已部署了 Web 服务,但是不能对值进行测试。目前还没有用于测试 EJB 模块是否已成功部署的工具。

测试是否已成功部署到 Web 容器:右键单击项目节点,选择 "Properties",然后单击 "Run"。根据要使用的部署服务器,请执行以下操作:

对于 Sun Java System Application Server,在 "Relative URL" 字段中键入 /CalculatorWSService?Tester。

对于 Tomcat Web Server,在 "Relative URL" 字段中键入 /CalculatorWS?Tester。

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

右键单击项目节点,然后选择 "Run Project"。

IDE 将启动应用服务器、生成应用程序,并在浏览器中打开 tester 页(如果已将 Web 应用程序部署到 Sun Java System Application Server)。对于使用 Tomcat Web Server 和部署 EJB 模块来说,情况则有所不同:如果部署到 Tomcat Web Server,将看到以下内容(表明已成功部署了 Web 服务):

279157_2.png

如果部署了 EJB 模块,则“输出”窗口显示下面的消息才表明已成功部署:

Deployment of application CalculatorWSApplication completed successfully

Enable of CalculatorWSApplication in target server completed successfully

Enable of application in all targets completed successfully

All operations completed successfully

run-deploy:

run:

BUILD SUCCESSFUL

如果部署到 Sun Java System Application Server,在 tester 页上键入两个数字,如下所示:

279157_3.png

将显示这两个数字的和:

279157_4.png

小结

在本练习中,您已部署了 Web 服务并对其进行了测试。

使用 Web 服务

部署 Web 服务后,我们需要创建一个客户端来使用 Web 服务的 add 方法。在本练习中,我们将创建三个客户端,即 Java SE 应用程序中的 Java 类、Web 应用程序中的 Servlet 和 JSP 页。

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

选择 "File" > "New Project" (Ctrl-Shift-N)。从 "General" 类别中,选择 "Java Application"。将项目命名为 CalculatorWS_Client_Application。

注意:在编写本文档时,问题 10 仍未得到解决,您必须在其路径不包含空格的项目文件夹中创建 Web 服务客户端。例如,路径不能为 "C:\Documents and Settings\..."。

单击 "Finish"。

右键单击 CalculatorWS_Client_Application 节点,然后选择 "New" > "Web Service Client"。

在 "Project" 中,单击 "Browse"。找到要使用的 Web 服务。选择 Web 服务后,单击 "OK"。

在 "Package" 中键入 org.me.calculator.client,然后单击 "Finish"。

将在 "Projects" 窗口中显示新建的 Web 服务客户端:

279157_5.png

双击 Main.java 以在源代码编辑器中将其打开。删除 TODO 注释,并在该行中单击鼠标右键。选择 "Web Service Client Resources" > "Call Web Service Operation"。

找到 "add" 操作,然后单击 "OK"。

将带红色下划线的行更改为以下内容:

System.out.println("Sum: " + port.add(3,4));

右键单击项目节点,然后选择 "Run Project"。

现在 "Output" 窗口会显示以下内容:

compile:

run:

Sum: 7

BUILD SUCCESSFUL (total time: 1 second)

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

选择 "File" > "New Project" (Ctrl-Shift-N)。从 "Web" 类别中,选择 "Web Application"。将项目命名为 CalculatorWSServletClient。

注意:在编写本文档时,问题 10 仍未得到解决,您必须在其路径不包含空格的项目文件夹中创建 Web 服务客户端。例如,路径不能为 "C:\Documents and Settings\..."。

单击 "Finish"。

右键单击 CalculatorWSServletClient 节点,然后选择 "New" > "Web Service Client"。

在 "Project" 中,单击 "Browse"。找到要使用的 Web 服务。选择 Web 服务后,单击 "OK"。

在 "Package" 中键入 org.me.calculator.client,然后单击 "Finish"。

将在 "Projects" 窗口中显示新建的 Web 服务客户端:

279157_6.png

右键单击项目节点,然后选择 "New" > "Servlet"。将 Servlet 命名为 ClientServlet,并将它放置在名为 org.me.calculator.client 的包中。单击 "Finish"。要使 Servlet 成为应用程序的入口点,请右键单击该项目节点,选择 "Properties",单击 "Run",然后在 "Relative URL" 中键入 /ClientServlet。单击 "OK"。

在源代码编辑器中,删除注释掉 processRequest 方法主体的行。该行是注释掉代码部分的起始行:

/* TODO output your page here

然后,删除注释掉代码部分的结束行:

*/

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

out.println("

Servlet ClientServlet at " + request.getContextPath () + "

");

现在,在您添加的一个空行中单击鼠标右键,选择 "Web Service Client Resources" > "Call Web Service Operation"。将出现 "Select Operation to Invoke" 对话框。

找到 add 操作,然后单击 "OK"。

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

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.println("");

out.println("

");

out.println("

Servlet ClientServlet");

out.println("");

out.println("

");

out.println("

Servlet ClientServlet at " + request.getContextPath () + "

");

try { // Call Web Service Operation

org.me.calculator.client.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();

org.me.calculator.client.CalculatorWS port = service.getCalculatorWSPort();

// TODO initialize WS operation arguments here

int arg0 = 0;

int arg1 = 0;

// TODO process result here

int result = port.add(arg0, arg1);

System.out.println("Result = "+result);

} catch (Exception ex) {

// TODO handle custom exceptions here

}

out.println("");

out.println("");

out.close();

}

将 arg0 和 arg1 的值更改为其他数字,如 3 和 4。

将 System.out.println 语句更改为 out.println。

添加输出异常的行(如果抛出异常)。

现在 try/catch 块应该如下所示(会突出显示新行和更改行):

try { // Call Web Service Operation

org.me.calculator.client.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();

org.me.calculator.client.CalculatorWSApplication port = service.getCalculatorWSApplicationPort();

// TODO initialize WS operation arguments here

int arg0 = 3;

int arg1 = 4;

// TODO process result here

int result = port.add(arg0, arg1);

out.println("

Result: " + result);

} catch (Exception ex) {

out.println("

Exception: " + ex);

}

右键单击项目节点,然后选择 "Run Project"。

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

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

选择 "File" > "New Project" (Ctrl-Shift-N)。从 "Web" 类别中,选择 "Web Application"。将项目命名为 CalculatorWSJSPClient。

注意:在编写本文档时,问题 10 仍未得到解决,您必须在其路径不包含空格的项目文件夹中创建 Web 服务客户端。例如,路径不能为 "C:\Documents and Settings\..."。

单击 "Finish"。

右键单击 CalculatorWSJSPClient 节点,然后选择 "New" > "Web Service Client"。

在 "Project" 中,单击 "Browse"。找到要使用的 Web 服务。选择 Web 服务后,单击 "OK"。

在 "Package" 中键入 org.me.calculator.client,然后单击 "Finish"。

将在 "Projects" 窗口中显示新建的 Web 服务客户端。

在 "Web Pages" 文件夹中,双击 index.jsp 以在源代码编辑器中将其打开。

在 "Web Service References" 节点中,展开表示 Web 服务的节点。现在将公开要从客户端调用的 add 操作。

将 add 操作拖动到客户端的 index.jsp 页上,并将其放在 H1 标记之下。现在,将在 index.jsp 页中生成用于调用服务操作的代码。

将 arg0 和 arg1 的值更改为其他数字,如 3 和 4。

右键单击项目节点,然后选择 "Run Project"。

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

279157_7.png

后续步骤

要发送意见和建议、获得支持以及随时了解 NetBeans IDE J2EE 开发功能的最新开发情况,请加入

nbusers@netbeans.org 邮件列表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值