|
楼主 |
发表于 2007-9-28 23:22:41
|
显示全部楼层
创建 Java 接口
Java 接口是使用注释完整定义 Web 服务并稍后编译到 WSDL 中的起点。
Java 接口
在编写 Java 接口的代码之前,需要先将一个新接口添加到我们的项目中。右键单击项目(Navigator 窗口中的 com.ibm.dw.scicalc 文件夹),然后单击 New > Other。这将向您展示可以创建的内容列表。选择 Interface(紫色的 I)并单击 Next。输入使用 com.ibm.dw.scicalc 的软件包名称:ScientificCalculator。现在单击 Finish。
现在在 src/com/ibm/dw/scicalc/ 目录中应当有一个空的 ScientificCalculator 接口。打开此文件,它应当类似与以下代码。
- package com.ibm.dw.scicalc;
- public interface ScientificCalculator {
- }
复制代码 | 接下来,我们将在 Java 接口中创建方法,这些方法将定义 Web 服务可以执行的操作。
定义 Web 服务操作
作为科学计算器类型的 Web 服务,我们创建的 Web 服务将具有 “应用程序概述” 部分中定义的函数。在接口中编写各个函数的代码,如下所示。
清单 1. 编写 Java 接口的代码
- public interface ScientificCalculator { public float squareRoot( // value^pow float value, float pow ); public float square( // value^2 float value ); public float inverse( // 1/value float value ); public float divide( // numerator/denominator float numerator, float denominator ); public float multiply( // value1*value2 float value1, float value2 ); public float add( // value1 + value2 float value1, float value2 ); public float subtract( // value1-value2 float value1, float value2 ); public float subtractUnary( // -value float value );}
复制代码 |
注:我们只需声明方法 —— 即最终创建的 Web 服务的操作。它们大多数都有两个输入参数,而少数方法只有一个输入参数,每个输入参数都将返回操作结果。
接下来,我们将开始用 Web 服务特定的属性为 Java 接口进行注释。
注释类
首先将类注释为 Web 服务。在 Outline 视图中(左下),单击 Java 接口 ScientificCalculator。单击 SOA > JAX-WS > Create Web Service,然后单击 Finish。您将注意到以下代码被添加到您的代码中。
清单 2. 将 Java 接口注释为 Web 服务
- ...import javax.jws.WebService;...@WebService(wsdlLocation = "file:/C:/Documents and Settings/Tyler3/workspaces/STPwarCreate/com.ibm.dw.scicalc/wsdl/com/ibm/dw/scicalc/ScientificCalculator.wsdl", targetNamespace = "http://scicalc.dw.ibm.com/", name = "ScientificCalculator")public interface ScientificCalculator {...
复制代码 |
实际上,我们已经声明了接口现在是 Web 服务,连同目标名称空间和名称。还定义了 WSDL 文件的创建位置。
通过添加以下代码,将最后一个注释手动添加到类中。
清单 3. 手动添加注释
- ...import javax.jws.soap.SOAPBinding; ...@WebService(wsdlLocation = "file:/C:/Documents and ......@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE, use = SOAPBinding.Use.LITERAL, style = SOAPBinding.Style.DOCUMENT) public interface ScientificCalculator {...
复制代码 |
我们使用文字和空参数样式声明了 DOCUMENT Web 服务的 SOAP 绑定。
这就完成了接口注释。接下来,我们将为 Web 服务的方法和操作创建注释。
注释方法
对方法进行注释几乎与注释类完全相同。首先对 squareRoot 方法注释。使用 Annotation Properties 视图来完成这项工作。如果看不到该视图,请选择 Window > Show View > Other。然后选择 SOA Tools > Annotation Properties。您应当会在视图的右下部分看到它。
要使用 Annotation Properties 视图创建注释,请将光标置于接口中的这一行上:public float squareRoot( // value^pow。查看 Annotation Properties 视图,应当会看到可用注释列表。
图 3. Annotation Properties 视图
首先,添加 WebMethod 注释。您可以看到它显示在视图中。在 Annotation Properties 视图中选择它,单击它旁边的下拉框,并将 false 改为 true,应当会显示注释。
清单 4. WebMethod 注释
- ...import javax.jws.WebMethod;... @WebMethod(operati, exclude=false) public float squareRoot( // value^pow float value, float pow );...
复制代码 |
您现在已经将 squareRoot 方法声明为 Web 服务中的操作。现在只有几个注释还需要完成:声明 Web 服务的返回值和参数。
选择 WebResult 注释并将 false 改为 true。这将把以下代码添加到您的代码中。
清单 5. WebResult 注释
- ...import javax.jws.WebResult;... @WebResult(targetNamespace="http://scicalc.dw.ibm.com/", name="return", partName="return") @WebMethod(operati, exclude=false) public float squareRoot( // value^pow float value, float pow );...
复制代码 |
向两个参数中添加 WebParam 注释。选择包含浮点值的行,然后在 Annotation Properties 框中选择 WebParam 注释,并将 false 改为 true。对 float pow 行执行相同的操作。返回到同一行并修改参数的属性。
图 4. 在 Annotation Properties 视图中修改注释
对于两个参数,我们已在 WebParam 注释中定义了名称和 partName 属性。您可以看到添加到清单 7 中的代码。
清单 6. 从 WebParam 注释属性添加的代码
- ...import javax.jws.WebParam;... @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float squareRoot( // value^pow @WebParam(targetNamespace="http://scicalc.dw.ibm.com", partName = "value", name = "value") float value, @WebParam(targetNamespace="http://scicalc.dw.ibm.com", partName = "pow", name = "pow") float pow );...
复制代码 |
您已经成功地对 squareRoot 方法进行了注释。接下来,我们将对其余方法进行注释。
对其他方法进行注释
在对其他方法快速注释之前,还有一种您应当了解的对方法进行注释的方式,它是对 Web 服务进行注释的补充方法。在 Outline 视图(左下)中选择 square(float) 方法,并且:
- 选择 SOA > Create Web Method
- 首先指定 WebMethod,可以保留原样;单击 Next
- 不要选中 Add Annotation,因为不需要使用 RequestWrapper,然后单击 Next
- 选中 Add Annotation,然后单击 Next
- 不要选中 Add Annotation,因为不需要使用 ResponseWrapper,然后单击 Finish
应当会创建以下注释。
清单 7. 使用 create Web 方法创建的注释
- @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", header=false, partName = "return", name = "return") @WebMethod(operati, exclude=false) public float square( // value^2 float value );
复制代码 |
您现在可以使用上一节的方法对值参数进行注释,将 square 方法的代码添加到以下代码中。
- public float square( // value^2 @WebParam(partName = "value", name = "value") float value );
复制代码 |
这样就完成了 square 方法!现在,您应当能够对其余方法进行注释了。完成后,它们应当如以下清单所示。
清单 8. 完成注释
- @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float inverse( // 1/value @WebParam(partName = "value", name = "value") float value ); @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float divide( // numerator/denominator @WebParam(partName = "numerator", name = "numerator") float numerator, @WebParam(partName = "denominator", name = "denominator") float denominator ); @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float multiply( // value1*value2 @WebParam(partName = "value1", name = "value1") float value1, @WebParam(partName = "value2", name = "value2") float value2 ); @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float add( // value1 + value2 @WebParam(partName = "value1", name = "value1") float value1, @WebParam(partName = "value2", name = "value2") float value2 ); @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float subtract( // value1-value2 @WebParam(partName = "value1", name = "value1") float value1, @WebParam(partName = "value2", name = "value2") float value2 ); @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", partName = "return", name = "return") @WebMethod(operati) public float subtractUnary( // -value @WebParam(partName = "value", name = "value") float value );
复制代码 |
完成注释了!您可以开始生成 WSDL 了。 |
|