org.apache.ode.jbi.util.WSDLFlattener seems to be able to add external schemas into a wsdl definition. Couldn't something like this used inside the BPEL compiler to avoid the import problem?
----- Ursprüngliche Mail ---- Von: Matthieu Riou <[EMAIL PROTECTED]> An: [email protected] Gesendet: Mittwoch, den 17. Oktober 2007, 16:17:17 Uhr Betreff: Re: wsdl import problem On 10/17/07, Dietmar Wolz <[EMAIL PROTECTED]> wrote: > > Got a problem deploying a process to ODE 1.1 > related to the following scenario: > > A bpel file imports a wsdl which contains further > imports of another > wsdl file. The root wsdl uses xml element types > defined in > the imported wsdl file. > > ------------root wsdl > file------------------------------------------- > <?xml version="1.0"?> > <definitions > xmlns:tns="http://sopera.org/process/HelloLibrary" > xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" > > xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:svn="http://types.sopware.org/demos/Library/ProcessCommon/1.0" > > targetNamespace="http://sopera.org/process/HelloLibrary" > > name="HelloLibraryProcess"> > <import > namespace="http://types.sopware.org/demos/Library/ProcessCommon/1.0" > location="LibraryCommon.wsdl"/> > <types> > <schema attributeFormDefault="unqualified" > elementFormDefault="qualified" > > targetNamespace="http://sopera.org/process/HelloLibrary" > > xmlns="http://www.w3.org/2001/XMLSchema"> > ... > -------------------------------------------------------------- > > Deploying the process I get the following error > message: > > > -------------------------------------------------------------------------------- > > > file:/D:/Tomcat55/webapps/ode/WEB-INF/processes/HelloLibraryProcess/HelloLibraryProcess.wsdl:0: > error: [SchemaEr > ror] Error in schema processing: src-resolve.4.2: > Error resolving component 'svn:IDType'. It was > detected that 'svn:IDTy > pe' is in namespace > 'http://types.sopware.org/demos/Library/ProcessCommon/1.0', > but components from this namespace are n > ot referenceable from schema document > > 'file:/D:/Tomcat55/webapps/ode/WEB-INF/processes/HelloLibraryProcess/HelloLibraryP > rocess.wsdl'. If this is the incorrect namespace, > perhaps the prefix of 'svn:IDType' needs to be > changed. If this is the > correct namespace, then an appropriate 'import' tag > should be added to > 'file:/D:/Tomcat55/webapps/ode/WEB-INF/processes > /HelloLibraryProcess/HelloLibraryProcess.wsdl'. > > at > org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:726) > at > org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:260) > at > org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:330) > at > org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:161) > at > org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:125) > at > org.apache.ode.store.ProcessStoreImpl.deploy(ProcessStoreImpl.java:165) > ------------------------------------------------------------ > > > After some debugging I tracked down the source of the > problem, > in org.apache.xerces.impl.xs.traversers.XSDHandler > the routine > > currSchemaInfo.addAllowedNS(schemaNamespace); > > is only called for import child nodes of the schema > and not for import child nodes of the wsdl definition > root. > > --------------------------DEBUG CALL > STACK-------------------------------- > XSDHandler.constructTrees(Element, String, > XSDDescription) line: 815 > XSDHandler.parseSchema(XMLInputSource, XSDDescription, > Hashtable) line: 559 > XMLSchemaLoader.loadSchema(XSDDescription, > XMLInputSource, Hashtable) line: 554 > XMLSchemaLoader.loadGrammar(XMLInputSource) line: 521 > XMLSchemaLoader.load(LSInput) line: 1055 > XSUtils.captureSchema(LSInput, XMLEntityResolver) > line: 120 > XSUtils.captureSchema(URI, String, XMLEntityResolver) > line: 88 > WSDLRegistry.captureSchemas(Definition, > ResourceFinder, URI) line: 206 > WSDLRegistry.addDefinition(Definition4BPEL, > ResourceFinder, URI) line: 141 > BpelCompiler20(BpelCompiler).addWsdlImport(URI, URI, > SourceLocation) line: 191 > BpelCompiler20(BpelCompiler).compile(URI, Import) > line: 803 > BpelCompiler20(BpelCompiler).compile(Process, > ResourceFinder) line: 655 > BpelC.compile(Process, String) line: 260 > BpelC.compile(File) line: 330 > DeploymentUnitDir.compile(File) line: 161 > DeploymentUnitDir.compile() line: 125 > ProcessStoreImpl.deploy(File) line: 165 > DeploymentPoller.check() line: 144 > DeploymentPoller.access$300(DeploymentPoller) line: 55 > > DeploymentPoller$PollingThread.run() line: 188 > --------------------------------------------------------- > > > So what should I do? > Do I have to use external .xsd files referenced > from all the wsdl files - an import at the > <schema attributeFormDefault="unqualified" > elementFormDefault="qualified" > level? Exactly. Otherwise you'll have the visibility issue mentioned in the compilation error. Cheers, Matthieu __________________________________ > Kennt man wirklich jeden über 3 Ecken? Die Antworten gibt's bei Yahoo! > Clever. www.yahoo.de/clever > __________________________________ Ihre erste Baustelle? Wissenswertes für Bastler und Hobby Handwerker. www.yahoo.de/clever
