[
https://issues.apache.org/jira/browse/CXF-8005?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16840088#comment-16840088
]
Thomas Papke edited comment on CXF-8005 at 5/15/19 6:31 AM:
------------------------------------------------------------
Thank you Colm, i think your change will fix my issue.
Just for documentation some more background details: I use CXF STS service and
I get the following stacktrace during startup with CXF 3.3.1:
{code}
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed
to create service.
at
org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:169)
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:408)
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:528)
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263)
at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103)
at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:168)
at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:460)
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:338)
... 58 more
Caused by: org.apache.ws.commons.schema.XmlSchemaException: External DTD:
Failed to read external DTD 'XMLSchema.dtd', because 'file' access is not
allowed due to restriction set by the accessExternalDTD property.
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:722)
at
org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:705)
at
org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
at
org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1515)
at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
at
org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:156)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:508)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:716)
at
org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:705)
at
org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
at
org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1515)
at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
at
org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:156)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:508)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:716)
at
org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:705)
at
org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
at
org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1515)
at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:550)
at
org.apache.cxf.common.xmlschema.SchemaCollection.read(SchemaCollection.java:129)
at org.apache.cxf.wsdl11.SchemaUtil.extractSchema(SchemaUtil.java:141)
at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:74)
at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:66)
at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:61)
at
org.apache.cxf.wsdl11.WSDLServiceBuilder.getSchemas(WSDLServiceBuilder.java:378)
at
org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:345)
at
org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:209)
at
org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:161)
... 67 more
{code}
As a workaround i have just reconfigure my catalog to point to a local copy of
xml.xsd. I assume if your fix is releases, i can remove this and swith back to
{code}
<system systemId="http://www.w3.org/2001/xml.xsd"
uri="classpath:/schemas/xml.xsd" />
{code}
was (Author: thopap):
Thank you Colm, i think your change will fix my issue.
Just for documentation some more background details: I use CXF STS service and
I get the following stacktrace during startup with CXF 3.3.1:
{code}
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed
to create service.
at
org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:169)
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:408)
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:528)
at
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263)
at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103)
at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:168)
at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:460)
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:338)
... 58 more
Caused by: org.apache.ws.commons.schema.XmlSchemaException: External DTD:
Failed to read external DTD 'XMLSchema.dtd', because 'file' access is not
allowed due to restriction set by the accessExternalDTD property.
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:722)
at
org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:705)
at
org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
at
org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1515)
at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
at
org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:156)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:508)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:716)
at
org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:705)
at
org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
at
org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1515)
at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
at
org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:156)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:508)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:716)
at
org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:705)
at
org.apache.ws.commons.schema.SchemaBuilder.handleImport(SchemaBuilder.java:538)
at
org.apache.ws.commons.schema.SchemaBuilder.handleSchemaElementChild(SchemaBuilder.java:1515)
at
org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:658)
at
org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:550)
at
org.apache.cxf.common.xmlschema.SchemaCollection.read(SchemaCollection.java:129)
at org.apache.cxf.wsdl11.SchemaUtil.extractSchema(SchemaUtil.java:141)
at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:74)
at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:66)
at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:61)
at
org.apache.cxf.wsdl11.WSDLServiceBuilder.getSchemas(WSDLServiceBuilder.java:378)
at
org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:345)
at
org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:209)
at
org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:161)
... 67 more
{code}
As a workaround i have just reconfigure my catalog to point to a local copy of
xml.xsd. I assume if your fix is releases, i can remove this and swith back to
{{ <system systemId="http://www.w3.org/2001/xml.xsd"
uri="classpath:/schemas/xml.xsd" />}}
> cxf-codegen-plugin - External DTD: Failed to read external DTD ‘.dtd’
> ---------------------------------------------------------------------
>
> Key: CXF-8005
> URL: https://issues.apache.org/jira/browse/CXF-8005
> Project: CXF
> Issue Type: Bug
> Reporter: Tsvetoslav
> Assignee: Colm O hEigeartaigh
> Priority: Blocker
> Attachments: wsdl.zip, xmldsig-core-schema.xsd
>
>
> Hello,
>
> First I would like to mention that I'm using "Spring Boot CXF JAX-WS Starter"
> for developing my web service. When I'd migrated my project dependencies to
> the latest version - Apache-cxf(3.3.1) and Spring boot(2.1.3.RELEASE), the
> Maven build system started to give me during the build this blocking error
> "_Execution generate-sources of goal
> org.apache.cxf:cxf-codegen-plugin:3.3.1:wsdl2java failed:
> org.apache.ws.commons.schema.XmlSchemaException: External DTD: Failed to read
> external DTD 'XMLSchema.dtd', because 'http' access is not allowed due to
> restriction set by the accessExternalDTD property._" I've returned back to
> the older/current version of dependencies Apache-cxf(3.2.7) and Spring
> boot(1.5.17.RELEASE), the error has gone.
>
> I've found a solution
> [stackoverflow|[https://stackoverflow.com/a/23012746/7357959]] which I don't
> prefer because it's applied directly in the jre and I need to look after it
> when I create a new environment.
>
> Based on your official
> documentation[maven-cxf-codegen-plugin|[http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html]],
> section "Other configuration options", I can apply the same configuration to
> my JVM using cxf-codegen-plugin. I tried out this configuration:
> {code:java}
> <plugin>
> <groupId>org.apache.cxf</groupId>
> <artifactId>cxf-codegen-plugin</artifactId>
> <version>${cxf.version}</version>
> <configuration>
>
> <additionalJvmArgs>-Djavax.xml.accessExternalDTD=all</additionalJvmArgs>
> </configuration>
> ......................{code}
> based on this example [External
> DTD|https://programtalk.com/java/external-dtd-failed-restriction-accessexternaldtd/]
> but unfortunately it doesn't work
> I will appreciate if somebody can take a look at the problem.
> Thank you in advance!
>
> P.S. I tried different configuration option like:
>
> {code:java}
> <configuration>
> <fork>once</fork>
> <additionalJvmArgs>-Djavax.xml.accessExternalDTD=all</additionalJvmArgs>
>
> <additionalJvmArgs>-Djavax.xml.accessExternalSchema=all</additionalJvmArgs>
> </configuration>{code}
>
> ----
>
> {code:java}
> <configuration>
> <additionalJvmArgs>-Djavax.xml.accessExternalDTD=all</additionalJvmArgs>
>
> <additionalJvmArgs>-Djavax.xml.accessExternalSchema=all</additionalJvmArgs>
> </configuration>
> {code}
> but unfortunately neither of them was working
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)