|  | 
 
 楼主|
发表于 2007-10-6 09:20:55
|
显示全部楼层 
| 创建 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(operationName = "squareRoot", 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(operationName = "squareRoot", 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(operationName = "squareRoot")
    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(operationName = "square", exclude=false)
    public float square( // value^2
        float value
    );
您现在可以使用上一节的方法对值参数进行注释,将 square 方法的代码添加到以下代码中。
 这样就完成了 square 方法!现在,您应当能够对其余方法进行注释了。完成后,它们应当如以下清单所示。复制代码     public float square( // value^2
        @WebParam(partName = "value", name = "value")
        float value
    );
 清单 8. 完成注释
 完成注释了!您可以开始生成 WSDL 了。复制代码    @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", 
               partName = "return", name = "return")
    @WebMethod(operationName = "inverse")
    public float inverse( // 1/value
        @WebParam(partName = "value", name = "value")
        float value
    );
    @WebResult(targetNamespace = "http://scicalc.dw.ibm.com/", 
               partName = "return", name = "return")
    @WebMethod(operationName = "divide")
    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(operationName = "multiply")
    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(operationName = "add")
    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(operationName = "subtract")
    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(operationName = "subtractUnary")
    public float subtractUnary( // -value
        @WebParam(partName = "value", name = "value")
        float value
    );
 
 | 
 |