| <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> |
| <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"> |
| <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;} |
| @font-face |
| {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;} |
| @page 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;} |
| @list 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;} |
| @list l1 |
| {mso-list-id:543100049; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-1476113394 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} |
| @list l1:level1 |
| {mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l2 |
| {mso-list-id:1219704273; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-1198995366 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} |
| @list l2:level1 |
| {mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3 |
| {mso-list-id:1931501748; |
| mso-list-template-ids:1792558980;} |
| @list 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;} |
| @list l4 |
| {mso-list-id:2078626972; |
| mso-list-template-ids:-312079392;} |
| @list 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 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> |
| |
| <h1><span style='font-family:Verdana'>Axis C++ Developer's Guide<o:p></o:p></span></h1> |
| |
| <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="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="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'> |
| |
| |
| |
| |
| |
| |
| This document is intended for the developer who wish to download and test the axiscpp server.<br> |
| |
| Checkout axiscpp from cvs repository.<br><br> |
| To build axisengine library<br> |
| ==================<br><br> |
| When you download the source you have only Makfile.am's and configure.ac and |
| autogen.sh script for building. |
| <br><br> |
| make sure you create and set the environment variable AXISCPP_HOME |
| to reflect the path to the directory where you downloaded the axiscpp. |
| for example I have it as following |
| <br><br> |
| AXISCPP_HOME="/home/damitha/projects/axiscpp/c" <br> <br>where c is the rood directory |
| for axiscpp source. There you find autogen.sh, configure.ac etc.<br> |
| |
| <br> |
| to build go to $AXISCPP_HOME dirctory.<br><br> |
| sh autogen.sh |
| <br><br> |
| To avoid cluttering of the source with object files use the build directory |
| to generate your object files. |
| <br><br> |
| Now from c/build directory run<br><br> |
| sh runconfigure |
| <br><br> |
| This will create all the Makefiles in a tree starting from build directory.<br><br> |
| make<br> |
| then<br> |
| make install<br> |
| <br> |
| this will install libaxiscpp_mod.so in c/release directory.<br><br> |
| copy this to <apache home>/libexec directory and restart apache |
| to load the axisengine in apache. |
| <br><br> |
| Note: in $AXISCPP_HOME/include you have folder called xercesc apache1_3 |
| apache2_0. Copy the corresponding include files into them. |
| <br><br><br> |
| To build samples<br> |
| ===========<br> |
| Go to the samples folder<br><br> |
| $(AXISCPP_HOME)/src/server/samples<br><br> |
| and select the sample you want. As an example we try on |
| simplewebservice<br> |
| type the following commands in that order<br><br> |
| sh autogen.sh<br> |
| sh runconfig<br> |
| make<br> |
| make install<br> |
| <br> |
| this will install the sample library in /usr/local/apache/Axis/webservices |
| <br><br> |
| note: the server.wsdd file for this sample has to be put in<br><br> |
| /usr/local/apache/Axis/conf folder.<br><br> |
| This path is hardcoded in Axis.cpp file as following |
| <br><br> |
| #define WSDDFILEPATH "/usr/local/apache/Axis/conf/server.wsdd"<br> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </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="m@0,l0@0,,21600@1,21600,21600@2,21600,xem0@0nfl@1@0,21600,em@1@0nfl@1,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,10800l@0,21600@0@3@2@3@2,21600,21600,10800@2,0@2@1@0@1@0,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> |
| |
| <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> |