无法将共享库部署到 IIB 集成服务器中

Unable to deploy shared library into IIB integration server

我正在尝试在 IIB v10 工具包集成服务器中部署一个共享库,该服务器具有通过新建 -> 消息模型 -> 使用现有 WSDL 创建的 1 个 WSDL。它在内部导入引用模式 files.B ut,同时尝试将共享库项目部署到工具包中的集成服务器中,失败并显示以下 error:

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'

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>

谢谢

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

您可以通过不同的方式实现您想要实现的目标:您的 XSD 导入应该在导入 WSDL 时生成的 .xsd 中完成,而不是在 .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"/>
[...]