Hello,

            I am setting up a document/literal/wrapped web service and have used XMLBeans to bind my schema/java beans.  I have written custom Serializer/Deserializers and  I am working on using the dynamic wsdl provided by axis however I seem to have hit a wall.  I think this will partially answer some previous questions on this board IRT writing schemas but I was not subscribed when they were sent and I am not sure how to reply.

 

From the serializer.writeSchema method I use the types.loadSchema function to get my actual schema document into the return however axis is adding the wrapper elements to the schema and I do not seem to be able to set their types attributes or deal with them in any way.  So my question is this if there is a way to do this from the Serializer.writeSchema method then what is it?  If it cannot be done there is there a way to insert some custom code into the mix (a handler maybe?) to massage the wsdl output somehow.  Otherwise I have to write my own wsdl and pass that back via a separate url/webRoot etc... which I would rather avoid since it will add to maintenance.  Using an import element sounds like a good solution if I can get the schema to load from the same base url as the web service, of course there is still the matter of the auto generated method elements.

 

Also I need this app to scale so reading from disk every time does not seem to be the best way to do this either.  I tried passing back a DOM node that I was keeping in memory but the types object does not use the correct method (as far as I can tell) to merge the nodes.  I think it uses the appendElement method or some such instead of importElement.  Any thoughts on how to do this?

 

Currently I have my schema.xsd file in my classpath in the default package (root dir).  I find the resource url when I create a new deserializer then load it into the types like this:

 

    public MySerializer() {

        ClassLoader cl = (Thread.currentThread()).getContextClassLoader();

        URL schemaUrl = cl.getResource("schema.xsd");

        xsdUrl = schemaUrl.toString();

    }

 

    public Element writeSchema(Class javaType, Types types) throws Exception {

        //this method is for returning the schema that is in the dynamic wsdls

        types.loadInputSchema(xsdUrl

        types.updateNamespaces();

        return null;

    }

 

Thanks,

MC

 

Mike Cassisa

Software Engineer

 

Reply via email to