Hi Chris, 1) yes, sort of 2) in rt.jar from the Sun JVM 3) maybe
:) Sorry for the ambiguous answers. The SAAJ factory implementations that get picked up are defined by the META-INF/services/* files in the axis2-saaj-1.5.jar library in the axis2 distribution, with the JVM deciding who the default is if these services/* files don't get picked up. So, presumably that means this axis2-saaj-1.5.jar is not on the classpath, or as you said, is being usurped by another jar that does have the services/* files that points to the Sun SAAJ implementation. mike On Wed, Oct 7, 2009 at 6:24 AM, Chris Mannion <[email protected]> wrote: > > Hi All > > I have an issue with one deployment of a piece of software I've > written using Axis. I have a web-service client that retrieves a > javax.xml.soap.SOAPMessage as the service response, pulls out a > javax.xml.soap.SOAPBody from that response and then gets the first > body element from that to return as the service response. The code > for processing the response is as follows - > > SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance(); > SOAPConnection con = scf.createConnection(); > SOAPMessage response = con.call(message, endpointAddress); > > SOAPBody responseBody = response.getSOAPBody(); > Iterator it = responseBody.getChildElements(); > if(it.hasNext()) > { > org.apache.axis.message.SOAPBodyElement next = > (org.apache.axis.message.SOAPBodyElement)it.next(); > StringWriter writer = new StringWriter(); > next.output(new SerializationContext(writer)); > String outputted = writer.toString(); > return outputted; > } > > So, as you can see, the code assumed that Axis is the underlying > implementation of the javax.xml.soap interfaces, so we can class-cast > to an Axis SOAPBodyElement. This usually works well because we deploy > with Axis on the classpath so that it is picked up as the > implmentation. However, on one system the class-cast fails because > the underlying object is > com.sun.xml.internal.messaging.saaj.soap.ver1_1.BodyElement_1Impl. > > So, my questions are > 1) Am I right in thinking that this is likely down to either the Axis > jar being missing from the classpath, or another jar that implements > javax.xml.soap has a higher priority on the classpath? > 2) Does anyone know what jar file the > com.sun.xml.internal.messaging.saaj.soap.ver1_1.BodyElement_1Impl > class is likely to be being picked up from? The saaj jar files I have > on my own system don't include it, though I haven't had chance to > investigate the problem system yet. > 3) This is deployed in a Tomcat environment, are there any places in > Tomcat or the JVM I should concentrate on looking for a jar file that > is overriding the Axis jar (which should be in > tomcat/webapps/<web-app>/WEB-INF/lib/)? > > Thanks so much for any help. > > -- > Chris Mannion
