首页 > 解决方案 > 无法将共享库部署到 IIB 集成服务器

问题描述

我正在尝试在 IIB v10 工具包集成服务器中部署一个共享库,该服务器具有通过 New->Message Model-> 使用现有 WSDL 创建的 1 个 WSDL。它在内部导入了引用模式文件。但是在尝试将共享库项目部署到工具包中的集成服务器时,它失败并出现以下错误

BIP4395E: Java 异常:“com.ibm.xml.xlxp.compiler.CompilerError”;从类名中抛出:'com.ibm.broker.schemamgr.MbXLXPCompiler',方法名:'compileSchemas',文件:'MbXLXPCompiler.java',行:'211'

wsdl 引用 XSD 模式文件的相对路径是否有问题?

<xsd:import namespace="http://test.com/ebo/Basic" schemaLocation="../../mds/ebo/Bsc.xsd"/>
<xsd:import namespace="http://test.com/ebo/header" schemaLocation="../../mds/ebo/header.xsd"/>
<xsd:import namespace="http://test.com/ebo/cpr" schemaLocation="../../mds/ebo/cpr.xsd"/>

请问有人可以提出任何解决方案吗?

完整的错误详情:

Begin running task [Deploying [TEST1SHARED] to integration server [DEVSERVER]]

BIP2087E: Integration node 'TESTNODE_USER' was unable to process the internal configuration message. 

The entire internal configuration message failed to be processed successfully. 

Use the messages following this message to determine the reasons for the failure. If the problem cannot be resolved after reviewing these messages, contact your IBM Support center. Enabling service trace may help determine the cause of the failure.

BIP4041E: Integration server 'DEVSERVER' received an administration request that encountered an exception. 

While attempting to process an administration request, an exception was encountered. No updates have been made to the configuration of the integration server. 

Review related error messages to determine why the administration request failed.

BIP5049E: A failure occurred when the integration server was preparing XML and DFDL schema files for use as part of the deployment of a library. 

A failure occurred when the integration server was preparing XML and DFDL schema files for use as part of the deployment of a library. The deployment of the library has failed, and the deployment will be rolled back. 

Review previous messages to find out why the error occurred. Be aware that DFDL schema files must also be valid XML Schema files, and that all DFDL schema files are prepared for use by the XMLNSC domain before being prepared for use by the DFDL domain.

BIP4395E: Java exception: 'com.ibm.xml.xlxp.compiler.CompilerError'; thrown from class name: 'com.ibm.broker.schemamgr.MbXLXPCompiler', method name: 'compileSchemas', file: 'MbXLXPCompiler.java', line: '211' 

The message contains that data associated with a Java exception. 

No user action required.

The task was unsuccessful: The deployment was unsuccessful. Check error messages above for explanation.

以下是我的文件:1)Plant_1.0.wsdl

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    name="Plant" targetNamespace="http://test.com/ivs/Plant" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://test.com/ivs/Plant" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:documentation>
    Version 1.0
    <wsdl:appinfo source="WMQI_APPINFO">
        <MRWSDLAppInfo imported="true">
            <binding hasEncoding="false" imported="true" 
 name="Plant.Binding"
                originalBindingStyle="document" />
        </MRWSDLAppInfo>
    </wsdl:appinfo>
</wsdl:documentation>
<wsdl:types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
        <import namespace="http://test.com/ivs/Plant" 
schemaLocation="Plant_1.0_wsdl.xsd" />
    </schema>
  </wsdl:types>
    <wsdl:message name="getData">
    <wsdl:part element="tns:getData" name="payload" />
    </wsdl:message>
<wsdl:message name="getDataResponse">
    <wsdl:part element="tns:getDataResponse" name="payload" />
</wsdl:message>
<wsdl:portType name="Plant">
    <wsdl:operation name="getData">
        <wsdl:input message="tns:getData" />
        <wsdl:output message="tns:getDataResponse" />
    </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="Plant.Binding" type="tns:Plant">
    <soap:binding style="document"
        transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="getData">
        <soap:operation soapAction="getData" style="document" />
        <wsdl:input>
            <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
</wsdl:definitions>

Plant_1.0_wsdl.xsd(自动生成的xsd)

    <?xml version="1.0" encoding="UTF-8"?><xsd:schema 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://test.com/ivs/Plant" 
xmlns:tns="http://test.com/ivs/Plant">
 <xsd:include schemaLocation="Plant_1.0.xsd"/>
 </xsd:schema>

Plant_1.0.xsd:

<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://test.com/ivs/Plant" version="1.0" xmlns="http://test.com/ivs/Plant" xmlns:ibmSchExtn="http://www.ibm.com/schema/extensions">
<xsd:element ibmSchExtn:docRoot="true" name="getData" type="GetDataType"/>
<xsd:element ibmSchExtn:docRoot="true" name="getDataResponse" type="GetDataResponseType"/>

<xsd:complexType name="GetDataType">
    <xsd:sequence>
        <xsd:element name="body">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="subDataType" type="xsd:string"/>
                    <xsd:element name="fromDateTime" type="xsd:dateTime"/>
                    <xsd:element name="toDateTime" type="xsd:dateTime"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GetDataResponseType">
    <xsd:sequence>
        <xsd:element name="body">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="result" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

谢谢

标签: ibm-integration-bus

解决方案


IIB 有一种处理 WSDL / XSD 的特定方法:通常,一个 WSDL 包含一个 XSD,但 IIB 认为它应该在两个不同的文件中(当您导入现有的 WSDL 时,它会这样做,它将它拆分为不同的文件)

您可以通过不同的方式完成您想要实现的目标:您的 XSD 导入应该在导入 WSDL 时生成的 .xsd 中完成,而不是直接在 .wsdl 中完成。

从我的一个 WSDL / XSD 引用另一个 XSD 的一小部分摘录:

XXX.wsdl:

[...]
<wsdl:types>
    <xsd:schema
        targetNamespace="http://toto.org/XXXX">
        <xsd:include schemaLocation="XXXX_InlineSchema1.xsd" />         
    </xsd:schema>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <xsd:import
            namespace="http://toto.org/XXXX"
            schemaLocation="XXXX_InlineSchema1.xsd">
        </xsd:import>
    </xsd:schema>
</wsdl:types>
[...]

XXXX_InlineSchema1.xsd :

[...]
<xsd:import namespace="http://test.com/ebo/Basic" schemaLocation="../../mds/ebo/Bsc.xsd"/>
<xsd:import namespace="http://test.com/ebo/header" schemaLocation="../../mds/ebo/header.xsd"/>
<xsd:import namespace="http://test.com/ebo/cpr" schemaLocation="../../mds/ebo/cpr.xsd"/>
[...]

推荐阅读