Mmm, not enough information. The class that represents the node for xsds that
don't fail is also DeferredDocumentTypeImpl. I should have checked the
getNodeType value... and see what it is for the failing document.


J. Aparicio wrote:
> 
> 
> J. Aparicio wrote:
>> 
>> Hello. I have a wsdl which imports another wsdl, which I can not change.
>> That second wsdl imports some xsd schema, which in turn import another
>> xsd schema. Again, I can't change those xsd schemas (they are standard).
>> 
>> The problem is the CXFServlet (through a Tomcat server) serves the first
>> wsdl, the second wsdl and the first xsd OK, but fails to serve the second
>> xsd.
>> The first xsd schema imports the second one via a line like this:
>> 
>> <xsd:import namespace="http://www.w3.org/2005/08/addressing";
>> schemaLocation="../types/ws-addressing-0805.xsd"/>
>> 
>> The ../types/... reference is resolved OK on the filesystem, cxf's
>> wsdl2java has no problem with it. But it is inaccessible via the
>> CXFServlet. That means I can not give the CXFServlet url to implementors
>> of clients, because they can not get the second xsd schema.
>> 
>> I've tried the command line wsdl2java and the maven plugin as well, with
>> no success on either.
>> 
>> I don't know if it may have an impact, but I'm generating the code
>> including the "-noAddressBinding" option to wsdl2java. This is because I
>> have to extend the WS-Addressing classes, which otherwise come out as
>> final.
>> 
>> I've tried CXF 2.2.5 and 2.2.7, Java5 and Java6, Tomcat5.5 and Tomcat6
>> combinations, but all of them fail at the same point.
>> 
>> What else could I try?
>> 
>> Thank you :-)
>> 
> Got additional info.
> First of all, I said it failed, but didn't explain how. It returns the
> following stacktrace:
> ------8<------8<------8<------8<------8<------8<------
> HTTP Status 500 -
> 
> type Exception report
> 
> message
> 
> description The server encountered an internal error () that prevented it
> from fulfilling this request.
> 
> exception
> 
> javax.servlet.ServletException: Exception occurred while trying to process
> http://localhost:8580/CCO/services/PullStream?xsd=../types/ws-addressing-0805.xsd
> 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:168)
> 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
>       javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> root cause
> 
> org.apache.cxf.transport.http.WSDLQueryException: Exception occurred while
> trying to process
> http://localhost:8580/CCO/services/PullStream?xsd=../types/ws-addressing-0805.xsd
> 
> org.apache.cxf.transport.http.WSDLQueryHandler.writeResponse(WSDLQueryHandler.java:228)
> 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:162)
> 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
>       javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> root cause
> 
> java.lang.IllegalStateException: Found type:
> org.apache.xerces.dom.DeferredDocumentTypeImpl
>       org.apache.cxf.staxutils.StaxUtils.writeNode(StaxUtils.java:749)
>       org.apache.cxf.staxutils.StaxUtils.writeDocument(StaxUtils.java:575)
>       org.apache.cxf.staxutils.StaxUtils.writeDocument(StaxUtils.java:563)
>       org.apache.cxf.staxutils.StaxUtils.writeNode(StaxUtils.java:737)
> 
> org.apache.cxf.transport.http.WSDLQueryHandler.writeResponse(WSDLQueryHandler.java:223)
> 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:162)
> 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
>       javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> note The full stack trace of the root cause is available in the Apache
> Tomcat/5.5.28 logs.
> 
> Apache Tomcat/5.5.28
> ------8<------8<------8<------8<------8<------8<------
> 
> I've tried debugging Tomcat from Eclipse. The error happens when
> org.apache.cxf.staxutils.StaxUtils.writeNode realizes the node given
> (corresponding to the xsd document) is none of the allowed types (it's an
> org.apache.xerces.dom.DeferredDocumentTypeImpl, none of the
> org.w3c.dom.Node class public fields)
> At some point between the initial request is received by the servlet and
> the exception is thrown the xsd is actually found, and identified/pointed
> to by "jndi:/localhost/CCO/WEB-INF/wsdl/types/ws-addressing-0805.xsd". I
> don't know where "jndi:/localhost/CCO" points to, but I assume it points
> to the filesystem directory where the webapp is deployed. The rest of the
> path is OK (the xsd file exists and is readable).
> Why does the document end up being parsed and represented by a
> DeferredDocumentTypeImpl?
> Why does StaxUtils choke on that type of node?
> 
> Removing xercesImpl from the web application only resulted in the node
> type being changed from "org.apache.xerces.dom.DeferredDocumentTypeImpl"
> to "com.sun.org.apache.xerces.internal.dom.DeferredDocumentTypeImpl",
> which exists in the JDK (both Java5 and Java6)
> 
> Why doesn't this happen for other xsds/wsdls in the same application?
> 
> And, most important of all, what can I do to avoid this, apart from
> tweaking cxf's source code?
> 
> Thanks a lot
> 

-- 
View this message in context: 
http://old.nabble.com/Relative-paths-in-xsd%3Aimport-tp28018462p28027785.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to