JAXP09020005:“setRewritePrefix”的指定参数“classpath:/schemas/wsdl”(区分大小写)无效

问题描述 投票:0回答:1

我们在项目中使用

jakarta.xml.ws.Provider
类(lib版本:4.0.2)。 该类选择
com.sun.xml.ws.spi.ProviderImpl
类作为提供者,与
com.sun.xml:jaxws-rt
库(lib版本:4.0.3)相关。

jakarta.xml.ws.Provider 代码:

public abstract class Provider {  

    private static final String DEFAULT_JAXWSPROVIDER = "com.sun.xml.ws.spi.ProviderImpl";  

    protected Provider() {  
    }  

    public static Provider provider() {  
        try {  
            return (Provider) FactoryFinder.find(Provider.class, "com.sun.xml.ws.spi.ProviderImpl");  
        } catch (WebServiceException var1) {  
            throw var1;  
        } catch (Exception var2) {  
            throw new WebServiceException("Unable to create EndpointReference Provider", var2);  
        }  
    }  

//some codes
}

jaxws-rt
库中,
com.sun.xml.ws.util.xml.XmlCatalogUtil
类指的是文件
META-INF/jax-ws-catalog.xml
,该文件取自我们项目运行时的
org.apache.cxf:cxf
库(lib版本:2.7.18)。

com.sun.xml.ws.util.xml.XmlCatalogUtil 代码:

public final class XmlCatalogUtil{

//some codes

  public static EntityResolver createDefaultCatalogResolver() {  
    try {  
        ClassLoader cl = Thread.currentThread().getContextClassLoader();  
        Enumeration<?> catalogEnum;  
        if (cl == null) {  
            catalogEnum = ClassLoader.getSystemResources("META-INF/jax-ws-catalog.xml");  
        } else {  
            catalogEnum = cl.getResources("META-INF/jax-ws-catalog.xml");  
        }  
        EntityResolver er = createCatalogResolver(Collections.list(catalogEnum));  
        return er;  
    } catch (Exception var3) {  
        throw new WebServiceException(var3);  
    }  
  }
}

cxf 库中存在 META-INF/jax-ws-catalog.xml 内容:

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">  
    <rewriteSystem systemIdStartString="http://www.w3.org/2006/03/addressing" rewritePrefix="classpath:/schemas/wsdl"/>  
    <rewriteSystem systemIdStartString="http://www.w3.org/2005/08/addressing" rewritePrefix="classpath:/schemas/wsdl"/>  
</catalog>

我们遇到这个错误:

