使用 WebSphere Integration Developer 提高效率
2009-09-30 00:00:00 来源:WEB开发网为了说明为什么这会有所帮助,请考虑以下错误:
清单 3. WebSphere Integration Developer 接口问题
cvc-attribute.3: The value 'myObject:Report' of attribute 'type' on element 'xsd:element'
is not valid with respect to its type, 'QName'.
为了解决这个问题,您的第一个反映可能是确定工作区中的哪个文件导致了错误。这在 Eclipse IDE 中通常相当明显,因为会用小叉标记出错误的位置。在本例中,出问题的是一个名为 SimpleInterface 的接口。双击文件后,就会打开接口编辑器,如图 10 中所示。
图 10. 接口编辑器
图片看不清楚?请点击这里查看原图(大图)。
正如所您看到的,接口编辑器并没有提供调试问题的方法。为了真正了解其根源,您需要查看接口的基础 XML 表示形式,即一个 *.wsdl XML 文档。通过右键单击接口,并选择 Open With => XML Source Page Editor,可以对 XML 进行编辑。SimpleInterface.wsdl 的内容如下所示:
清单 4. SimpleInterface.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:myObjects="http://MyLibrary/MyBusinessObjects" [1]
xmlns:tns="http://MyLibrary/SimpleInterface" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SimpleInterface"
targetNamespace="http://MyLibrary/SimpleInterface">
<wsdl:types>
<xsd:schema targetNamespace="http://MyLibrary/SimpleInterface"
xmlns:bons1="http://MyLibrary"
xmlns:tns="http://MyLibrary/SimpleInterface"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://MyLibrary/MyBusinessObjects"
schemaLocation="Report.xsd"/>
<xsd:element name="checkCredit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="code" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="checkCreditResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="report" nillable="true" type="myObject:Report"/> [2]
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="checkCreditRequestMsg">
<wsdl:part element="tns:checkCredit" name="checkCreditParameters"/>
</wsdl:message>
<wsdl:message name="checkCreditResponseMsg">
<wsdl:part element="tns:checkCreditResponse" name="checkCreditResult"/>
</wsdl:message>
<wsdl:portType name="SimpleInterface">
<wsdl:operation name="checkCredit">
<wsdl:input message="tns:checkCreditRequestMsg" name="checkCreditRequest"/>
<wsdl:output message="tns:checkCreditResponseMsg" name="checkCreditResponse"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
由于清单 3 中的错误提到了“myObject:Report”,因此可立即定位到标记为 [2] 的代码行。Report 是一种复杂 XML Schema 类型,在另一个文件中定义(可能名为 Resport.xsd)。为了引用外部复杂类型,将使用命名空间标识符。在标记为 [2] 的代码行,其命名空间标识符为 myObject。不过,如果查看标记为 [1] 的代码行,会发现声明 myObjects 时使用了一个额外的字符“s”。对二者中的任意一个进行修改,使其保持一致,即可消除此错误。
正如您所看到的,如果不查看 *.wsdl 文件,调试上述问题可能会要求完全重新创建相应的 SCA 接口组件。通过查看基础 XML 表示形式,可更为高效地修复此问题。WebSphere Process Server 和 ESB 运行时可识别 WebSphere Integration Developer 内构建的组件的基础 XML 文件。事实上,可以将基础 XML 文件视为运行时执行的指令。与尝试在 WebSphere Integration Developer 的图形级别进行调试相比,如果可以在 XML 级别调试问题,则要高效得多。
结束语
我们都处于 Jane 的位置。几乎很少有 IT 从业人员花时间通过阅读最新的红皮书、产品指南和信息中心文档来了解如何利用开发工具获得最高的效率。另外,自己动手实践通常也会有意思得多。希望本文中提供的信息能帮助您快速而安全地实现高效率。
Tags:使用 WebSphere Integration
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接