susantha 2003/07/13 21:04:20
Modified: c/docs developers-guide.html Log: Added module writing API Revision Changes Path 1.2 +724 -75 xml-axis/c/docs/developers-guide.html Index: developers-guide.html =================================================================== RCS file: /home/cvs/xml-axis/c/docs/developers-guide.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- developers-guide.html 23 Jun 2003 13:38:41 -0000 1.1 +++ developers-guide.html 14 Jul 2003 04:04:19 -0000 1.2 @@ -1,95 +1,744 @@ <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> +<html xmlns:v="urn:schemas-microsoft-com:vml" +xmlns:o="urn:schemas-microsoft-com:office:office" +xmlns:w="urn:schemas-microsoft-com:office:word" +xmlns="http://www.w3.org/TR/REC-html40"> + <head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <title>Axis Developer's Guide</title> - <link href="axis.css" rel=stylesheet type=text/css> +<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> +<meta name=ProgId content=Word.Document> +<meta name=Generator content="Microsoft Word 10"> +<meta name=Originator content="Microsoft Word 10"> +<link rel=File-List href="developers-guide_files/filelist.xml"> +<link rel=Edit-Time-Data href="developers-guide_files/editdata.mso"> +<!--[if !mso]> +<style> +v\:* {behavior:url(#default#VML);} +o\:* {behavior:url(#default#VML);} +w\:* {behavior:url(#default#VML);} +.shape {behavior:url(#default#VML);} +</style> +<![endif]--> +<title>Axis Developer's Guide</title> +<!--[if gte mso 9]><xml> + <o:DocumentProperties> + <o:Author>Susantha Kumara</o:Author> + <o:Template>Normal</o:Template> + <o:LastAuthor>Susantha Kumara</o:LastAuthor> + <o:Revision>17</o:Revision> + <o:TotalTime>106</o:TotalTime> + <o:Created>2003-07-12T13:59:00Z</o:Created> + <o:LastSaved>2003-07-12T15:45:00Z</o:LastSaved> + <o:Pages>1</o:Pages> + <o:Words>697</o:Words> + <o:Characters>3978</o:Characters> + <o:Company>Home</o:Company> + <o:Lines>33</o:Lines> + <o:Paragraphs>9</o:Paragraphs> + <o:CharactersWithSpaces>4666</o:CharactersWithSpaces> + <o:Version>10.3311</o:Version> + </o:DocumentProperties> +</xml><![endif]--><!--[if gte mso 9]><xml> + <w:WordDocument> + <w:Zoom>150</w:Zoom> + <w:SpellingState>Clean</w:SpellingState> + <w:GrammarState>Clean</w:GrammarState> + <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> + </w:WordDocument> +</xml><![endif]--> +<link rel=Stylesheet type="text/css" media=all href=axis.css> +<style> +<!-- + /* Font Definitions */ + @font-face + {font-family:Wingdings; + panose-1:5 0 0 0 0 0 0 0 0 0; + mso-font-charset:2; + mso-generic-font-family:auto; + mso-font-pitch:variable; + mso-font-signature:0 268435456 0 0 -2147483648 0;} [EMAIL PROTECTED] + {font-family:Verdana; + panose-1:2 11 6 4 3 5 4 4 2 4; + mso-font-charset:0; + mso-generic-font-family:swiss; + mso-font-pitch:variable; + mso-font-signature:536871559 0 0 0 415 0;} + /* Style Definitions */ + p.MsoNormal, li.MsoNormal, div.MsoNormal + {mso-style-parent:""; + margin:0in; + margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black; + mso-believe-normal-left:yes;} +h1 + {mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:-22.5pt; + mso-pagination:widow-orphan; + mso-outline-level:1; + font-size:24.0pt; + color:black; + font-weight:bold;} +h2 + {mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:-22.5pt; + mso-pagination:widow-orphan; + mso-outline-level:2; + background:#DCE1FF; + font-size:18.0pt; + color:black; + font-weight:bold;} +h3 + {mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:-7.5pt; + mso-pagination:widow-orphan; + mso-outline-level:3; + font-size:13.5pt; + color:black; + font-weight:bold;} +a:link, span.MsoHyperlink + {color:blue; + text-decoration:underline; + text-underline:single;} +a:visited, span.MsoHyperlinkFollowed + {color:blue; + text-decoration:underline; + text-underline:single;} +p + {mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:0in; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black;} +p.example, li.example, div.example + {mso-style-name:example; + mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:0in; + mso-pagination:widow-orphan; + background:#CCCCFF; + font-size:12.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black;} +p.xml, li.xml, div.xml + {mso-style-name:xml; + mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:0in; + mso-pagination:widow-orphan; + background:#EEEEEE; + font-size:12.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black;} +p.java, li.java, div.java + {mso-style-name:java; + mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:0in; + mso-pagination:widow-orphan; + background:#EEEEEE; + font-size:12.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black;} +p.note, li.note, div.note + {mso-style-name:note; + mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:0in; + mso-pagination:widow-orphan; + font-size:12.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black; + font-weight:bold;} +p.head, li.head, div.head + {mso-style-name:head; + mso-margin-top-alt:auto; + margin-right:0in; + mso-margin-bottom-alt:auto; + margin-left:0in; + text-align:center; + mso-pagination:widow-orphan; + font-size:29.0pt; + font-family:"Times New Roman"; + mso-fareast-font-family:"Times New Roman"; + color:black; + font-weight:bold;} +span.SpellE + {mso-style-name:""; + mso-spl-e:yes;} +span.GramE + {mso-style-name:""; + mso-gram-e:yes;} [EMAIL PROTECTED] Section1 + {size:8.5in 11.0in; + margin:1.0in 1.25in 1.0in 1.25in; + mso-header-margin:.5in; + mso-footer-margin:.5in; + mso-paper-source:0;} +div.Section1 + {page:Section1;} + /* List Definitions */ + @list l0 + {mso-list-id:151718625; + mso-list-type:hybrid; + mso-list-template-ids:430862218 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} [EMAIL PROTECTED] l0:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:.5in; + mso-level-number-position:left; + text-indent:-.25in; + font-family:Symbol;} [EMAIL PROTECTED] l1 + {mso-list-id:543100049; + mso-list-type:hybrid; + mso-list-template-ids:-1476113394 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} [EMAIL PROTECTED] l1:level1 + {mso-level-tab-stop:.5in; + mso-level-number-position:left; + text-indent:-.25in;} [EMAIL PROTECTED] l2 + {mso-list-id:1219704273; + mso-list-type:hybrid; + mso-list-template-ids:-1198995366 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} [EMAIL PROTECTED] l2:level1 + {mso-level-tab-stop:.5in; + mso-level-number-position:left; + text-indent:-.25in;} [EMAIL PROTECTED] l3 + {mso-list-id:1931501748; + mso-list-template-ids:1792558980;} [EMAIL PROTECTED] l3:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:.5in; + mso-level-number-position:left; + text-indent:-.25in; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} [EMAIL PROTECTED] l4 + {mso-list-id:2078626972; + mso-list-template-ids:-312079392;} [EMAIL PROTECTED] l4:level1 + {mso-level-number-format:bullet; + mso-level-text:\F0B7; + mso-level-tab-stop:.5in; + mso-level-number-position:left; + text-indent:-.25in; + mso-ansi-font-size:10.0pt; + font-family:Symbol;} +ol + {margin-bottom:0in;} +ul + {margin-bottom:0in;} +--> +</style> +<!--[if gte mso 10]> +<style> + /* Style Definitions */ + table.MsoNormalTable + {mso-style-name:"Table Normal"; + mso-tstyle-rowband-size:0; + mso-tstyle-colband-size:0; + mso-style-noshow:yes; + mso-style-parent:""; + mso-padding-alt:0in 5.4pt 0in 5.4pt; + mso-para-margin:0in; + mso-para-margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:10.0pt; + font-family:"Times New Roman";} +</style> +<![endif]--><![if mso 9]> +<style> +p.MsoNormal + {margin-left:30.0pt;} +</style> +<![endif]><!--[if gte mso 9]><xml> + <o:shapedefaults v:ext="edit" spidmax="2050" fillcolor="white"> + <v:fill color="white"/> + <v:textbox style='layout-flow:vertical'/> + </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml> + <o:shapelayout v:ext="edit"> + <o:idmap v:ext="edit" data="1"/> + <o:regrouptable v:ext="edit"> + <o:entry new="1" old="0"/> + </o:regrouptable> + </o:shapelayout></xml><![endif]--> </head> -<body text="#000000" bgcolor="#FFFFFF"> -<center> -<h1> -<img SRC="images/axis.jpg" height=96 width=176></h1></center> - -<h1> -Axis C++ Developer's Guide</h1> -<i>0.1 Version</i> -<h3> -Table of Contents</h3> -<a href="#Introduction">Introduction</a> -<br><a href="#General Guidelines">General Guidelines</a> -<br><a href="#Development Environment">Development Environment</a> -<br><a href="#Configuration Properties">Configuration Properties</a> -<br><a href="#Compile And Run">Compile and Run</a> -<br><a href="#Adding Testcases">Adding Testcases</a> -<br><a href="#TestStructure">Test and Samples Structure</a> -<br><a href="#CodeChecks">Adding Source Code Checks</a> -<br><a href="#JUnit">CUnit and Axis</a> -<br><a href="#Debugging">Debugging</a> -<br> -<h2> -<a NAME="Introduction"></a>Introduction</h2> -This document is intended for the developer who wish to download and compile and -test the axis C++ server.<h2> -<a NAME="General Guidelines"></a>General Guidelines</h2> - -<ul> -<li> -TO DO ...</li> -</ul> +<body bgcolor=white lang=EN-US link=blue vlink=blue style='tab-interval:.5in; +margin-left:30.0pt'> + +<div class=Section1> + +<h1 align=center style='text-align:center'><span style='font-family:Verdana'><img +width=176 height=96 id="_x0000_i1025" src="images/axis.jpg"><o:p></o:p></span></h1> -<h2> -<a NAME="Development Environment"></a>Development Environment</h2> -The following packages are required for axis development: -<ul> +<h1><span style='font-family:Verdana'>Axis C++ Developer's Guide<o:p></o:p></span></h1> -<li> -<a href="http://xml.apache.org/dist/xerces-j">xerces</a> - xml processor</li> +<p class=MsoNormal><i><span style='font-family:Verdana'>0.1 Version</span></i><span +style='font-family:Verdana'> <o:p></o:p></span></p> + +<h3><span style='font-family:Verdana'>Table of Contents<o:p></o:p></span></h3> + +<p class=MsoNormal><span style='font-family:Verdana'><a href="#Introduction">Introduction</a> +<br> +<a href="#General_Guidelines">General Guidelines</a> <br> +<a href="#Development_Environment">Development Environment</a> <br> +<a href="#Configuration_Properties">Configuration Properties</a> <br> +<a href="#Compile_And_Run">Compile and Run</a> <br> +<a href="#Adding_Testcases">Adding <span class=SpellE>Testcases</span></a> <o:p></o:p></span></p> + +<p class=MsoNormal><span style='font-family:Verdana'><a href="#ModuleAPI">Writing +Transport Modules</a><br> +<a href="#TestStructure">Test and Samples Structure</a> <br> +<a href="#CodeChecks">Adding Source Code Checks</a> <br> +<a href="#JUnit"><span class=SpellE>CUnit</span> and Axis</a> <br> +<a href="#Debugging">Debugging</a> <br> + <o:p></o:p></span></p> + +<h2><a name=Introduction></a><span style='font-family:Verdana'>Introduction<o:p></o:p></span></h2> + +<p class=MsoNormal><span style='font-family:Verdana'>This document is intended +for the <span class=GramE>developer who wish</span> to download and compile and +test the axis C++ server.<o:p></o:p></span></p> + +<h2><a name="General_Guidelines"></a><span style='font-family:Verdana'>General +Guidelines<o:p></o:p></span></h2> + +<ul type=disc> + <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; + mso-list:l4 level1 lfo1;tab-stops:list .5in'><span style='font-family: + Verdana'>TO DO ...<o:p></o:p></span></li> </ul> -<h2> -<a NAME="Configuration Properties"></a>Configuration Properties</h2> -<p> -TO DO ... +<h2><a name="Development_Environment"></a><span style='font-family:Verdana'>Development +Environment<o:p></o:p></span></h2> + +<p class=MsoNormal><span style='font-family:Verdana'>The following packages are +required for axis development: <o:p></o:p></span></p> +<ul type=disc> + <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; + mso-list:l3 level1 lfo2;tab-stops:list .5in'><span style='font-family: + Verdana'><a href="http://xml.apache.org/dist/xerces-j"><span class=SpellE>xerces</span></a> + - xml processor<o:p></o:p></span></li> </ul> -<h2> -<a NAME="Compile And Run"></a>Compile and Run</h2> -<p> create and export an environment variable called<br> -XERCES_HOME. This environment variable should contain the path to the xerces -home directory.<br> +<h2><a name="Configuration_Properties"></a><span style='font-family:Verdana'>Configuration +Properties<o:p></o:p></span></h2> + +<p><span style='font-family:Verdana'>TO <span class=GramE>DO ...</span> <o:p></o:p></span></p> + +<h2><a name="Compile_And_Run"></a><span style='font-family:Verdana'>Compile and +Run<o:p></o:p></span></h2> + +<p><span style='font-family:Verdana'> <span class=GramE>create</span> and +export an environment variable called<br> +XERCES_HOME. This environment variable should contain the path to the <span +class=SpellE>xerces</span> home directory.<br> <br> -For example if your xerces is installed in<br> +For example if your <span class=SpellE>xerces</span> is installed in<br> <br> -/usr/local/xerces_c folder then <br> -$(XERCES_HOME)/lib should expand to /usr/local/xerces_c/lib and<br> -$(XERCES_HOME)/include should expand to /usr/local/xerces_c/include<br> +/<span class=SpellE>usr/local/xerces_c</span> folder then <br> +$(XERCES_HOME)/lib should expand to /<span class=SpellE>usr/local/xerces_c/lib</span> +and<br> +$(XERCES_HOME)/include should expand to /<span class=SpellE>usr/local/xerces_c/include</span><br> <br> -cd axiscpp<br> +<span class=SpellE>cd</span> <span class=SpellE>axiscpp</span><br> make clean<br> make<br> <br> -If the build successful, libaxiscpp.so should have been created in <br> -axiscpp/release directory.</p> +If the build successful, <span class=SpellE>libaxiscpp.so</span> should have +been created in <br> +<span class=SpellE>axiscpp</span>/release directory.<o:p></o:p></span></p> + +<h2><a name="Adding_Testcases"></a><span style='font-family:Verdana'>Adding <span +class=SpellE>Testcases</span><o:p></o:p></span></h2> + +<p><span style='font-family:Verdana'>See Also: <a href="#TestStructure">Test +and Samples Structure</a><o:p></o:p></span></p> + +<h2><a name=TestStructure></a><a name=ModuleAPI></a><span style='font-family: +Verdana'>Writing Transport Modules<o:p></o:p></span></h2> + +<p><!--[if gte vml 1]><v:group id="_x0000_s1047" style='position:absolute; + margin-left:36pt;margin-top:17.7pt;width:375.35pt;height:1in;z-index:1' + coordorigin="640,2314" coordsize="7507,1440"> + <v:shapetype id="_x0000_t16" coordsize="21600,21600" o:spt="16" adj="5400" + path="[EMAIL PROTECTED],[EMAIL PROTECTED],,[EMAIL PROTECTED],21600,[EMAIL PROTECTED],21600,[EMAIL PROTECTED]@[EMAIL PROTECTED],21600,[EMAIL PROTECTED]@[EMAIL PROTECTED],21600e"> + <v:stroke joinstyle="miter"/> + <v:formulas> + <v:f eqn="val #0"/> + <v:f eqn="sum width 0 #0"/> + <v:f eqn="sum height 0 #0"/> + <v:f eqn="mid height #0"/> + <v:f eqn="prod @1 1 2"/> + <v:f eqn="prod @2 1 2"/> + <v:f eqn="mid width #0"/> + </v:formulas> + <v:path o:extrusionok="f" gradientshapeok="t" limo="10800,10800" + o:connecttype="custom" o:connectlocs="@6,0;@4,@0;0,@3;@4,21600;@1,@3;21600,@5" + o:connectangles="270,270,180,90,0,0" textboxrect="0,@0,@1,21600"/> + <v:handles> + <v:h position="topLeft,#0" switch="" yrange="0,21600"/> + </v:handles> + <o:complex v:ext="view"/> + </v:shapetype><v:shape id="_x0000_s1028" type="#_x0000_t16" style='position:absolute; + left:3270;top:2314;width:975;height:1378' o:regroupid="1" adj="7067"/> + <v:shape id="_x0000_s1029" type="#_x0000_t16" style='position:absolute;left:4035; + top:2314;width:585;height:1332' o:regroupid="1" adj="11483"> + <v:textbox style='mso-next-textbox:#_x0000_s1029'/> + </v:shape><v:shape id="_x0000_s1030" type="#_x0000_t16" style='position:absolute; + left:5696;top:2321;width:585;height:1332' o:regroupid="1" adj="11483"/> + <v:shape id="_x0000_s1031" type="#_x0000_t16" style='position:absolute;left:6088; + top:2322;width:2059;height:1332' o:regroupid="1"/> + <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"> + <v:stroke joinstyle="miter"/> + <v:path gradientshapeok="t" o:connecttype="rect"/> + </v:shapetype><v:shape id="_x0000_s1034" type="#_x0000_t202" style='position:absolute; + left:3195;top:2646;width:825;height:1108' o:regroupid="1" filled="f" + stroked="f"> + <v:textbox style='layout-flow:vertical;mso-layout-flow-alt:bottom-to-top; + mso-next-textbox:#_x0000_s1034'> + <![if RotText]><![if !mso]> + <table cellpadding=0 cellspacing=0 width="100%"> + <tr> + <td><![endif]> + <div> + <p class=MsoNormal align=center style='text-align:center'><b + style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt'>Transport + Module<o:p></o:p></span></b></p> + </div> + <![if !mso]></td> + </tr> + </table> + <![endif]><![endif]></v:textbox> + </v:shape><v:shape id="_x0000_s1035" type="#_x0000_t202" style='position:absolute; + left:6401;top:2787;width:1125;height:599' o:regroupid="1" filled="f" + stroked="f"> + <v:textbox style='mso-next-textbox:#_x0000_s1035'> + <![if !mso]> + <table cellpadding=0 cellspacing=0 width="100%"> + <tr> + <td><![endif]> + <div> + <p class=MsoNormal align=center style='text-align:center'><b + style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt'>Axis + Engine<o:p></o:p></span></b></p> + </div> + <![if !mso]></td> + </tr> + </table> + <![endif]></v:textbox> + </v:shape><v:shape id="_x0000_s1036" type="#_x0000_t202" style='position:absolute; + left:3930;top:2869;width:495;height:509' o:regroupid="1" filled="f" + stroked="f"> + <v:textbox style='layout-flow:vertical;mso-layout-flow-alt:bottom-to-top; + mso-next-textbox:#_x0000_s1036'> + <![if RotText]><![if !mso]> + <table cellpadding=0 cellspacing=0 width="100%"> + <tr> + <td><![endif]> + <div> + <p class=MsoNormal align=center style='text-align:center'><b + style='mso-bidi-font-weight:normal'><span style='font-size:8.0pt'>API<o:p></o:p></span></b></p> + </div> + <![if !mso]></td> + </tr> + </table> + <![endif]><![endif]></v:textbox> + </v:shape><v:shape id="_x0000_s1038" type="#_x0000_t202" style='position:absolute; + left:5593;top:2876;width:495;height:509' o:regroupid="1" filled="f" + stroked="f"> + <v:textbox style='layout-flow:vertical;mso-layout-flow-alt:bottom-to-top; + mso-next-textbox:#_x0000_s1038'> + <![if RotText]><![if !mso]> + <table cellpadding=0 cellspacing=0 width="100%"> + <tr> + <td><![endif]> + <div> + <p class=MsoNormal align=center style='text-align:center'><b + style='mso-bidi-font-weight:normal'><span style='font-size:8.0pt'>API<o:p></o:p></span></b></p> + </div> + <![if !mso]></td> + </tr> + </table> + <![endif]><![endif]></v:textbox> + </v:shape><v:shapetype id="_x0000_t69" coordsize="21600,21600" o:spt="69" + adj="4320,5400" path="m,[EMAIL PROTECTED],[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED],21600,21600,[EMAIL PROTECTED],[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED],xe"> + <v:stroke joinstyle="miter"/> + <v:formulas> + <v:f eqn="val #0"/> + <v:f eqn="val #1"/> + <v:f eqn="sum 21600 0 #0"/> + <v:f eqn="sum 21600 0 #1"/> + <v:f eqn="prod #0 #1 10800"/> + <v:f eqn="sum #0 0 @4"/> + <v:f eqn="sum 21600 0 @5"/> + </v:formulas> + <v:path o:connecttype="custom" o:connectlocs="@2,0;10800,@1;@0,0;0,10800;@0,21600;10800,@3;@2,21600;21600,10800" + o:connectangles="270,270,270,180,90,90,90,0" textboxrect="@5,@1,@6,@3"/> + <v:handles> + <v:h position="#0,#1" xrange="0,10800" yrange="0,10800"/> + </v:handles> + </v:shapetype><v:shape id="_x0000_s1041" type="#_x0000_t69" style='position:absolute; + left:4425;top:2870;width:1155;height:405' o:regroupid="1"> + <v:textbox style='layout-flow:vertical'/> + </v:shape><v:shape id="_x0000_s1044" type="#_x0000_t16" style='position:absolute; + left:640;top:2316;width:1835;height:1438' adj="7067"/> + <v:shape id="_x0000_s1045" type="#_x0000_t202" style='position:absolute; + left:761;top:2956;width:1125;height:599' filled="f" stroked="f"> + <v:textbox style='mso-next-textbox:#_x0000_s1045'> + <![if !mso]> + <table cellpadding=0 cellspacing=0 width="100%"> + <tr> + <td><![endif]> + <div> + <p class=MsoNormal align=center style='text-align:center'><b + style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt'>Transport + Listener<o:p></o:p></span></b></p> + </div> + <![if !mso]></td> + </tr> + </table> + <![endif]></v:textbox> + </v:shape><v:shape id="_x0000_s1046" type="#_x0000_t69" style='position:absolute; + left:2175;top:2885;width:1020;height:405'> + <v:textbox style='layout-flow:vertical'/> + </v:shape></v:group><![endif]--><![if !vml]><span style='mso-ignore:vglayout; +position:absolute;z-index:1;margin-left:47px;margin-top:23px;width:502px; +height:99px'><span style='mso-ignore:vglayout;position:absolute;z-index:1; +margin-left:169px;margin-top:21px;width:59px;height:78px'><![endif]><![if !RotText]><img +width=59 height=78 src="developers-guide_files/image002.gif" +alt="Text Box: Transport Module" v:shapes="_x0000_s1034" class=shape v:dpi="96"><![endif]><![if !vml]></span><span +style='mso-ignore:vglayout;position:absolute;z-index:1;margin-left:218px; +margin-top:36px;width:37px;height:38px'><![endif]><![if !RotText]><img +width=37 height=38 src="developers-guide_files/image003.gif" alt="Text Box: API" +v:shapes="_x0000_s1036" class=shape v:dpi="96"><![endif]><![if !vml]></span><span +style='mso-ignore:vglayout;position:absolute;z-index:1;margin-left:329px; +margin-top:36px;width:37px;height:38px'><![endif]><![if !RotText]><img +width=37 height=38 src="developers-guide_files/image004.gif" alt="Text Box: API" +v:shapes="_x0000_s1038" class=shape v:dpi="96"><![endif]><![if !vml]></span><img +width=502 height=99 src="developers-guide_files/image001.gif" v:shapes="_x0000_s1047 _x0000_s1028 _x0000_s1029 _x0000_s1030 _x0000_s1031 _x0000_s1035 _x0000_s1041 _x0000_s1044 _x0000_s1045 _x0000_s1046"></span><![endif]><span +style='font-family:Verdana'> <o:p></o:p></span></p> + +<p><span style='font-family:Verdana'><o:p> </o:p></span></p> + +<p><span style='font-family:Verdana'><o:p> </o:p></span></p> + +<p><span style='font-family:Verdana'><o:p> </o:p></span></p> + +<p><span style='font-family:Verdana'>Axis C++ is plugged-in to any transport listener +such as Apache Web Server or IIS through a Transport Module. Axis Engine and +the Transport Module can be developed in 2 ways.<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo3; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>�<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span style='font-family:Verdana'>They can be +compiled and linked together into a single DLL (or Shared Object) which is +plugged into the Transport Listener. This way reduces one level of indirection +and leads to performance.<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo3; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol; +mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span +style='mso-list:Ignore'>�<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span style='font-family:Verdana'>They can be +made 2 separate DLLs (or Shared Objects). Advantage of this method is that the +2 modules can be developed separately.<o:p></o:p></span></p> + +<p><span style='font-family:Verdana'>Module should be written specifically for +each kind of Transport Listener (Apache or IIS) whereas the <span class=SpellE>AxisEngine</span> +is not specific to Transport Listener. <o:p></o:p></span></p> + +<p><span style='font-family:Verdana'>So this API defines the way that Transport +Module communicates with the <span class=SpellE>AxisEngine</span>. <o:p></o:p></span></p> + +<h3><span style='font-family:Verdana'>Module side API<o:p></o:p></span></h3> + +<p><span style='font-family:Verdana'>There is a set of functions to be +implemented by each module. <span class=SpellE>AxisEngine</span> needs the +module to implement them.<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo4; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>send_transport_information</span>(<span class=SpellE>TransportInfo</span>*)<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo4; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>get_request_bytes</span>(char*, <span class=SpellE>int</span>, <span +class=SpellE>int</span>*)<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo4; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>send_response_bytes</span>(char*)<o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>send_transport_information</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'><o:p></o:p></span></b></p> + +<p><span class=SpellE><span style='font-family:Verdana'>AxisEngine</span></span><span +style='font-family:Verdana'> may call this function to send transport specific +information of the response (<span class=GramE>Ex :</span> http headers for +HTTP transport).<o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>get_request_bytes</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'><o:p></o:p></span></b></p> + +<p><span class=SpellE><span style='font-family:Verdana'>AxisEngine</span></span><span +style='font-family:Verdana'> calls this function whenever it needs more soap +request bytes in the incoming stream. <span class=SpellE>AxisEngine</span> may +call this function more than once. <o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>send_response_bytes</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'><o:p></o:p></span></b></p> + +<p><span class=SpellE><span style='font-family:Verdana'>AxisEngine</span></span><span +style='font-family:Verdana'> calls this function whenever it wants to send a +fragment of soap response to the Transport Listener. This function may also be +called by the <span class=SpellE>AxisEngine</span> more than once depending on +the size of the response. The transport listener may accumulate or send each +fragment at each function call.<o:p></o:p></span></p> + +<h3><span class=SpellE><span style='font-family:Verdana'>AxisEngine</span></span><span +style='font-family:Verdana'> side API<o:p></o:p></span></h3> + +<p><span class=SpellE><span style='font-family:Verdana'>AxisEngine</span></span><span +style='font-family:Verdana'> has implemented following functions to be used by +any Transport Module.<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo5; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>initialize_module</span>()<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo5; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>initialize_process</span>()<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo5; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>process_request</span>(<span class=SpellE>TransportInfo</span>*)<o:p></o:p></span></p> + +<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo5; +tab-stops:list .5in'><![if !supportLists]><span style='font-family:Verdana; +mso-fareast-font-family:Verdana;mso-bidi-font-family:Verdana'><span +style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'> +</span></span></span><![endif]><span class=SpellE><span style='font-family: +Verdana'>int</span></span><span style='font-family:Verdana'> <span +class=SpellE>finalize_process</span>()<o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>initialize_module</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'><o:p></o:p></span></b></p> + +<p><span style='font-family:Verdana'>Transport Module <b style='mso-bidi-font-weight: +normal'>MUST </b>call this function when it loads the <span class=SpellE>AxisEngine</span>. +If this function returns FAIL it cannot be assured that the <span class=SpellE>AxisEngine</span> +works properly. Loading of all <span class=SpellE>AxisEngine’s</span> +components (DLLs) are done within this function.<o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>initialize_process</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'><o:p></o:p></span></b></p> + +<p><span style='font-family:Verdana'>As the <span class=SpellE>AxisEngine</span> +is single threaded model, simultaneous requests are served by several processes +spawned. So when each process is spawned, its initialization should be done. +Therefore the Transport Module <b style='mso-bidi-font-weight:normal'>MUST </b>call +this API function when it spawns a new <span class=SpellE>AxisEngine</span> +process.<o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>process_request</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'><o:p></o:p></span></b></p> + +<p><span style='font-family:Verdana'>Transport Module calls this function for +each soap request. Transport Module should fill a <span class=SpellE>TransportInfo</span> +structure with the relevant transport information and pass it to the <span +class=SpellE>process_request</span> function. Returning FAIL indicates a +critical error in processing the soap request (not a generation of Soap Fault).<o:p></o:p></span></p> + +<p><span class=SpellE><b style='mso-bidi-font-weight:normal'><span +style='font-family:Verdana'>finalize_process</span></b></span><b +style='mso-bidi-font-weight:normal'><span style='font-family:Verdana'> <o:p></o:p></span></b></p> + +<p><span style='font-family:Verdana'>This function does the opposite of what <span +class=SpellE>initialize_process</span> does and <b style='mso-bidi-font-weight: +normal'>MUST </b><span class=GramE>be<span style='mso-spacerun:yes'>� +</span>called</span> by Transport Module for the process end.<o:p></o:p></span></p> + +<p><span style='font-family:Verdana'><o:p> </o:p></span></p> + +<h2><span style='font-family:Verdana'>Test Structure<o:p></o:p></span></h2> + +<p><span style='font-family:Verdana'> <o:p></o:p></span></p> + +<h2><a name=CodeChecks></a><span style='font-family:Verdana'>Adding Source Code +Checks<o:p></o:p></span></h2> + +<p><span style='font-family:Verdana'> <o:p></o:p></span></p> + +<h2><a name=JUnit></a><span class=SpellE><span style='font-family:Verdana'>CUnit</span></span><span +style='font-family:Verdana'> and Axis<o:p></o:p></span></h2> -<h2> -<a NAME="Adding Testcases"></a><font color="#000000">Adding Testcases</font></h2> -<P>See Also: <a href="#TestStructure">Test and Samples Structure</a></P> -<font color="#000000"> - -<h2><a NAME="TestStructure"></a>Test Structure</H2> - -<p> </p> -<h2> -<a NAME="CodeChecks"></a>Adding Source Code Checks</h2> -<p> - <h2> -<a NAME="JUnit"></a>CUnit and Axis</h2> - -<p> - <h2> -<a NAME="Debugging"></a>Debugging</h2> +<p><span style='font-family:Verdana'> <o:p></o:p></span></p> + +<h2><a name=Debugging></a><span style='font-family:Verdana'>Debugging<o:p></o:p></span></h2> + +</div> </body> -</html> \ No newline at end of file + +</html>
