You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2004/08/02 07:53:55 UTC

cvs commit: ws-axis/c/src/transport/libwww readme.txt

samisa      2004/08/01 22:53:55

  Modified:    c/src/transport/libwww readme.txt
  Log:
  Updated the readme to include thread safety info
  
  Revision  Changes    Path
  1.4       +66 -16    ws-axis/c/src/transport/libwww/readme.txt
  
  Index: readme.txt
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/transport/libwww/readme.txt,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- readme.txt	29 Jul 2004 12:41:07 -0000	1.3
  +++ readme.txt	2 Aug 2004 05:53:54 -0000	1.4
  @@ -1,34 +1,84 @@
  -The implementation of SOAPTransport interface using LibWWW.
  +The implementation of SOAPTransport interface using LibWWW.
  +
  +Getting LibWWW transport working on Linux
  +1. Install LibWWW,
  +2. Build Axis C++ with libWWW support and
  +3. Set
  + Transport_http:[AXIS_CPP_DEPLOY_FOLDER]/lib/libaxis_LibWWWTransport.so
  + in axiscpp.conf.
  +
  +1. Installing LibWWW
  +You can find LibWWW build/installation instructions in LibWWW documentation.
  +The following are few hints specific to Axis C++ libWWW transport.
  +i. Use of 100-continue
  +I observed that the transport is much faster when it is used without
  +100-continue. However, to disable 100-continue, LibWWW need to be built
  +with -–with-extension option  (./configure --with-extension)
  +By default LibWWW comes with 100-continue enabled.
  +
  +ii. Thread safety
  +By default, LibWWW build is not thread safe.
  +If you wish to use LibWWW transport in a threaded environment
  +you have to enable reentrant system calls in the LibWWW build.
  +(./configure --enable-reentrant)
  +
  +iii. Use of Expat XML parser
  +LibWWW library uses the Expat parser by default for XML related stuff.
  +However, these XML related features are not required for Axis C++ transport.
  +One could configure the LibWWW build with ./configure --with-expat=no.
  +The set of libs required for Axis C++ LibWWW transport are:
  +-lwwwinit -lwwwapp -lwwwhtml -lwwwtelnet -lwwwnews -lwwwhttp 
  +-lwwwmime -lwwwgopher -lwwwftp -lwwwfile -lwwwdir -lwwwcache 
  +-lwwwstream -lwwwmux -lwwwtrans -lwwwcore -lwwwutils
  +(One could argue that some libs like -lwwwgopher are not required at all.
  +However, -lwwwinit have references those, hence cannot be dropped while
  +linking. One would need to change LibWWW code to remove those unwanted
  +dependencies, which I did not want to do here.)
  +I have only used only the must be used libs in src/transport/libwww/Makefile.am.
  +
  +In short, when building LibWWW on your system use:
  +./configure --with-extension --enable-reentrant --with-expat=no \
  +--prefix=[where you want LibWWW installed]
  +
  +For more information on LibWWW please see http://www.w3.org/Library/User/
  +
  +2. Building Axis C++ with LibWWW support
  +You can use --enable-libwww option when configuring Axis C++.
  +By default LibWWW is enabled. Use --enable-libwww=yes to enable 
  +--enable-libwww=no to disable.
   
   The Axis C++ server side fails to work with 100-continue. 
  -Axis Java is capable of managing 100-continue. 
  +Axis Java server side is capable of managing 100-continue. 
   This is the default mode used in LibWWW. 
  -I used a macro in Makefile.am to enable/disable 100-continue. 
  -(use -DHT_EXT_CONTINUE to enable or -UHT_EXT_CONTINUE to disable in 
  -AM_CPPFLAGS setting)
  +I used a macro in src/transport/libwww/Makefile.am to enable/disable 
  +100-continue.  (use -DHT_EXT_CONTINUE to enable or -UHT_EXT_CONTINUE 
  +to disable in AM_CPPFLAGS setting)
   
  -I observed that the transport is much faster when it is used without 
  +As I mentioned earlier, the transport is much faster when it is used without 
   100-continue. However, to disable 100-continue, LibWWW need to be built 
  -with -–with-extension option  (./configure --with-extension)
  +with extension support. (please see section 1 above)
   
   You do not need to bother about location of LibWWW headers and libraries, 
  -provided that you have done the LibWWW installation properly. 
  +provided that you have done the LibWWW installation properly. (in other words
  +libwww-config program need to be on your PATH)
   I have used libwww-config in the Makefile.am to pick LibWWW specific settings.
   
  -Once you build the library, you could use it by speci the location of the 
  +3. Using the LibWWW transport
  +Once you build the library, you could use it by specifying the location of the 
   lib in $AXIS_HOME/axiscpp.conf file. 
   e.g.
   Transport_http:/usr/local/Axis/libs/libaxis_LibWWWTransport.so
   
  -For more information on LibWWW please see http://www.w3.org/Library/User/
   
  -Issues:
  -The thread test in tests/client/threadSafe fails with this implementation. 
  -Bit of surfing lead me to http://www.w3.org/Library/User/Architecture/Events.html, 
  -which says “LibWWW is not posix thread safe but it uses a 'pseudo-thread' 
  +Notes:
  +Thread Safety:
  +http://www.w3.org/Library/User/Architecture/Events.html says 
  +“LibWWW is not posix thread safe but it uses a 'pseudo-thread' 
   model based on non-blocking sockets and interleaved IO.” 
  -Bit of research is needed to figure out how to make this implementation 
  -thread safe. It remains a TODO as of now.
  +I did a bit of research and figured out how to make this implementation 
  +thread safe. I was able to successfully use the 'pseudo-thread'
  +model of LibWWW and achieve thread safety. You could test the thread 
  +safety with the test in tests/client/threadSafe/. 
   
   - Samisa...