Hi
all, I
am having a few problems with soap and classpaths.
First
we have a soap client using the apache soap client code, talking to weblogic 6. SOAP
required some classes from javax.mail etc, so i remember lazily at the time getting this from the current
version of weblogic.jar (6.1 I believe). With
some reordering of things in the class path this seemed to work fine.
However
we have since upgraded to service pack 3 for weblogic
6. And with this in the client side classpath I only
get null responses from soap. It
is not an option to just stick with the old weblogic.jar
as we will shortly be making soap requests from within weblogic. I
have done a bit of digging and found this to be the problem. A file exists in weblogic.jar called javax.xml.parsers.DocumentBuilderFactory.
I assume this points to the factory used for generating
specific parser XML documents. The class contained in this file is different
between the two weblogic versions. This however is
not a problem becuase on a client I can create my own and have
this in the classpath first, or within weblogic I can use XML registry to set it. However
the question is what to set this two. When the client used to work (pre service
pack 3 weblogic.jar) soap
used to get the response and create an element of type org.apache.crimson.tree.ElementNode. I
am not sure why it chose this. The class used to exist in the old weblogic.jar. This has since been removed from weblogic.jar post service pack 3. The class I am not
getting returned on the soap client is either weblogic.apache.xerces.dom.DeferredElementImpl
or org.apache.xerces.dom.DeferredElementNSImpl. I can
quite easily make it create the latter one, either on the client or within weblogic by changing the classpath
or XML registry respectively. However soap doesn't seem to like this and gives
me a null value in the ((Element)result1.getValue()).toString() call. Soap seems to want a org.apache.crimson.tree.ElementNode to be created. Why
cant it handle the others? Can I make it do so? Any
help appreciated Thanks
|