import javax.xml.messaging.*; import javax.xml.soap.*; import javax.xml.transform.dom.DOMSource; import javax.xml.parsers.*; import javax.servlet.http.*; import java.io.IOException; import org.w3c.dom.Document; public class SOAPServlet extends HttpServlet { private static final String providerURI = "http://java.sun.com/xml/jaxm/provider"; private ProviderConnectionFactory connectionFactory; public void init(ServletConfig servletConfig) throws ServletException { Context ctx = new InitialContext(); connectionFactory = (ProviderConnectionFactory)ctx.lookup( providerURI); } public void doGet(HttpServletRequest request,HttpServletResponse response ) throws ServletException, IOException { try { // A request comes in to send a message. So we create a connection from the factory. // factories are used when we have an intermediate which caches and send messages on our behalf // much like JMS. SOAPConnection connection = connectionFactory.createConnection(); // Create a message factory from the Connection to produce messages. MessageFactory mf = connection.createMessageFactory(); // Create messgages from the message factory. Message message = mf.createMessage( ); // Get the SOAPPart from the message. // Note the infrastructure takes care of creating the SOAPPart. // The user needs to get the SOAPPart and get the SOAPEnvelope and populate it appropriately. SOAPPart soapPart = message.getSOAPPart( ); // Get the SOAPEnvelope from the header container obtained above. SOAPEnvelope soapEnvelope = soapPart.getSOAPEnvelope( ); // Create a SOAPHeader from the SOAPEnvelope SOAPHeader soapHeader = soapEnvelope.createSOAPHeader() ; // Create a SOAPHeaderElement that will be appended to the SOAPHeader. SOAPHeaderElement she = soapHeader.createSOAPHeaderElement( ); she.setName("from", "http://foo.bar/", "m" ); she.addContent("foo@bar.com" ; soapHeader.addContent(she); soapEnvelope.setSOAPHeader(soapHeader); // Add a DOMSource object as the actual message content DOMSource domsrc = null; try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance( ); DocumentBuilder db = dbf.newDocumentBuilder( ; Document doc = db.parse("file:///foo.bar/soap.xml" ); domsrc = new DOMSource(doc); } catch(Exception e ) { System.err.println("Error in creating DOMSource" + e.getMessage( ); } soapEnvelope.setContent(domsrc); soapEnvelope.setSOAPBody(soapBody ); URLEndpoint ep = new URLEndpoint("http://foo.bar/Service" ); connection.send(message, endPoint ); response.setStatus(HttpServletResponse.SC_OK ); } catch(Exception jxe { jxe.printStackTrace(); } } // end doGet }