blob: 3e0e30e55f91463a2635b5a30ac9016c8bbbe9a7 [file] [log] [blame]
<div class="wiki-content maincontent"><p>OpenWire is our cross language <link><page ri:content-title="Wire Protocol"></page></link> to allow native access to ActiveMQ from a number of different languages and platforms. The Java OpenWire transport is the default transport in ActiveMQ 4.x or later. For other languages see the following...</p><ul><li class="confluence-link"><a shape="rect" href="http://activemq.apache.org/nms/">NMS</a> for the C# API to Messaging and the OpenWire implementation in C#</li><li class="confluence-link"><link><page ri:content-title="Index" ri:space-key="AMQCPP"></page><plain-text-link-body>CMS</plain-text-link-body></link> for the C++ API to Messaging and the OpenWire implementation in C++</li></ul><p><strong>Note</strong> that you can also use <link><page ri:content-title="Stomp"></page></link> to access ActiveMQ from many different languages as well as use <link><page ri:content-title="How do I access ActiveMQ from C"></page><plain-text-link-body>GCJ</plain-text-link-body></link> or <a shape="rect" href="http://activemq.apache.org/nms/">IKVM</a> to access the Java code for ActiveMQ from C/C++ or .Net respectively without using OpenWire.</p><h3>How it works</h3><p>OpenWire works by code generating language specific commands and marshaling code which understands the core OpenWire protocol. Then we can write language specific extensions for the low level protocol to provide a nice and easy to use client API in different languages.</p><p>To give you an idea, <a shape="rect" href="https://svn.apache.org/repos/asf/activemq/trunk/activemq-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/">here</a> are the Java classes which code generate the C#, Java, C, and CPP client code.</p><p>Since OpenWire automates the creation of language specific <link><page ri:content-title="Wire Protocol"></page></link> implementations; then its a matter of wrapping the language specific TCP/IP socket code and wrapping the API in some easy to use functions/classes.</p><h3>Specification</h3><p>For a detailed specification of what you will see on the wire:</p><ul><li><link><page ri:content-title="OpenWire Version 2 Specification"></page></link></li></ul></div>