axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject cvs commit: ws-axis/c/docs LibWWW-transport-HOWTO.txt
Date Mon, 02 Aug 2004 06:15:08 GMT
samisa      2004/08/01 23:15:07

  Added:       c/docs   LibWWW-transport-HOWTO.txt
  HOWTO on LibWWW trasport
  Revision  Changes    Path
  1.1                  ws-axis/c/docs/LibWWW-transport-HOWTO.txt
  Index: LibWWW-transport-HOWTO.txt
   *   Copyright 2003-2004 The Apache Software Foundation.
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   *   @author Samisa Abeysinghe (
   *   @author Lahiru
   *   Last Updated: 02 August 2004 (Samisa)
  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
   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/
  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
  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 server side is capable of managing 100-continue. 
  This is the default mode used in LibWWW. 
  I used a macro in src/transport/libwww/ to enable/disable 
  100-continue.  (use -DHT_EXT_CONTINUE to enable or -UHT_EXT_CONTINUE 
  to disable in AM_CPPFLAGS setting)
  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 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. (in other words
  libwww-config program need to be on your PATH)
  I have used libwww-config in the to pick LibWWW specific settings.
  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. 
  Thread Safety: says 
  “LibWWW is not posix thread safe but it uses a 'pseudo-thread' 
  model based on non-blocking sockets and interleaved IO.” 
  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...
  For Windows 
  1.Install libwww.
  2.Copy the source header files in libwww which are in library/src to the c/src/transport/libwww.
  3.copy the external header files in libwww which are in library/external to c/include/libwww.

  4.copy the library files which are created while building the libwww to    c/lib/libwww
  5.Copy the gnu_regx.dll to path from libwww.
  6.Build the AxisTransportLibwww VC project.
  7.Copy the generated AxisTransport.dll to path
  8.then run the samples.

View raw message