Caused by: java.lang.IllegalArgumentException: JAXP09020005: The specified argument 'classpath:/schemas/wsdl' (case sensitive) for 'setRewritePrefix' is not valid.  
at javax.xml.catalog.CatalogMessages.reportIAE (CatalogMessages.java:140) ~[?:?]  
at javax.xml.catalog.BaseEntry.verifyURI (BaseEntry.java:233) ~[?:?]  
at javax.xml.catalog.RewriteSystem.setRewritePrefix (RewriteSystem.java:65) ~[?:?]  
at javax.xml.catalog.RewriteSystem.<init>(RewriteSystem.java:47) ~[?:?]  
at javax.xml.catalog.CatalogReader.startElement (CatalogReader.java:190) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement (AbstractSAXParser.java:518) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement (AbstractXMLDocumentParser.java:183) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement (XMLNSDocumentScannerImpl.java:353) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next (XMLDocumentFragmentScannerImpl.java:2726) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next (XMLNSDocumentScannerImpl.java:605) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next (XMLNSDocumentScannerImpl.java:114) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (XMLDocumentFragmentScannerImpl.java:542) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (XML11Configuration.java:889) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (XML11Configuration.java:825) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse (XMLParser.java:141) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse (AbstractSAXParser.java:1224) ~[?:?]  
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse (SAXParserImpl.java:637) ~[?:?]  
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse (SAXParserImpl.java:326) ~[?:?]  
at javax.xml.parsers.SAXParser.parse (SAXParser.java:276) ~[?:?]  
at javax.xml.catalog.CatalogImpl.parse (CatalogImpl.java:294) ~[?:?]  
at javax.xml.catalog.CatalogImpl.load (CatalogImpl.java:170) ~[?:?]  
at javax.xml.catalog.CatalogManager.catalog (CatalogManager.java:73) ~[?:?]  
at javax.xml.catalog.CatalogManager.catalogResolver (CatalogManager.java:119) ~[?:?]  
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createCatalogResolver (XmlCatalogUtil.java:95) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createDefaultCatalogResolver (XmlCatalogUtil.java:75) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.util.xml.XmlUtil.createDefaultCatalogResolver (XmlUtil.java:255) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.createCatalogResolver (WSServiceDelegate.java:344) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL (WSServiceDelegate.java:336) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init> (WSServiceDelegate.java:293) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init> (WSServiceDelegate.java:201) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init> (WSServiceDelegate.java:182) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init> (WSServiceDelegate.java:178) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate (ProviderImpl.java:89) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at jakarta.xml.ws.Service.<init> (Service.java:82) ~[jakarta.xml.ws-api-4.0.2.jar:4.0.2]  
at com.microsoft.schemas.exchange.services._2006.messages.ExchangeService.<init> (ExchangeService.java:43) ~[ews-2010.jar:3.0.0]  
at com.chmail.cs.fb.ExchangeEWSFreeBusyProvider.<clinit> (ExchangeEWSFreeBusyProvider.java:82) ~[chmailstore.jar:?]  
... 78 more
Caused by: java.net.MalformedURLException: unknown protocol: classpath  
at java.net.URL.<init>(URL.java:779) ~[?:?]  
at java.net.URL.<init>(URL.java:654) ~[?:?]  
at javax.xml.catalog.BaseEntry.verifyURI(BaseEntry.java:227) ~[?:?]  
at javax.xml.catalog.RewriteSystem.setRewritePrefix(RewriteSystem.java:65) ~[?:?]  
at javax.xml.catalog.RewriteSystem.<init>(RewriteSystem.java:47) ~[?:?]  
at javax.xml.catalog.CatalogReader.startElement(CatalogReader.java:190) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:518) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2726) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:114) ~[?:?]  
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:?]  
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224) ~[?:?]  
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637) ~[?:?]  
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:326) ~[?:?]  
at javax.xml.parsers.SAXParser.parse(SAXParser.java:276) ~[?:?]  
at javax.xml.catalog.CatalogImpl.parse(CatalogImpl.java:294) ~[?:?]  
at javax.xml.catalog.CatalogImpl.load(CatalogImpl.java:170) ~[?:?]  
at javax.xml.catalog.CatalogManager.catalog(CatalogManager.java:73) ~[?:?]  
at javax.xml.catalog.CatalogManager.catalogResolver(CatalogManager.java:119) ~[?:?]  
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createCatalogResolver(XmlCatalogUtil.java:95) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.util.xml.XmlCatalogUtil.createDefaultCatalogResolver(XmlCatalogUtil.java:75) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.util.xml.XmlUtil.createDefaultCatalogResolver(XmlUtil.java:255) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.createCatalogResolver(WSServiceDelegate.java:344) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:336) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:293) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:201) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:182) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:178) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:89) ~[jaxws-rt-4.0.3.jar:4.0.3]  
at jakarta.xml.ws.Service.<init>(Service.java:82) ~[jakarta.xml.ws-api-4.0.2.jar:4.0.2]  
at com.microsoft.schemas.exchange.services._2006.messages.ExchangeService.<init>(ExchangeService.java:43) ~[ews-2010.jar:3.0.0]  
at com.chmail.cs.fb.ExchangeEWSFreeBusyProvider.<clinit>(ExchangeEWSFreeBusyProvider.java:82) ~[chmailstore.jar:?]  
... 78 more

我该如何修复这个错误?

我们的java版本:21

(注意:在Google搜索中,它被编写为使用cxf-rt-frontend-jaxws、cxf-rt-transports-http、cxf-rt-transports-http-jetty库而不是com.sun.xml.ws(或任何其他 rt) 库。但是因为我们无法直接选择在代码中使用哪个库,并且 Jakarta 正在做出这个决定,所以我无法测试这个解决方案。)

java cxf classpath
1个回答
0
投票

我遇到了同样的问题,但我在项目中创建了 jax-ws-catalog.xml 并解决了错误。 https://stackoverflow.com/a/34547520

© www.soinside.com 2019 - 2024. All rights reserved.