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 |