| Apache Sandesha2/C |
| |
| What is it? |
| ----------- |
| Sandesha2/C is a C implementation of WS-ReliableMessaging specification |
| published by IBM, Microsoft, BEA and TIBCO. Sandesha2/C is built on top |
| of Axis2/C. Therefore by using Sandesha2/C you can add reliable messaging |
| capability to the web services hosted using Axis2/C. Sandesha2/C can also |
| be used with Axis2/C client to interact with already hosted web services |
| in a reliable manner. Read Sandesha2 Architecture guide to see how |
| Sandesha2 work internally. |
| |
| The Latest Version |
| ------------------ |
| 0.91. |
| |
| Documentation |
| ------------- |
| The documentation not available yet. For the architecture guide please |
| visit Sandesha2 Architecture guide at |
| http://ws.apache.org/sandesha/sandesha2/architectureGuide.html |
| |
| Acknowledgments |
| ---------------- |
| Apache Sandesha2/C relies heavily on the use of autoconf and libtool to |
| provide a build environment. |
| |
| Installation |
| ------------ |
| Please see the INSTALL file. |
| |
| Licensing |
| --------- |
| Please see the LICENSE file. |
| |
| How To Run. |
| ---------- |
| Install sandesha2 module into <axis2 deploy folder>/modules folder. Add the RMPhase |
| information into axis2.xml as following. Search for 'RMPhase' in the |
| following xml block to identify the RM specific entries. |
| |
| <!-- ================================================= --> |
| <!-- Phases --> |
| <!-- ================================================= --> |
| <phaseOrder type="inflow"> |
| <!-- System pre defined phases --> |
| <phase name="TransportIn"/> |
| <phase name="PreDispatch"/> |
| <phase name="Dispatch"> |
| <handler name="AddressingBasedDispatcher" |
| class="axis2_engine"> |
| <order phase="Dispatch"/> |
| </handler> |
| <handler name="RequestURIBasedDispatcher" |
| class="axis2_engine"> |
| <order phase="Dispatch"/> |
| </handler> |
| <handler name="SOAPActionBasedDispatcher" |
| class="axis2_engine"> |
| <order phase="Dispatch"/> |
| </handler> |
| <handler name="SOAPMessageBodyBasedDispatcher" |
| class="axis2_engine"> |
| <order phase="Dispatch"/> |
| </handler> |
| </phase> |
| <phase name="PostDispatch"> |
| <handler name="DispatchPostConditionsEvaluator" |
| class="axis2_engine"> |
| <order phase="PostDispatch"/> |
| </handler> |
| <handler name="InstanceDispatcher" |
| class="axis2_engine"> |
| <order phase="PostDispatch"/> |
| </handler> |
| <handler name="SOAPProcessingModelChecker" |
| class="axis2_engine"> |
| <order phase="PostDispatch"/> |
| </handler> |
| </phase> |
| <!-- System pre defined phases --> |
| <!-- After Postdispatch phase module author or or service author can add any phase he want --> |
| <!--phase name="userphase1"/--> |
| <phase name="RMPhase"/> |
| </phaseOrder> |
| <phaseOrder type="outflow"> |
| <!-- user can add his own phases to this area --> |
| <phase name="RMPhase"/> |
| <!--phase name="userphase1"/--> |
| <!--system predefined phase--> |
| <!--these phase will run irrespective of the service--> |
| <!--phase name="PolicyDetermination"/--> |
| <!--phase name="MessageOut"/--> |
| </phaseOrder> |
| <phaseOrder type="INfaultflow"> |
| <!-- user can add his own phases to this area --> |
| <!--phase name="userphase1"/--> |
| <phase name="RMPhase"/> |
| </phaseOrder> |
| <phaseOrder type="Outfaultflow"> |
| <!-- user can add his own phases to this area --> |
| <phase name="RMPhase"/> |
| <phase name="MessageOut"/> |
| <!--phase name="userphase1"/--> |
| <!--phase name="PolicyDetermination"/--> |
| </phaseOrder> |
| |
| In the services xml file for the service which require RM enabled |
| add the entry |
| <module ref="sandesha2"/> |
| If you need all services in the engine RM enabled add the above entry into |
| axis2.xml. |
| |
| You can use samples in the samples folder for testing. |
| |
| Known Issues |
| |
| Please keep in mind the following when using Sandesha2/C with Axis2/C. |
| |
| 1. Comment the line no:295 in src/core/transport/http/receiver/http_svr_thread.c |
| axutil_free_thread_env(thread_env); |
| |
| 2. Comment the line no:299 in src/core/transport/http/receiver/http_svr_thread.c |
| axutil_thread_pool_exit_thread(env->thread_pool, thd); |
| |
| 3. property = axutil_property_create(env); |
| axutil_property_set_scope(property, env, AXIS2_SCOPE_REQUEST); |
| axutil_property_set_free_func(property, env, axis2_http_client_free_void_arg); |
| axutil_property_set_value(property, env, sender->client); |
| axis2_msg_ctx_set_property(msg_ctx, env, AXIS2_HTTP_CLIENT, property); |
| |
| 4. If for some reason RM sequences seems not executing properly the reason could |
| be the database is corrupted for some reason. Try rerunning the the database |
| scripts to clean the database. |
| |
| Some of the above changes may lead to memory leaks in Axis2/C. |
| |