1

レジストリに別の既存のスキーマをインポートするスキーマをアップロードしようとしています。2 つのスキーマを zip に圧縮せずにアップロードしたいのですが、常に「XML スキーマ定義ファイルを読み取れませんでした」というエラーが発生します。 this.schema.needs ".

概念実証として、レジストリに /_system/governance/trunk/schemas/_1/commons/commons.xsd として格納される commons.xsdを「urn:commons:1」名前空間 の下にアップロードしました。

今、このインポートを持つ example.xsd をアップロードしたいと思います:

<xsd:import namespace="urn:commons:1" schemaLocation="../commons/commons.xsd"/>

2 つのスキーマを zip にパックしてアップロードすると、期待どおりに動作しますが、commons.xsd が既にレジストリにあるため、example.xsd スキーマのみをアップロードする必要があり、失敗します。

[2015-08-23 16:24:49,310] ERROR {org.wso2.carbon.registry.resource.ui.processors.AddResourceProcessor} -  File upload failed.
org.apache.axis2.AxisFault: Failed to add resource /_system/governance/example.xsd. Could not read the XML Schema Definition file. this.schema.needs
        at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
        at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:367)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:413)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:224)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
        at org.wso2.carbon.registry.resource.stub.ResourceAdminServiceStub.addResource(ResourceAdminServiceStub.java:4818)
        at org.wso2.carbon.registry.resource.ui.clients.ResourceServiceClient.addResource(ResourceServiceClient.java:679)
        at org.wso2.carbon.registry.resource.ui.processors.AddResourceProcessor.execute(AddResourceProcessor.java:179)
        at org.wso2.carbon.ui.transports.fileupload.AbstractFileUploadExecutor.executeGeneric(AbstractFileUploadExecutor.java:104)
        at org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager$CarbonXmlFileUploadExecHandler.execute(FileUploadExecutorManager.java:392)

ご覧のとおり、アップローダが新しいファイルを/_system/governance/trunk/schemas/_1/example/example.xsdの下にその名前空間「urn:example:1」を尊重して配置した場合、指定された相対ファイルに commons.xsd が見つかりました。パスですが、ルート ガバナンス フォルダーに配置するようです。

バグですか?

それを達成するための回避策を知っていますか?

WSO2 ガバナンス レジストリのバージョンは 4.6.0 です

4

1 に答える 1

0
  1. これに対する 1 つの回避策は、すべてのスキーマをまとめて圧縮し、既に試したものをアップロードすることです。
  2. 他の回避策は、インポートを指定するときに絶対パスを指定することです。例: schemaLocation="http://www.example.com/commons/commons.xsd"
于 2016-05-26T05:56:24.983 に答える