<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FWeb_Services_SOA%2FSOAP</id>
		<title>Java Tutorial/Web Services SOA/SOAP - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FWeb_Services_SOA%2FSOAP"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Web_Services_SOA/SOAP&amp;action=history"/>
		<updated>2026-04-16T20:09:16Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Web_Services_SOA/SOAP&amp;diff=5276&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Web_Services_SOA/SOAP&amp;diff=5276&amp;oldid=prev"/>
				<updated>2010-06-01T05:19:06Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:19, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Web_Services_SOA/SOAP&amp;diff=5275&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Web_Services_SOA/SOAP&amp;diff=5275&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Call google web service and deal with the return with SOAPMessage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import javax.xml.namespace.QName;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
import javax.xml.ws.Dispatch;&lt;br /&gt;
import javax.xml.ws.Service;&lt;br /&gt;
public class GoogleSearch {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    URL url = new URL(&amp;quot;http://api.google.ru/GoogleSearch.wsdl&amp;quot;);&lt;br /&gt;
    QName serviceName = new QName(&amp;quot;urn:GoogleSearch&amp;quot;, &amp;quot;GoogleSearchService&amp;quot;);&lt;br /&gt;
    QName portName = new QName(&amp;quot;urn:GoogleSearch&amp;quot;, &amp;quot;GoogleSearchPort&amp;quot;);&lt;br /&gt;
    Service service = Service.create(url, serviceName);&lt;br /&gt;
    Dispatch&amp;lt;SOAPMessage&amp;gt; dispatch = service.createDispatch(portName, SOAPMessage.class,&lt;br /&gt;
        Service.Mode.MESSAGE);&lt;br /&gt;
    SOAPMessage request = MessageFactory.newInstance().createMessage(null,&lt;br /&gt;
        new FileInputStream(&amp;quot;yourGoogleKey.xml&amp;quot;));&lt;br /&gt;
    SOAPMessage response = dispatch.invoke(request);&lt;br /&gt;
    response.writeTo(System.out);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Create SOAP message ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.Name;&lt;br /&gt;
import javax.xml.soap.SOAPBody;&lt;br /&gt;
import javax.xml.soap.SOAPBodyElement;&lt;br /&gt;
import javax.xml.soap.SOAPEnvelope;&lt;br /&gt;
import javax.xml.soap.SOAPHeader;&lt;br /&gt;
import javax.xml.soap.SOAPHeaderElement;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
import javax.xml.soap.SOAPPart;&lt;br /&gt;
import javax.xml.transform.Source;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();&lt;br /&gt;
    SOAPPart soapPart = soapMessage.getSOAPPart();&lt;br /&gt;
    SOAPEnvelope soapEnvelope = soapPart.getEnvelope();&lt;br /&gt;
    SOAPHeader soapHeader = soapEnvelope.getHeader();&lt;br /&gt;
    SOAPHeaderElement headerElement = soapHeader.addHeaderElement(soapEnvelope.createName(&lt;br /&gt;
        &amp;quot;Signature&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;, &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;));&lt;br /&gt;
    SOAPBody soapBody = soapEnvelope.getBody();&lt;br /&gt;
    soapBody.addAttribute(soapEnvelope.createName(&amp;quot;id&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;,&lt;br /&gt;
        &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;), &amp;quot;Body&amp;quot;);&lt;br /&gt;
    Name bodyName = soapEnvelope.createName(&amp;quot;FooBar&amp;quot;, &amp;quot;z&amp;quot;, &amp;quot;http://example.ru&amp;quot;);&lt;br /&gt;
    SOAPBodyElement gltp = soapBody.addBodyElement(bodyName);&lt;br /&gt;
    Source source = soapPart.getContent();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generate DOM with SOAP message ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilder;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilderFactory;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.Name;&lt;br /&gt;
import javax.xml.soap.SOAPBody;&lt;br /&gt;
import javax.xml.soap.SOAPBodyElement;&lt;br /&gt;
import javax.xml.soap.SOAPEnvelope;&lt;br /&gt;
import javax.xml.soap.SOAPHeader;&lt;br /&gt;
import javax.xml.soap.SOAPHeaderElement;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
import javax.xml.soap.SOAPPart;&lt;br /&gt;
import javax.xml.transform.Source;&lt;br /&gt;
import javax.xml.transform.dom.DOMSource;&lt;br /&gt;
import javax.xml.transform.sax.SAXSource;&lt;br /&gt;
import org.w3c.dom.Document;&lt;br /&gt;
import org.w3c.dom.Node;&lt;br /&gt;
import org.xml.sax.InputSource;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();&lt;br /&gt;
    SOAPPart soapPart = soapMessage.getSOAPPart();&lt;br /&gt;
    SOAPEnvelope soapEnvelope = soapPart.getEnvelope();&lt;br /&gt;
    SOAPHeader soapHeader = soapEnvelope.getHeader();&lt;br /&gt;
    SOAPHeaderElement headerElement = soapHeader.addHeaderElement(soapEnvelope.createName(&lt;br /&gt;
        &amp;quot;Signature&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;, &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;));&lt;br /&gt;
    SOAPBody soapBody = soapEnvelope.getBody();&lt;br /&gt;
    soapBody.addAttribute(soapEnvelope.createName(&amp;quot;id&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;,&lt;br /&gt;
        &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;), &amp;quot;Body&amp;quot;);&lt;br /&gt;
    Name bodyName = soapEnvelope.createName(&amp;quot;FooBar&amp;quot;, &amp;quot;z&amp;quot;, &amp;quot;http://example.ru&amp;quot;);&lt;br /&gt;
    SOAPBodyElement gltp = soapBody.addBodyElement(bodyName);&lt;br /&gt;
    Source source = soapPart.getContent();&lt;br /&gt;
    Node root = null;&lt;br /&gt;
    if (source instanceof DOMSource) {&lt;br /&gt;
      root = ((DOMSource) source).getNode();&lt;br /&gt;
    } else if (source instanceof SAXSource) {&lt;br /&gt;
      InputSource inSource = ((SAXSource) source).getInputSource();&lt;br /&gt;
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();&lt;br /&gt;
      dbf.setNamespaceAware(true);&lt;br /&gt;
      DocumentBuilder db = null;&lt;br /&gt;
      db = dbf.newDocumentBuilder();&lt;br /&gt;
      Document doc = db.parse(inSource);&lt;br /&gt;
      root = (Node) doc.getDocumentElement();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generate DSA key pair ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    KeyPairGenerator kpg = KeyPairGenerator.getInstance(&amp;quot;DSA&amp;quot;);&lt;br /&gt;
    kpg.initialize(1024, new SecureRandom());&lt;br /&gt;
    KeyPair dsaKeyPair = kpg.generateKeyPair();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Output SOAP message with XML transformer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilder;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilderFactory;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.Name;&lt;br /&gt;
import javax.xml.soap.SOAPBody;&lt;br /&gt;
import javax.xml.soap.SOAPBodyElement;&lt;br /&gt;
import javax.xml.soap.SOAPEnvelope;&lt;br /&gt;
import javax.xml.soap.SOAPHeader;&lt;br /&gt;
import javax.xml.soap.SOAPHeaderElement;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
import javax.xml.soap.SOAPPart;&lt;br /&gt;
import javax.xml.transform.OutputKeys;&lt;br /&gt;
import javax.xml.transform.Source;&lt;br /&gt;
import javax.xml.transform.Transformer;&lt;br /&gt;
import javax.xml.transform.TransformerFactory;&lt;br /&gt;
import javax.xml.transform.dom.DOMSource;&lt;br /&gt;
import javax.xml.transform.sax.SAXSource;&lt;br /&gt;
import javax.xml.transform.stream.StreamResult;&lt;br /&gt;
import org.w3c.dom.Document;&lt;br /&gt;
import org.w3c.dom.Node;&lt;br /&gt;
import org.xml.sax.InputSource;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();&lt;br /&gt;
    SOAPPart soapPart = soapMessage.getSOAPPart();&lt;br /&gt;
    SOAPEnvelope soapEnvelope = soapPart.getEnvelope();&lt;br /&gt;
    SOAPHeader soapHeader = soapEnvelope.getHeader();&lt;br /&gt;
    SOAPHeaderElement headerElement = soapHeader.addHeaderElement(soapEnvelope.createName(&lt;br /&gt;
        &amp;quot;Signature&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;, &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;));&lt;br /&gt;
    SOAPBody soapBody = soapEnvelope.getBody();&lt;br /&gt;
    soapBody.addAttribute(soapEnvelope.createName(&amp;quot;id&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;,&lt;br /&gt;
        &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;), &amp;quot;Body&amp;quot;);&lt;br /&gt;
    Name bodyName = soapEnvelope.createName(&amp;quot;FooBar&amp;quot;, &amp;quot;z&amp;quot;, &amp;quot;http://example.ru&amp;quot;);&lt;br /&gt;
    SOAPBodyElement gltp = soapBody.addBodyElement(bodyName);&lt;br /&gt;
    Source source = soapPart.getContent();&lt;br /&gt;
    Node root = null;&lt;br /&gt;
    if (source instanceof DOMSource) {&lt;br /&gt;
      root = ((DOMSource) source).getNode();&lt;br /&gt;
    } else if (source instanceof SAXSource) {&lt;br /&gt;
      InputSource inSource = ((SAXSource) source).getInputSource();&lt;br /&gt;
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();&lt;br /&gt;
      dbf.setNamespaceAware(true);&lt;br /&gt;
      DocumentBuilder db = null;&lt;br /&gt;
      db = dbf.newDocumentBuilder();&lt;br /&gt;
      Document doc = db.parse(inSource);&lt;br /&gt;
      root = (Node) doc.getDocumentElement();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    Transformer transformer = TransformerFactory.newInstance().newTransformer();&lt;br /&gt;
    transformer.setOutputProperty(OutputKeys.INDENT, &amp;quot;yes&amp;quot;);&lt;br /&gt;
    transformer.transform(new DOMSource(root), new StreamResult(System.out));    &lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Processing a SOAP Message ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import javax.xml.namespace.QName;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.SOAPBody;&lt;br /&gt;
import javax.xml.soap.SOAPBodyElement;&lt;br /&gt;
import javax.xml.soap.SOAPConnection;&lt;br /&gt;
import javax.xml.soap.SOAPConnectionFactory;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
public class SOAPResponse {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    try {&lt;br /&gt;
      SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();&lt;br /&gt;
      SOAPConnection connection = sfc.createConnection();&lt;br /&gt;
      MessageFactory mf = MessageFactory.newInstance();&lt;br /&gt;
      SOAPMessage sm = mf.createMessage();&lt;br /&gt;
      QName bodyName = new QName(&amp;quot;http://YourSOAPServer.ru&amp;quot;, &amp;quot;GetQuote&amp;quot;, &amp;quot;d&amp;quot;);&lt;br /&gt;
      URL endpoint = new URL(&amp;quot;http://YourSOAPServer.ru&amp;quot;);&lt;br /&gt;
      SOAPMessage response = connection.call(sm, endpoint);&lt;br /&gt;
      SOAPBody sb = response.getSOAPBody();&lt;br /&gt;
      java.util.Iterator iterator = sb.getChildElements(bodyName);&lt;br /&gt;
      while (iterator.hasNext()) {&lt;br /&gt;
        SOAPBodyElement bodyElement = (SOAPBodyElement) iterator.next();&lt;br /&gt;
        String val = bodyElement.getValue();&lt;br /&gt;
        System.out.println(&amp;quot;The Value is:&amp;quot; + val);&lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception ex) {&lt;br /&gt;
      ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Sending a SOAP Message ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import javax.xml.namespace.QName;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.SOAPBody;&lt;br /&gt;
import javax.xml.soap.SOAPBodyElement;&lt;br /&gt;
import javax.xml.soap.SOAPConnection;&lt;br /&gt;
import javax.xml.soap.SOAPConnectionFactory;&lt;br /&gt;
import javax.xml.soap.SOAPElement;&lt;br /&gt;
import javax.xml.soap.SOAPHeader;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
public class SOAPRequest {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    try {&lt;br /&gt;
      SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();&lt;br /&gt;
      SOAPConnection connection = sfc.createConnection();&lt;br /&gt;
      MessageFactory mf = MessageFactory.newInstance();&lt;br /&gt;
      SOAPMessage sm = mf.createMessage();&lt;br /&gt;
      SOAPHeader sh = sm.getSOAPHeader();&lt;br /&gt;
      SOAPBody sb = sm.getSOAPBody();&lt;br /&gt;
      sh.detachNode();&lt;br /&gt;
      QName bodyName = new QName(&amp;quot;http://quoteCompany.ru&amp;quot;, &amp;quot;GetQuote&amp;quot;, &amp;quot;d&amp;quot;);&lt;br /&gt;
      SOAPBodyElement bodyElement = sb.addBodyElement(bodyName);&lt;br /&gt;
      QName qn = new QName(&amp;quot;aName&amp;quot;);&lt;br /&gt;
      SOAPElement quotation = bodyElement.addChildElement(qn);&lt;br /&gt;
      quotation.addTextNode(&amp;quot;TextMode&amp;quot;);&lt;br /&gt;
      System.out.println(&amp;quot;\n Soap Request:\n&amp;quot;);&lt;br /&gt;
      sm.writeTo(System.out);&lt;br /&gt;
      System.out.println();&lt;br /&gt;
      URL endpoint = new URL(&amp;quot;http://yourServer.ru&amp;quot;);&lt;br /&gt;
      SOAPMessage response = connection.call(sm, endpoint);&lt;br /&gt;
      System.out.println(response.getContentDescription());&lt;br /&gt;
    } catch (Exception ex) {&lt;br /&gt;
      ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Sign SOAP message ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import javax.xml.crypto.dsig.CanonicalizationMethod;&lt;br /&gt;
import javax.xml.crypto.dsig.DigestMethod;&lt;br /&gt;
import javax.xml.crypto.dsig.Reference;&lt;br /&gt;
import javax.xml.crypto.dsig.SignatureMethod;&lt;br /&gt;
import javax.xml.crypto.dsig.SignedInfo;&lt;br /&gt;
import javax.xml.crypto.dsig.XMLSignature;&lt;br /&gt;
import javax.xml.crypto.dsig.XMLSignatureFactory;&lt;br /&gt;
import javax.xml.crypto.dsig.dom.DOMSignContext;&lt;br /&gt;
import javax.xml.crypto.dsig.dom.DOMValidateContext;&lt;br /&gt;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;&lt;br /&gt;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;&lt;br /&gt;
import javax.xml.crypto.dsig.keyinfo.KeyValue;&lt;br /&gt;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilder;&lt;br /&gt;
import javax.xml.parsers.DocumentBuilderFactory;&lt;br /&gt;
import javax.xml.soap.MessageFactory;&lt;br /&gt;
import javax.xml.soap.Name;&lt;br /&gt;
import javax.xml.soap.SOAPBody;&lt;br /&gt;
import javax.xml.soap.SOAPBodyElement;&lt;br /&gt;
import javax.xml.soap.SOAPEnvelope;&lt;br /&gt;
import javax.xml.soap.SOAPHeader;&lt;br /&gt;
import javax.xml.soap.SOAPHeaderElement;&lt;br /&gt;
import javax.xml.soap.SOAPMessage;&lt;br /&gt;
import javax.xml.soap.SOAPPart;&lt;br /&gt;
import javax.xml.transform.OutputKeys;&lt;br /&gt;
import javax.xml.transform.Source;&lt;br /&gt;
import javax.xml.transform.Transformer;&lt;br /&gt;
import javax.xml.transform.TransformerException;&lt;br /&gt;
import javax.xml.transform.TransformerFactory;&lt;br /&gt;
import javax.xml.transform.dom.DOMSource;&lt;br /&gt;
import javax.xml.transform.sax.SAXSource;&lt;br /&gt;
import javax.xml.transform.stream.StreamResult;&lt;br /&gt;
import org.w3c.dom.Document;&lt;br /&gt;
import org.w3c.dom.Element;&lt;br /&gt;
import org.w3c.dom.Node;&lt;br /&gt;
import org.xml.sax.InputSource;&lt;br /&gt;
public class Signing {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();&lt;br /&gt;
    SOAPPart soapPart = soapMessage.getSOAPPart();&lt;br /&gt;
    SOAPEnvelope soapEnvelope = soapPart.getEnvelope();&lt;br /&gt;
    SOAPHeader soapHeader = soapEnvelope.getHeader();&lt;br /&gt;
    SOAPHeaderElement headerElement = soapHeader.addHeaderElement(soapEnvelope.createName(&lt;br /&gt;
        &amp;quot;Signature&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;, &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;));&lt;br /&gt;
    SOAPBody soapBody = soapEnvelope.getBody();&lt;br /&gt;
    soapBody.addAttribute(soapEnvelope.createName(&amp;quot;id&amp;quot;, &amp;quot;SOAP-SEC&amp;quot;,&lt;br /&gt;
        &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;), &amp;quot;Body&amp;quot;);&lt;br /&gt;
    Name bodyName = soapEnvelope.createName(&amp;quot;FooBar&amp;quot;, &amp;quot;z&amp;quot;, &amp;quot;http://example.ru&amp;quot;);&lt;br /&gt;
    SOAPBodyElement gltp = soapBody.addBodyElement(bodyName);&lt;br /&gt;
    Source source = soapPart.getContent();&lt;br /&gt;
    Node root = null;&lt;br /&gt;
    if (source instanceof DOMSource) {&lt;br /&gt;
      root = ((DOMSource) source).getNode();&lt;br /&gt;
    } else if (source instanceof SAXSource) {&lt;br /&gt;
      InputSource inSource = ((SAXSource) source).getInputSource();&lt;br /&gt;
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();&lt;br /&gt;
      dbf.setNamespaceAware(true);&lt;br /&gt;
      DocumentBuilder db = null;&lt;br /&gt;
      db = dbf.newDocumentBuilder();&lt;br /&gt;
      Document doc = db.parse(inSource);&lt;br /&gt;
      root = (Node) doc.getDocumentElement();&lt;br /&gt;
    }&lt;br /&gt;
    dumpDocument(root);&lt;br /&gt;
    KeyPairGenerator kpg = KeyPairGenerator.getInstance(&amp;quot;DSA&amp;quot;);&lt;br /&gt;
    kpg.initialize(1024, new SecureRandom());&lt;br /&gt;
    KeyPair keypair = kpg.generateKeyPair();&lt;br /&gt;
    XMLSignatureFactory sigFactory = XMLSignatureFactory.getInstance();&lt;br /&gt;
    Reference ref = sigFactory.newReference(&amp;quot;#Body&amp;quot;, sigFactory.newDigestMethod(DigestMethod.SHA1,&lt;br /&gt;
        null));&lt;br /&gt;
    SignedInfo signedInfo = sigFactory.newSignedInfo(sigFactory.newCanonicalizationMethod(&lt;br /&gt;
        CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null), sigFactory&lt;br /&gt;
        .newSignatureMethod(SignatureMethod.DSA_SHA1, null), Collections.singletonList(ref));&lt;br /&gt;
    KeyInfoFactory kif = sigFactory.getKeyInfoFactory();&lt;br /&gt;
    KeyValue kv = kif.newKeyValue(keypair.getPublic());&lt;br /&gt;
    KeyInfo keyInfo = kif.newKeyInfo(Collections.singletonList(kv));&lt;br /&gt;
    XMLSignature sig = sigFactory.newXMLSignature(signedInfo, keyInfo);&lt;br /&gt;
    System.out.println(&amp;quot;Signing the message...&amp;quot;);&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    Element envelope = getFirstChildElement(root);&lt;br /&gt;
    Element header = getFirstChildElement(envelope);&lt;br /&gt;
    DOMSignContext sigContext = new DOMSignContext(privateKey, header);&lt;br /&gt;
    sigContext.putNamespacePrefix(XMLSignature.XMLNS, &amp;quot;ds&amp;quot;);&lt;br /&gt;
    sigContext.setIdAttributeNS(getNextSiblingElement(header),&lt;br /&gt;
        &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;, &amp;quot;id&amp;quot;);&lt;br /&gt;
    sig.sign(sigContext);&lt;br /&gt;
    dumpDocument(root);&lt;br /&gt;
    System.out.println(&amp;quot;Validate the signature...&amp;quot;);&lt;br /&gt;
    Element sigElement = getFirstChildElement(header);&lt;br /&gt;
    DOMValidateContext valContext = new DOMValidateContext(keypair.getPublic(), sigElement);&lt;br /&gt;
    valContext.setIdAttributeNS(getNextSiblingElement(header),&lt;br /&gt;
        &amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;, &amp;quot;id&amp;quot;);&lt;br /&gt;
    boolean valid = sig.validate(valContext);&lt;br /&gt;
    System.out.println(&amp;quot;Signature valid? &amp;quot; + valid);&lt;br /&gt;
  }&lt;br /&gt;
  private static void dumpDocument(Node root) throws TransformerException {&lt;br /&gt;
    Transformer transformer = TransformerFactory.newInstance().newTransformer();&lt;br /&gt;
    transformer.setOutputProperty(OutputKeys.INDENT, &amp;quot;yes&amp;quot;);&lt;br /&gt;
    transformer.transform(new DOMSource(root), new StreamResult(System.out));&lt;br /&gt;
  }&lt;br /&gt;
  private static Element getFirstChildElement(Node node) {&lt;br /&gt;
    Node child = node.getFirstChild();&lt;br /&gt;
    while ((child != null) &amp;amp;&amp;amp; (child.getNodeType() != Node.ELEMENT_NODE)) {&lt;br /&gt;
      child = child.getNextSibling();&lt;br /&gt;
    }&lt;br /&gt;
    return (Element) child;&lt;br /&gt;
  }&lt;br /&gt;
  public static Element getNextSiblingElement(Node node) {&lt;br /&gt;
    Node sibling = node.getNextSibling();&lt;br /&gt;
    while ((sibling != null) &amp;amp;&amp;amp; (sibling.getNodeType() != Node.ELEMENT_NODE)) {&lt;br /&gt;
      sibling = sibling.getNextSibling();&lt;br /&gt;
    }&lt;br /&gt;
    return (Element) sibling;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-SEC:Signature xmlns:SOAP-SEC=&amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Body xmlns:SOAP-SEC=&amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot; SOAP-SEC:id=&amp;quot;Body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;z:FooBar xmlns:z=&amp;quot;http://example.ru&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
Signing the message...&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-SEC:Signature xmlns:SOAP-SEC=&amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;ds:Signature xmlns:ds=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ds:SignedInfo&amp;gt;&lt;br /&gt;
&amp;lt;ds:CanonicalizationMethod Algorithm=&amp;quot;http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;ds:SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#dsa-sha1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;ds:Reference URI=&amp;quot;#Body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ds:DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;ds:DigestValue&amp;gt;9x0mZhajy9dHKuIXh7bm0khuC7M=&amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
&amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
&amp;lt;/ds:SignedInfo&amp;gt;&lt;br /&gt;
&amp;lt;ds:SignatureValue&amp;gt;CiKztXFr2HnE1ul1S5OrJpiYCV46MJ9jEiDaU7AkAiCsgkTDxAhzyA==&amp;lt;/ds:SignatureValue&amp;gt;&lt;br /&gt;
&amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;lt;ds:KeyValue&amp;gt;&lt;br /&gt;
&amp;lt;ds:DSAKeyValue&amp;gt;&lt;br /&gt;
&amp;lt;ds:P&amp;gt;/X9TgR11EilS30qcLuzk5/YRt1I870QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuA&lt;br /&gt;
HTRv8mZgt2uZUKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVUE1oWkTL2dfOu&lt;br /&gt;
K2HXKu/yIgMZndFIAcc=&amp;lt;/ds:P&amp;gt;&lt;br /&gt;
&amp;lt;ds:Q&amp;gt;l2BQjxUjC8yykrmCouuEC/BYHPU=&amp;lt;/ds:Q&amp;gt;&lt;br /&gt;
&amp;lt;ds:G&amp;gt;9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3&lt;br /&gt;
zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKL&lt;br /&gt;
Zl6Ae1UlZAFMO/7PSSo=&amp;lt;/ds:G&amp;gt;&lt;br /&gt;
&amp;lt;ds:Y&amp;gt;j9Jsiuc8WtI3LxN+wuVUHsCJ5i22tG2SBtiRzKoWrpso/Tk62TJRN7FNsWQ0lDqIqJrQt4GqzkHx&lt;br /&gt;
yiRtmqm0xDsAd2ojzH1OZiGen+C8dsbAA4ydwmP1iz9UyAwevrdA/rhOAqgTUFv0ar9koh0aG/Wn&lt;br /&gt;
iFrXoLYt5eVzpw/swT4=&amp;lt;/ds:Y&amp;gt;&lt;br /&gt;
&amp;lt;/ds:DSAKeyValue&amp;gt;&lt;br /&gt;
&amp;lt;/ds:KeyValue&amp;gt;&lt;br /&gt;
&amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;lt;/ds:Signature&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Body xmlns:SOAP-SEC=&amp;quot;http://schemas.xmlsoap.org/soap/security/2000-12&amp;quot; SOAP-SEC:id=&amp;quot;Body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;z:FooBar xmlns:z=&amp;quot;http://example.ru&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
Validate the signature...&lt;br /&gt;
Signature valid? true&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
#Code referenced from &lt;br /&gt;
#Chapter 6 - Extensible Markup Language (XML)&lt;br /&gt;
#Java 6 Platform Revealed&lt;br /&gt;
#by John Zukowski &lt;br /&gt;
#ISBN: 1590596609&lt;br /&gt;
#http://www.apress.ru/book/bookDisplay.html?bID=10109&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Use DSA key pair to generate XML Signature ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.SecureRandom;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import javax.xml.crypto.dsig.CanonicalizationMethod;&lt;br /&gt;
import javax.xml.crypto.dsig.DigestMethod;&lt;br /&gt;
import javax.xml.crypto.dsig.Reference;&lt;br /&gt;
import javax.xml.crypto.dsig.SignatureMethod;&lt;br /&gt;
import javax.xml.crypto.dsig.SignedInfo;&lt;br /&gt;
import javax.xml.crypto.dsig.XMLSignature;&lt;br /&gt;
import javax.xml.crypto.dsig.XMLSignatureFactory;&lt;br /&gt;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;&lt;br /&gt;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;&lt;br /&gt;
import javax.xml.crypto.dsig.keyinfo.KeyValue;&lt;br /&gt;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    KeyPairGenerator kpg = KeyPairGenerator.getInstance(&amp;quot;DSA&amp;quot;);&lt;br /&gt;
    kpg.initialize(1024, new SecureRandom());&lt;br /&gt;
    KeyPair dsaKeyPair = kpg.generateKeyPair();&lt;br /&gt;
    XMLSignatureFactory sigFactory = XMLSignatureFactory.getInstance();&lt;br /&gt;
    Reference ref = sigFactory.newReference(&amp;quot;#Body&amp;quot;, sigFactory.newDigestMethod(DigestMethod.SHA1,&lt;br /&gt;
        null));&lt;br /&gt;
    SignedInfo signedInfo = sigFactory.newSignedInfo(sigFactory.newCanonicalizationMethod(&lt;br /&gt;
        CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null), sigFactory&lt;br /&gt;
        .newSignatureMethod(SignatureMethod.DSA_SHA1, null), Collections.singletonList(ref));&lt;br /&gt;
    KeyInfoFactory kif = sigFactory.getKeyInfoFactory();&lt;br /&gt;
    KeyValue kv = kif.newKeyValue(dsaKeyPair.getPublic());&lt;br /&gt;
    KeyInfo keyInfo = kif.newKeyInfo(Collections.singletonList(kv));&lt;br /&gt;
    XMLSignature xmlSig = sigFactory.newXMLSignature(signedInfo, keyInfo);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>