簡體   English   中英

XmlSchemaException:頂級屬性可能沒有“使用”

[英]XmlSchemaException: Top-level attributes may not have a 'use'

我已經使用maven cxf-codegen-plugin從wsdl生成了一個Web服務。 很好,我也沒有例外。 然后,我嘗試使用以下代碼實例化Web服務(生成服務類):

    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setEndpointName(SERVICE_NAME);
    factory.setAddress("https://someadress:port/spec");
    factory.setServiceClass(Service.class);
    this.port = (Service) factory.create();

在調用create方法時,在weblogic上運行時收到以下異常:

weblogic.application.ModuleException: org.apache.ws.commons.schema.XmlSchemaException: Top-level attributes may not have a 'use'
    ...
Caused By: org.apache.ws.commons.schema.XmlSchemaException: Top-level attributes may not have a 'use'
    at org.apache.ws.commons.schema.XmlSchemaAttribute.setUse(XmlSchemaAttribute.java:109)
    at org.apache.ws.commons.schema.SchemaBuilder.handleAttribute(SchemaBuilder.java:966)
    at org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1519)
    at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:659)
    at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:157)
    at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:497)
    at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:483)
    at org.apache.cxf.common.xmlschema.SchemaCollection.read(SchemaCollection.java:133)
    at org.apache.cxf.databinding.AbstractDataBinding.addSchemaDocument(AbstractDataBinding.java:192)
    at org.apache.cxf.databinding.AbstractDataBinding.addSchemaDocument(AbstractDataBinding.java:95)
    at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:393)
    at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:490)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:697)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:550)
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:214)
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
    at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
    at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:155)
    at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:156)

AFIAK,在Web服務的初始化中未在任何地方引用wsdl,我假設成功生成類時,Web服務是從有效源生成的。

無論如何,我不知道該消息是什么意思。 是的,我已經在互聯網上找到了有關該問題的單個鏈接: http : //cxf.547215.n5.nabble.com/Schema-validation-errors-on-publish-quot-top-level-elements-may- not-have-a-use-quot-td5724860.html,但我仍然不知道哪里出了問題。

另一件事是,我不太確定頂層屬性的定義是什么。 我用Google搜索了“ xml頂級屬性”,但是在結果的前兩頁中沒有定義。

因此,我搜索了從wsdl引用的XSD,並在opengis gml和一個XSD中找到了一些包含“ use =“的東西:

<complexType name="UnitOfMeasureType">
    <sequence/>
    <attribute name="uom" type="gml:UomIdentifier" use="required"/>
</complexType>

還有這個:

<attributeGroup name="extendedLink">
    <attribute name="type" type="string" fixed="extended" form="qualified"/>
    <attribute ref="xlink:role" use="optional"/>
    <attribute ref="xlink:title" use="optional"/>
</attributeGroup>

其中有些問題嗎?

當我通過單元測試運行Webservice時,它可以工作,但部署在Weblogic上時,則不能。

我用:

  • Apache CXF 2.6.11
  • Weblogic 12.1.2.0.0
  • Oracle Java 1.7.0_25

Weblogic的最新版本使用MOXy作為其JAXB實現,而不是JAXB參考實現或內置在JDK中的實現。 如果這在Weblogic之外無法正常工作,則MOXy中可能有問題。 CXF團隊在MOXy的模式生成(和其他區域)中發現了多個錯誤。 好消息是,MOXy團隊通常會很迅速地解決發現的任何問題。 如果您可以將其簡化為一個小的測試用例,那將是一個很大的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM