技术开发 频道

通过WPS和WID方便地使用Java构件


提示和非常好的实践

    下面是一些有帮助意义的提示,以便补充您对此功能的使用:

  • Java 接口要求

    您可以将 Java 类或接口的限制拖到组装编辑器画布,以生成桥接组件:

    • 您可以使用普通 Java 接口。
    • 还可以使用无状态会话 Bean 远程接口。
    • 甚至可以使用 Java 实现类本身。但是,此类需要实现一个接口,而且只实现一个接口。如果该类不能实现一个接口(或者实现多个接口),则组装编辑器将不能向您提供生成桥接组件的选项。
    • 如果您希望生成的 WSDL 具有与 Java 接口中的方法参数对应的有意义的操作参数名称,则工作区中很可能需要接口和类的源代码。
  • Java 输入和输出要求

        如果 Java 构件的输入或返回是用户定义的 Java 类,则它必须符合 JAX-RPC 1.1 中 5.4 部分的约定。JAX-RPC 规范对生成代码具有重要意义。

  • 具有 Java 向量、集合和数组的接口

        Integration Developer 工具依靠基础 Java2WSDL 实用工具才能在 Java 类型和 XML 类型之间进行转换。在缺省情况下,将类型的 Java 数组映射到 ComplexTypes 的 XSD 数组(确切匹配 Java 类型)时,会将集合和向量映射到 anyType 的 XSD 数组。显然,强类型的 XSD 比较容易使用和映射,所以您最好在 Java 接口中使用类型的数组,而不是向量或集合。

  • 带有构造器的 Bean

        如果 Bean 拥用非缺省的构造器,工具似乎不能为您生成正确的 complexType。而是生成 anyType。如果您拥有如下所示的 Java Bean:

        
    public class Book implements Serializable{ public String title; public String author; public String publishDate; public Book(String title, String author, String publishDate) { super(); this.title = title; this.author = author; this.publishDate = publishDate; } }
    则生成的 XSD 将与以下所示类似:
        
    <complexType name="ArrayOfBook"> <sequence> <element maxOccurs="unbounded" minOccurs="0" name="Book" nillable="true" type="xsd:anyType"/> </sequence> </complexType>

        因此,在您的 Java Bean 中,应避免使用构造器。

  • 重构

        拖放工具将为相应的 Java 接口生成具有内联模式的 WSDL。您无法与其他项目中的其他 WSDL 共享内联模式。现在,在版本 6.0.2 中,可以将 WSDL 文件内部的内联 XSD 定义拆分或外部化,以便更好地使用。Integration Developer V6.0.2 通过突出显示重构上下文菜单中的 Extract Inline Business Objects 会自动认识具有内联模式的 WSDL。总之,这样较容易在模块之间共享 XSD/BO。

  • 覆盖

         有时候,系统在 Java 代码和服务数据对象(Service Data Object,SDO)之间构建的缺省映射可能不能满足您的需求,或者有时您更希望拥有更多自定义或控制的方法来处理映射器中的业务异常。在所有这些情况中,您可以将缺省映射器类实现替换为您自已的——但是您需要使用 Integration Developer 或 genMapper 命令生成 Java 到 WSDL 的类型转换。

        
    private commonj.sdo.DataObject javatodata_getRecommendedBooks_output(java.lang.Object result, javax.xml.namespace.QName primitiveNameSpace) { // User can override this code to do custom mapping. // Just comment out the existing code and write your custom code. return com.ibm.wbiserver.mediation.jtow.SDOJavaObjectMediator.java2Data(result, primitiveNameSpace); }

     

0
相关文章