You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Jean-Sebastien Delfino <js...@apache.org> on 2006/12/09 20:02:00 UTC

Re: [C++] REST extension/samples and libcurl on Windows

Jean-Sebastien Delfino wrote:
> Pete Robbins wrote:
>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
>>>
>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>>> > > I checked in the initial structure of a REST extension under
>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
>>> > >
>>> > > The idea is to add support for <interface.rest> and 
>>> <binding.rest> on
>>> > > services and references and implement a RESTFul pattern (using the
>>> HTTP
>>> > > Post/Get/Put/Delete verbs to implement 
>>> Create/Retrieve/Update/Delete
>>> > > operations on resources) as well as a simple service invocation
>>> > > mechanism using HTTP Get and Post.
>>> > >
>>> > > I have updated the Linux build files, added a configure
>>> > > --enable-restbinding option and the necessary Makefile.am files.
>>> > >
>>> > > The reference binding requires Libcurl (I tried 7.15.5) and 
>>> CURL_LIB
>>> and
>>> > > CURL_INCLUDE environment variables pointing to its lib and include
>>> > > directories.
>>> > > The service binding requires Apache httpd (2.2.x) and HTTPD_LIB and
>>> > > HTTPD_INCLUDE environment variables.
>>> > >
>>> > > The SCDL model classes should be roughly Ok but the ServiceProxy 
>>> and
>>> > > ServiceWrapper classes are under construction and only useful to
>>> verify
>>> > > that the extension can be built.
>>> > >
>>> >
>>> > I just committed the build files & a few minor changes to get the
>>> > extension building on Windows - you will need to set the environment
>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the appropriate
>>> > places (guess!)
>>> >
>>> > Haven't yet got the sample going - that's the next job.
>>> >
>>> > Cheers
>>> > Andy
>>> >
>>>
>>> I spent most of today trying to get the RestCalculator sample up and
>>> running on Windows. I hit a few issues:
>>>
>>> Libcurl - this was the major one. The extension built fine but died on
>>> the restclient side of the sample when it tried to initialise libcurl
>>> (via the curl_global_init() call). I tried all the different kinds of
>>> libcurl for Windows that are available at [1] but I got the same
>>> result with all of them. Eventually I built my own from source, and
>>> that died too until I built it via VS Express rather than the
>>> command-line build! At this point it all started working and I began
>>> to see messages appearing on the server.
>>>
>>> To have to download the src and build it would be a huge hassle for
>>> users that we *really* want to avoid. It may just be that I was doing
>>> something wrong with my libcurl stuff but I couldn't see what  - I was
>>> just getting the windows "it's died" message that you normally get
>>> when libraries don't like each other. If anyone else could try it out
>>> and see what happens for them with the windows libcurl binary distros
>>> it would be appreciated!
>>
>>
>>
>> I wonder if our building with vc8 is causing the incomaptibility. We 
>> have
>> had issue before with dll's being built against different versions of 
>> the
>> msvc runtime dlls.
>>
>>
>>
>> REST service - after all the shenanigans with libcurl, I hit an issue
>>> with tuscany_sca_mod_rest.dll that I didn't have time to get past. In
>>> ModREST.cpp the request->path_info is coming out as
>>> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div, 
>>>
>>> but it looks like the code expects it to be something like
>>> /sample.calculator.CalculatorComponent/CalculatorService/div - this
>>> meant that the runtime was looking for a component named htdocs and a
>>> service named rest! I assume you get the path without the /htdocs/rest
>>> part on Linux, although it's a bit odd that the data is different on
>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version you're
>>> using?
>>>
>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
>>> conference in Belgium next week, so I'll be preparing for/going to
>>> that over the next few days, and won't have much time to progress this
>>> or the HttpdBigBank sample. I've put the windows deploy/run scripts
>>> for RestCalculator on svn, so if anyone does fancy trying it out I'll
>>> be interested in your results!
>>>
>>> Cheers
>>>
>>> Andy
>>>
>>> [1] http://curl.haxx.se/download.html
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>>>
>>>
>
> I finished setting up a complete Windows environment with Curl and 
> Httpd yesterday evening. I noticed that there are many Curl 
> distributions available, so I picked an "MSVC development 
> distribution" and will give it a try today.
>

Andy,

The RestCalculator sample now works on Windows, with the following 
configuration:
- an MSVC based Libcurl distribution (at 
http://curl.haxx.se/download.html, the one before the last one at the 
bottom of the page, more precisely 
libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris Drake).
- an update to the VSExpress project to link with the import lib from 
that Libcurl distro
- an update to the HTTPD conf to specify a DocumentRoot (and load the 
Mime and Dir HTTPD modules into the server), I added the gen of this 
conf to the startserver.bat script.

So if you download the Libcurl distribution above and update from the 
SVN head, it should work now.

I started to update the scripts and conf in the RestCustomer sample as 
well but it doesn't work yet, I'll continue to work on it later this 
evening.

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: [C++] REST extension/samples and libcurl on Windows

Posted by Andrew Borley <aj...@gmail.com>.
On 12/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> Jean-Sebastien Delfino wrote:
> > Jean-Sebastien Delfino wrote:
> >> Pete Robbins wrote:
> >>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
> >>>>
> >>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
> >>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> >>>> > > I checked in the initial structure of a REST extension under
> >>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
> >>>> > >
> >>>> > > The idea is to add support for <interface.rest> and
> >>>> <binding.rest> on
> >>>> > > services and references and implement a RESTFul pattern (using the
> >>>> HTTP
> >>>> > > Post/Get/Put/Delete verbs to implement
> >>>> Create/Retrieve/Update/Delete
> >>>> > > operations on resources) as well as a simple service invocation
> >>>> > > mechanism using HTTP Get and Post.
> >>>> > >
> >>>> > > I have updated the Linux build files, added a configure
> >>>> > > --enable-restbinding option and the necessary Makefile.am files.
> >>>> > >
> >>>> > > The reference binding requires Libcurl (I tried 7.15.5) and
> >>>> CURL_LIB
> >>>> and
> >>>> > > CURL_INCLUDE environment variables pointing to its lib and include
> >>>> > > directories.
> >>>> > > The service binding requires Apache httpd (2.2.x) and HTTPD_LIB
> >>>> and
> >>>> > > HTTPD_INCLUDE environment variables.
> >>>> > >
> >>>> > > The SCDL model classes should be roughly Ok but the
> >>>> ServiceProxy and
> >>>> > > ServiceWrapper classes are under construction and only useful to
> >>>> verify
> >>>> > > that the extension can be built.
> >>>> > >
> >>>> >
> >>>> > I just committed the build files & a few minor changes to get the
> >>>> > extension building on Windows - you will need to set the environment
> >>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the appropriate
> >>>> > places (guess!)
> >>>> >
> >>>> > Haven't yet got the sample going - that's the next job.
> >>>> >
> >>>> > Cheers
> >>>> > Andy
> >>>> >
> >>>>
> >>>> I spent most of today trying to get the RestCalculator sample up and
> >>>> running on Windows. I hit a few issues:
> >>>>
> >>>> Libcurl - this was the major one. The extension built fine but died on
> >>>> the restclient side of the sample when it tried to initialise libcurl
> >>>> (via the curl_global_init() call). I tried all the different kinds of
> >>>> libcurl for Windows that are available at [1] but I got the same
> >>>> result with all of them. Eventually I built my own from source, and
> >>>> that died too until I built it via VS Express rather than the
> >>>> command-line build! At this point it all started working and I began
> >>>> to see messages appearing on the server.
> >>>>
> >>>> To have to download the src and build it would be a huge hassle for
> >>>> users that we *really* want to avoid. It may just be that I was doing
> >>>> something wrong with my libcurl stuff but I couldn't see what  - I was
> >>>> just getting the windows "it's died" message that you normally get
> >>>> when libraries don't like each other. If anyone else could try it out
> >>>> and see what happens for them with the windows libcurl binary distros
> >>>> it would be appreciated!
> >>>
> >>>
> >>>
> >>> I wonder if our building with vc8 is causing the incomaptibility. We
> >>> have
> >>> had issue before with dll's being built against different versions
> >>> of the
> >>> msvc runtime dlls.
> >>>
> >>>
> >>>
> >>> REST service - after all the shenanigans with libcurl, I hit an issue
> >>>> with tuscany_sca_mod_rest.dll that I didn't have time to get past. In
> >>>> ModREST.cpp the request->path_info is coming out as
> >>>> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div,
> >>>>
> >>>> but it looks like the code expects it to be something like
> >>>> /sample.calculator.CalculatorComponent/CalculatorService/div - this
> >>>> meant that the runtime was looking for a component named htdocs and a
> >>>> service named rest! I assume you get the path without the /htdocs/rest
> >>>> part on Linux, although it's a bit odd that the data is different on
> >>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version you're
> >>>> using?
> >>>>
> >>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
> >>>> conference in Belgium next week, so I'll be preparing for/going to
> >>>> that over the next few days, and won't have much time to progress this
> >>>> or the HttpdBigBank sample. I've put the windows deploy/run scripts
> >>>> for RestCalculator on svn, so if anyone does fancy trying it out I'll
> >>>> be interested in your results!
> >>>>
> >>>> Cheers
> >>>>
> >>>> Andy
> >>>>
> >>>> [1] http://curl.haxx.se/download.html
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> >>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
> >>>>
> >>>>
> >>
> >> I finished setting up a complete Windows environment with Curl and
> >> Httpd yesterday evening. I noticed that there are many Curl
> >> distributions available, so I picked an "MSVC development
> >> distribution" and will give it a try today.
> >>
> >
> > Andy,
> >
> > The RestCalculator sample now works on Windows, with the following
> > configuration:
> > - an MSVC based Libcurl distribution (at
> > http://curl.haxx.se/download.html, the one before the last one at the
> > bottom of the page, more precisely
> > libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris Drake).
> > - an update to the VSExpress project to link with the import lib from
> > that Libcurl distro
> > - an update to the HTTPD conf to specify a DocumentRoot (and load the
> > Mime and Dir HTTPD modules into the server), I added the gen of this
> > conf to the startserver.bat script.
> >
> > So if you download the Libcurl distribution above and update from the
> > SVN head, it should work now.
> >
> > I started to update the scripts and conf in the RestCustomer sample as
> > well but it doesn't work yet, I'll continue to work on it later this
> > evening.
> >
>
> After fixing the deploy.bat script in the REST Customer sample (it was
> missing a copy of the required Customer.xsd to the deploy directory),
> this sample now works as well.
>

Glad to hear you got it working! I tried an MSVC libcurl build but I
must have chosen the wrong one! We'll need to make sure we specify it
clearly (or include it in our release distros)

Cheers for fixing this up Sebastien!
Andy

---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: [C++] REST extension/samples and libcurl on Windows

Posted by Pete Robbins <ro...@googlemail.com>.
On 14/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>
> Pete Robbins wrote:
> > On 14/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> >>
> >> Pete Robbins wrote:
> >> > On 12/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> >> >>
> >> >> Jean-Sebastien Delfino wrote:
> >> >> > Jean-Sebastien Delfino wrote:
> >> >> >> Pete Robbins wrote:
> >> >> >>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
> >> >> >>>>
> >> >> >>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
> >> >> >>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org>
> >> wrote:
> >> >> >>>> > > I checked in the initial structure of a REST extension
> under
> >> >> >>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
> >> >> >>>> > >
> >> >> >>>> > > The idea is to add support for <interface.rest> and
> >> >> >>>> <binding.rest> on
> >> >> >>>> > > services and references and implement a RESTFul pattern
> >> (using
> >> >> the
> >> >> >>>> HTTP
> >> >> >>>> > > Post/Get/Put/Delete verbs to implement
> >> >> >>>> Create/Retrieve/Update/Delete
> >> >> >>>> > > operations on resources) as well as a simple service
> >> invocation
> >> >> >>>> > > mechanism using HTTP Get and Post.
> >> >> >>>> > >
> >> >> >>>> > > I have updated the Linux build files, added a configure
> >> >> >>>> > > --enable-restbinding option and the necessary Makefile.am
> >> >> files.
> >> >> >>>> > >
> >> >> >>>> > > The reference binding requires Libcurl (I tried 7.15.5) and
> >> >> >>>> CURL_LIB
> >> >> >>>> and
> >> >> >>>> > > CURL_INCLUDE environment variables pointing to its lib and
> >> >> include
> >> >> >>>> > > directories.
> >> >> >>>> > > The service binding requires Apache httpd (2.2.x) and
> >> HTTPD_LIB
> >> >> >>>> and
> >> >> >>>> > > HTTPD_INCLUDE environment variables.
> >> >> >>>> > >
> >> >> >>>> > > The SCDL model classes should be roughly Ok but the
> >> >> >>>> ServiceProxy and
> >> >> >>>> > > ServiceWrapper classes are under construction and only
> >> >> useful to
> >> >> >>>> verify
> >> >> >>>> > > that the extension can be built.
> >> >> >>>> > >
> >> >> >>>> >
> >> >> >>>> > I just committed the build files & a few minor changes to get
> >> the
> >> >> >>>> > extension building on Windows - you will need to set the
> >> >> environment
> >> >> >>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the
> >> appropriate
> >> >> >>>> > places (guess!)
> >> >> >>>> >
> >> >> >>>> > Haven't yet got the sample going - that's the next job.
> >> >> >>>> >
> >> >> >>>> > Cheers
> >> >> >>>> > Andy
> >> >> >>>> >
> >> >> >>>>
> >> >> >>>> I spent most of today trying to get the RestCalculator sample
> up
> >> >> and
> >> >> >>>> running on Windows. I hit a few issues:
> >> >> >>>>
> >> >> >>>> Libcurl - this was the major one. The extension built fine but
> >> died
> >> >> on
> >> >> >>>> the restclient side of the sample when it tried to initialise
> >> >> libcurl
> >> >> >>>> (via the curl_global_init() call). I tried all the different
> >> >> kinds of
> >> >> >>>> libcurl for Windows that are available at [1] but I got the
> same
> >> >> >>>> result with all of them. Eventually I built my own from source,
> >> and
> >> >> >>>> that died too until I built it via VS Express rather than the
> >> >> >>>> command-line build! At this point it all started working and I
> >> >> began
> >> >> >>>> to see messages appearing on the server.
> >> >> >>>>
> >> >> >>>> To have to download the src and build it would be a huge hassle
> >> for
> >> >> >>>> users that we *really* want to avoid. It may just be that I was
> >> >> doing
> >> >> >>>> something wrong with my libcurl stuff but I couldn't see
> >> what  - I
> >> >> was
> >> >> >>>> just getting the windows "it's died" message that you
> >> normally get
> >> >> >>>> when libraries don't like each other. If anyone else could try
> >> >> it out
> >> >> >>>> and see what happens for them with the windows libcurl binary
> >> >> distros
> >> >> >>>> it would be appreciated!
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>> I wonder if our building with vc8 is causing the
> incomaptibility.
> >> We
> >> >> >>> have
> >> >> >>> had issue before with dll's being built against different
> >> versions
> >> >> >>> of the
> >> >> >>> msvc runtime dlls.
> >> >> >>>
> >> >> >>>
> >> >> >>>
> >> >> >>> REST service - after all the shenanigans with libcurl, I hit an
> >> >> issue
> >> >> >>>> with tuscany_sca_mod_rest.dll that I didn't have time to get
> >> >> past. In
> >> >> >>>> ModREST.cpp the request->path_info is coming out as
> >> >> >>>>
> >> >>
> >>
> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div,
> >>
> >> >>
> >> >> >>>>
> >> >> >>>> but it looks like the code expects it to be something like
> >> >> >>>> /sample.calculator.CalculatorComponent/CalculatorService/div -
> >> this
> >> >> >>>> meant that the runtime was looking for a component named htdocs
> >> >> and a
> >> >> >>>> service named rest! I assume you get the path without the
> >> >> /htdocs/rest
> >> >> >>>> part on Linux, although it's a bit odd that the data is
> >> >> different on
> >> >> >>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version
> >> >> you're
> >> >> >>>> using?
> >> >> >>>>
> >> >> >>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
> >> >> >>>> conference in Belgium next week, so I'll be preparing
> >> for/going to
> >> >> >>>> that over the next few days, and won't have much time to
> >> progress
> >> >> this
> >> >> >>>> or the HttpdBigBank sample. I've put the windows deploy/run
> >> scripts
> >> >> >>>> for RestCalculator on svn, so if anyone does fancy trying it
> out
> >> >> I'll
> >> >> >>>> be interested in your results!
> >> >> >>>>
> >> >> >>>> Cheers
> >> >> >>>>
> >> >> >>>> Andy
> >> >> >>>>
> >> >> >>>> [1] http://curl.haxx.se/download.html
> >> >> >>>>
> >> >> >>>>
> >> >>
> ---------------------------------------------------------------------
> >> >> >>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> >> >> >>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
> >> >> >>>>
> >> >> >>>>
> >> >> >>
> >> >> >> I finished setting up a complete Windows environment with Curl
> and
> >> >> >> Httpd yesterday evening. I noticed that there are many Curl
> >> >> >> distributions available, so I picked an "MSVC development
> >> >> >> distribution" and will give it a try today.
> >> >> >>
> >> >> >
> >> >> > Andy,
> >> >> >
> >> >> > The RestCalculator sample now works on Windows, with the following
> >> >> > configuration:
> >> >> > - an MSVC based Libcurl distribution (at
> >> >> > http://curl.haxx.se/download.html, the one before the last one
> >> at the
> >> >> > bottom of the page, more precisely
> >> >> > libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris
> >> Drake).
> >> >> > - an update to the VSExpress project to link with the import lib
> >> from
> >> >> > that Libcurl distro
> >> >> > - an update to the HTTPD conf to specify a DocumentRoot (and
> >> load the
> >> >> > Mime and Dir HTTPD modules into the server), I added the gen of
> >> this
> >> >> > conf to the startserver.bat script.
> >> >> >
> >> >> > So if you download the Libcurl distribution above and update
> >> from the
> >> >> > SVN head, it should work now.
> >> >> >
> >> >> > I started to update the scripts and conf in the RestCustomer
> sample
> >> as
> >> >> > well but it doesn't work yet, I'll continue to work on it later
> >> this
> >> >> > evening.
> >> >> >
> >> >>
> >> >> After fixing the deploy.bat script in the REST Customer sample (it
> >> was
> >> >> missing a copy of the required Customer.xsd to the deploy
> directory),
> >> >> this sample now works as well.
> >> >
> >> >
> >> > I hit a couple of issues running the REST samples. I think the
> >> > startserver.bat and runrestclient.bat need to add libcurl to the
> PATH.
> >> > The
> >> > client script adds %LIBCURL_HOME%\bin to the path but this needs to
> be
> >> > %LIBCURL_HOME% for the version of libcurl you mention above.
> >> startserver
> >> > does not add libcurl to the path.
> >> >
> >> > Should we change these scripts to check for LIBCURL_HOME being set
> and
> >> > then
> >> > ad both %LIBCURL_HOME%\bin and %LIBCURL_HOME% to the PATH?
> >> >
> >> > Cheers,
> >> >
> >>
> >> I think this is a very good question!
> >>
> >> I've been going back and forth on this, between:
> >> a) let the user configure the PATH (and LD_LIBRARY_PATH on Windows)
> once
> >> for all to include our dependencies
> >> b) leverage the XYZ_HOME that people need to configure to build and
> >> configure the PATH in the sample scripts
> >>
> >> Here are few things to consider:
> >> - I would expect users to do (a) anyway when they install the various
> >> dependencies (and this is done for you by some of the Ruby and Python
> >> installers for example).
> >> - People who build from source will have the XYZ_HOME variables defined
> >> so (b) will work well for them, but people who use the binary distros
> >> will probably not have these variables, and asking them to define these
> >> variables will complicate their setup.
> >> - Setting the path in each script is not something I would recommend to
> >> a user if he has many Tuscany programs. Ideally he should be able to
> run
> >> things without writing a script to launch each program.
> >> - On the other hand, configuring the path in our sample scripts shows
> >> people how to do it, and allows them to replicate this by simple
> >> copy/paste.
> >>
> >> After writing this email, I'm now starting to think that we should not
> >> tweak the path to our dependencies in our scripts and instead provide
> >> the configuration snippets in a README, and ask people to configure
> >> their environment once for all when they install Tuscany.
> >>
> >> Like I said, I've been going back and forth on this, so I could also be
> >> convinced otherwise... What do you think?
> >>
> >> --
> >> Jean-Sebastien
> >
> >
> > I think I've been through exactly the same thoughts! Maybe we should
> > document like "ensure the licurl libraries are on the PATH" and also
> > ship a
> > tuscanyenv.bat, for users to edit, which contains the set of variables
> we
> > expect e.g.
> >
> > #set TUSCANY_SCACPP=...
> > #set LIBCURL_HOME=<path to libcurl>
> > #set PATH=%TUSCANY_SCACPP%\bin;%PATH%
> >
> > Maybe we could make our runxxx.bat scripts call this tuscanyenv..bat??
>
> Yes, it makes a lot of sense!
>
> >
> > What is a pain though is trying to debug WHY the
> > tuscany_sca_rest_reference.dll will not load!! It took a while to find
> > that
> > the libcurl.dll was in LIBURL_HOME and not LIBCURL_HOME\bin
> >
> >
>
> I think we need better error reporting for this. I can take a look at
> how to provide better Library load error info in the exceptions and
> logs, using errno on Linux and GetLastErrorInfo() on Win32.
>
> --
> Jean-Sebastien


I'm not sure you get more information back but good luck ;-)

At least on linux you can use ldd which shows what it is trying to load.





-- 
Pete

Re: [C++] REST extension/samples and libcurl on Windows

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Pete Robbins wrote:
> On 14/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>>
>> Pete Robbins wrote:
>> > On 12/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>> >>
>> >> Jean-Sebastien Delfino wrote:
>> >> > Jean-Sebastien Delfino wrote:
>> >> >> Pete Robbins wrote:
>> >> >>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
>> >> >>>>
>> >> >>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
>> >> >>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org>
>> wrote:
>> >> >>>> > > I checked in the initial structure of a REST extension under
>> >> >>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
>> >> >>>> > >
>> >> >>>> > > The idea is to add support for <interface.rest> and
>> >> >>>> <binding.rest> on
>> >> >>>> > > services and references and implement a RESTFul pattern 
>> (using
>> >> the
>> >> >>>> HTTP
>> >> >>>> > > Post/Get/Put/Delete verbs to implement
>> >> >>>> Create/Retrieve/Update/Delete
>> >> >>>> > > operations on resources) as well as a simple service
>> invocation
>> >> >>>> > > mechanism using HTTP Get and Post.
>> >> >>>> > >
>> >> >>>> > > I have updated the Linux build files, added a configure
>> >> >>>> > > --enable-restbinding option and the necessary Makefile.am
>> >> files.
>> >> >>>> > >
>> >> >>>> > > The reference binding requires Libcurl (I tried 7.15.5) and
>> >> >>>> CURL_LIB
>> >> >>>> and
>> >> >>>> > > CURL_INCLUDE environment variables pointing to its lib and
>> >> include
>> >> >>>> > > directories.
>> >> >>>> > > The service binding requires Apache httpd (2.2.x) and
>> HTTPD_LIB
>> >> >>>> and
>> >> >>>> > > HTTPD_INCLUDE environment variables.
>> >> >>>> > >
>> >> >>>> > > The SCDL model classes should be roughly Ok but the
>> >> >>>> ServiceProxy and
>> >> >>>> > > ServiceWrapper classes are under construction and only
>> >> useful to
>> >> >>>> verify
>> >> >>>> > > that the extension can be built.
>> >> >>>> > >
>> >> >>>> >
>> >> >>>> > I just committed the build files & a few minor changes to get
>> the
>> >> >>>> > extension building on Windows - you will need to set the
>> >> environment
>> >> >>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the
>> appropriate
>> >> >>>> > places (guess!)
>> >> >>>> >
>> >> >>>> > Haven't yet got the sample going - that's the next job.
>> >> >>>> >
>> >> >>>> > Cheers
>> >> >>>> > Andy
>> >> >>>> >
>> >> >>>>
>> >> >>>> I spent most of today trying to get the RestCalculator sample up
>> >> and
>> >> >>>> running on Windows. I hit a few issues:
>> >> >>>>
>> >> >>>> Libcurl - this was the major one. The extension built fine but
>> died
>> >> on
>> >> >>>> the restclient side of the sample when it tried to initialise
>> >> libcurl
>> >> >>>> (via the curl_global_init() call). I tried all the different
>> >> kinds of
>> >> >>>> libcurl for Windows that are available at [1] but I got the same
>> >> >>>> result with all of them. Eventually I built my own from source,
>> and
>> >> >>>> that died too until I built it via VS Express rather than the
>> >> >>>> command-line build! At this point it all started working and I
>> >> began
>> >> >>>> to see messages appearing on the server.
>> >> >>>>
>> >> >>>> To have to download the src and build it would be a huge hassle
>> for
>> >> >>>> users that we *really* want to avoid. It may just be that I was
>> >> doing
>> >> >>>> something wrong with my libcurl stuff but I couldn't see 
>> what  - I
>> >> was
>> >> >>>> just getting the windows "it's died" message that you 
>> normally get
>> >> >>>> when libraries don't like each other. If anyone else could try
>> >> it out
>> >> >>>> and see what happens for them with the windows libcurl binary
>> >> distros
>> >> >>>> it would be appreciated!
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> I wonder if our building with vc8 is causing the incomaptibility.
>> We
>> >> >>> have
>> >> >>> had issue before with dll's being built against different 
>> versions
>> >> >>> of the
>> >> >>> msvc runtime dlls.
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> REST service - after all the shenanigans with libcurl, I hit an
>> >> issue
>> >> >>>> with tuscany_sca_mod_rest.dll that I didn't have time to get
>> >> past. In
>> >> >>>> ModREST.cpp the request->path_info is coming out as
>> >> >>>>
>> >>
>> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div, 
>>
>> >>
>> >> >>>>
>> >> >>>> but it looks like the code expects it to be something like
>> >> >>>> /sample.calculator.CalculatorComponent/CalculatorService/div -
>> this
>> >> >>>> meant that the runtime was looking for a component named htdocs
>> >> and a
>> >> >>>> service named rest! I assume you get the path without the
>> >> /htdocs/rest
>> >> >>>> part on Linux, although it's a bit odd that the data is
>> >> different on
>> >> >>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version
>> >> you're
>> >> >>>> using?
>> >> >>>>
>> >> >>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
>> >> >>>> conference in Belgium next week, so I'll be preparing 
>> for/going to
>> >> >>>> that over the next few days, and won't have much time to 
>> progress
>> >> this
>> >> >>>> or the HttpdBigBank sample. I've put the windows deploy/run
>> scripts
>> >> >>>> for RestCalculator on svn, so if anyone does fancy trying it out
>> >> I'll
>> >> >>>> be interested in your results!
>> >> >>>>
>> >> >>>> Cheers
>> >> >>>>
>> >> >>>> Andy
>> >> >>>>
>> >> >>>> [1] http://curl.haxx.se/download.html
>> >> >>>>
>> >> >>>>
>> >> ---------------------------------------------------------------------
>> >> >>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
>> >> >>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>> >> >>>>
>> >> >>>>
>> >> >>
>> >> >> I finished setting up a complete Windows environment with Curl and
>> >> >> Httpd yesterday evening. I noticed that there are many Curl
>> >> >> distributions available, so I picked an "MSVC development
>> >> >> distribution" and will give it a try today.
>> >> >>
>> >> >
>> >> > Andy,
>> >> >
>> >> > The RestCalculator sample now works on Windows, with the following
>> >> > configuration:
>> >> > - an MSVC based Libcurl distribution (at
>> >> > http://curl.haxx.se/download.html, the one before the last one 
>> at the
>> >> > bottom of the page, more precisely
>> >> > libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris
>> Drake).
>> >> > - an update to the VSExpress project to link with the import lib 
>> from
>> >> > that Libcurl distro
>> >> > - an update to the HTTPD conf to specify a DocumentRoot (and 
>> load the
>> >> > Mime and Dir HTTPD modules into the server), I added the gen of 
>> this
>> >> > conf to the startserver.bat script.
>> >> >
>> >> > So if you download the Libcurl distribution above and update 
>> from the
>> >> > SVN head, it should work now.
>> >> >
>> >> > I started to update the scripts and conf in the RestCustomer sample
>> as
>> >> > well but it doesn't work yet, I'll continue to work on it later 
>> this
>> >> > evening.
>> >> >
>> >>
>> >> After fixing the deploy.bat script in the REST Customer sample (it 
>> was
>> >> missing a copy of the required Customer.xsd to the deploy directory),
>> >> this sample now works as well.
>> >
>> >
>> > I hit a couple of issues running the REST samples. I think the
>> > startserver.bat and runrestclient.bat need to add libcurl to the PATH.
>> > The
>> > client script adds %LIBCURL_HOME%\bin to the path but this needs to be
>> > %LIBCURL_HOME% for the version of libcurl you mention above. 
>> startserver
>> > does not add libcurl to the path.
>> >
>> > Should we change these scripts to check for LIBCURL_HOME being set and
>> > then
>> > ad both %LIBCURL_HOME%\bin and %LIBCURL_HOME% to the PATH?
>> >
>> > Cheers,
>> >
>>
>> I think this is a very good question!
>>
>> I've been going back and forth on this, between:
>> a) let the user configure the PATH (and LD_LIBRARY_PATH on Windows) once
>> for all to include our dependencies
>> b) leverage the XYZ_HOME that people need to configure to build and
>> configure the PATH in the sample scripts
>>
>> Here are few things to consider:
>> - I would expect users to do (a) anyway when they install the various
>> dependencies (and this is done for you by some of the Ruby and Python
>> installers for example).
>> - People who build from source will have the XYZ_HOME variables defined
>> so (b) will work well for them, but people who use the binary distros
>> will probably not have these variables, and asking them to define these
>> variables will complicate their setup.
>> - Setting the path in each script is not something I would recommend to
>> a user if he has many Tuscany programs. Ideally he should be able to run
>> things without writing a script to launch each program.
>> - On the other hand, configuring the path in our sample scripts shows
>> people how to do it, and allows them to replicate this by simple
>> copy/paste.
>>
>> After writing this email, I'm now starting to think that we should not
>> tweak the path to our dependencies in our scripts and instead provide
>> the configuration snippets in a README, and ask people to configure
>> their environment once for all when they install Tuscany.
>>
>> Like I said, I've been going back and forth on this, so I could also be
>> convinced otherwise... What do you think?
>>
>> -- 
>> Jean-Sebastien
>
>
> I think I've been through exactly the same thoughts! Maybe we should
> document like "ensure the licurl libraries are on the PATH" and also 
> ship a
> tuscanyenv.bat, for users to edit, which contains the set of variables we
> expect e.g.
>
> #set TUSCANY_SCACPP=...
> #set LIBCURL_HOME=<path to libcurl>
> #set PATH=%TUSCANY_SCACPP%\bin;%PATH%
>
> Maybe we could make our runxxx.bat scripts call this tuscanyenv..bat??

Yes, it makes a lot of sense!

>
> What is a pain though is trying to debug WHY the
> tuscany_sca_rest_reference.dll will not load!! It took a while to find 
> that
> the libcurl.dll was in LIBURL_HOME and not LIBCURL_HOME\bin
>
>

I think we need better error reporting for this. I can take a look at 
how to provide better Library load error info in the exceptions and 
logs, using errno on Linux and GetLastErrorInfo() on Win32.

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: [C++] REST extension/samples and libcurl on Windows

Posted by Pete Robbins <ro...@googlemail.com>.
On 14/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>
> Pete Robbins wrote:
> > On 12/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> >>
> >> Jean-Sebastien Delfino wrote:
> >> > Jean-Sebastien Delfino wrote:
> >> >> Pete Robbins wrote:
> >> >>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
> >> >>>>
> >> >>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
> >> >>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org>
> wrote:
> >> >>>> > > I checked in the initial structure of a REST extension under
> >> >>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
> >> >>>> > >
> >> >>>> > > The idea is to add support for <interface.rest> and
> >> >>>> <binding.rest> on
> >> >>>> > > services and references and implement a RESTFul pattern (using
> >> the
> >> >>>> HTTP
> >> >>>> > > Post/Get/Put/Delete verbs to implement
> >> >>>> Create/Retrieve/Update/Delete
> >> >>>> > > operations on resources) as well as a simple service
> invocation
> >> >>>> > > mechanism using HTTP Get and Post.
> >> >>>> > >
> >> >>>> > > I have updated the Linux build files, added a configure
> >> >>>> > > --enable-restbinding option and the necessary Makefile.am
> >> files.
> >> >>>> > >
> >> >>>> > > The reference binding requires Libcurl (I tried 7.15.5) and
> >> >>>> CURL_LIB
> >> >>>> and
> >> >>>> > > CURL_INCLUDE environment variables pointing to its lib and
> >> include
> >> >>>> > > directories.
> >> >>>> > > The service binding requires Apache httpd (2.2.x) and
> HTTPD_LIB
> >> >>>> and
> >> >>>> > > HTTPD_INCLUDE environment variables.
> >> >>>> > >
> >> >>>> > > The SCDL model classes should be roughly Ok but the
> >> >>>> ServiceProxy and
> >> >>>> > > ServiceWrapper classes are under construction and only
> >> useful to
> >> >>>> verify
> >> >>>> > > that the extension can be built.
> >> >>>> > >
> >> >>>> >
> >> >>>> > I just committed the build files & a few minor changes to get
> the
> >> >>>> > extension building on Windows - you will need to set the
> >> environment
> >> >>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the
> appropriate
> >> >>>> > places (guess!)
> >> >>>> >
> >> >>>> > Haven't yet got the sample going - that's the next job.
> >> >>>> >
> >> >>>> > Cheers
> >> >>>> > Andy
> >> >>>> >
> >> >>>>
> >> >>>> I spent most of today trying to get the RestCalculator sample up
> >> and
> >> >>>> running on Windows. I hit a few issues:
> >> >>>>
> >> >>>> Libcurl - this was the major one. The extension built fine but
> died
> >> on
> >> >>>> the restclient side of the sample when it tried to initialise
> >> libcurl
> >> >>>> (via the curl_global_init() call). I tried all the different
> >> kinds of
> >> >>>> libcurl for Windows that are available at [1] but I got the same
> >> >>>> result with all of them. Eventually I built my own from source,
> and
> >> >>>> that died too until I built it via VS Express rather than the
> >> >>>> command-line build! At this point it all started working and I
> >> began
> >> >>>> to see messages appearing on the server.
> >> >>>>
> >> >>>> To have to download the src and build it would be a huge hassle
> for
> >> >>>> users that we *really* want to avoid. It may just be that I was
> >> doing
> >> >>>> something wrong with my libcurl stuff but I couldn't see what  - I
> >> was
> >> >>>> just getting the windows "it's died" message that you normally get
> >> >>>> when libraries don't like each other. If anyone else could try
> >> it out
> >> >>>> and see what happens for them with the windows libcurl binary
> >> distros
> >> >>>> it would be appreciated!
> >> >>>
> >> >>>
> >> >>>
> >> >>> I wonder if our building with vc8 is causing the incomaptibility.
> We
> >> >>> have
> >> >>> had issue before with dll's being built against different versions
> >> >>> of the
> >> >>> msvc runtime dlls.
> >> >>>
> >> >>>
> >> >>>
> >> >>> REST service - after all the shenanigans with libcurl, I hit an
> >> issue
> >> >>>> with tuscany_sca_mod_rest.dll that I didn't have time to get
> >> past. In
> >> >>>> ModREST.cpp the request->path_info is coming out as
> >> >>>>
> >>
> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div,
> >>
> >> >>>>
> >> >>>> but it looks like the code expects it to be something like
> >> >>>> /sample.calculator.CalculatorComponent/CalculatorService/div -
> this
> >> >>>> meant that the runtime was looking for a component named htdocs
> >> and a
> >> >>>> service named rest! I assume you get the path without the
> >> /htdocs/rest
> >> >>>> part on Linux, although it's a bit odd that the data is
> >> different on
> >> >>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version
> >> you're
> >> >>>> using?
> >> >>>>
> >> >>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
> >> >>>> conference in Belgium next week, so I'll be preparing for/going to
> >> >>>> that over the next few days, and won't have much time to progress
> >> this
> >> >>>> or the HttpdBigBank sample. I've put the windows deploy/run
> scripts
> >> >>>> for RestCalculator on svn, so if anyone does fancy trying it out
> >> I'll
> >> >>>> be interested in your results!
> >> >>>>
> >> >>>> Cheers
> >> >>>>
> >> >>>> Andy
> >> >>>>
> >> >>>> [1] http://curl.haxx.se/download.html
> >> >>>>
> >> >>>>
> >> ---------------------------------------------------------------------
> >> >>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> >> >>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
> >> >>>>
> >> >>>>
> >> >>
> >> >> I finished setting up a complete Windows environment with Curl and
> >> >> Httpd yesterday evening. I noticed that there are many Curl
> >> >> distributions available, so I picked an "MSVC development
> >> >> distribution" and will give it a try today.
> >> >>
> >> >
> >> > Andy,
> >> >
> >> > The RestCalculator sample now works on Windows, with the following
> >> > configuration:
> >> > - an MSVC based Libcurl distribution (at
> >> > http://curl.haxx.se/download.html, the one before the last one at the
> >> > bottom of the page, more precisely
> >> > libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris
> Drake).
> >> > - an update to the VSExpress project to link with the import lib from
> >> > that Libcurl distro
> >> > - an update to the HTTPD conf to specify a DocumentRoot (and load the
> >> > Mime and Dir HTTPD modules into the server), I added the gen of this
> >> > conf to the startserver.bat script.
> >> >
> >> > So if you download the Libcurl distribution above and update from the
> >> > SVN head, it should work now.
> >> >
> >> > I started to update the scripts and conf in the RestCustomer sample
> as
> >> > well but it doesn't work yet, I'll continue to work on it later this
> >> > evening.
> >> >
> >>
> >> After fixing the deploy.bat script in the REST Customer sample (it was
> >> missing a copy of the required Customer.xsd to the deploy directory),
> >> this sample now works as well.
> >
> >
> > I hit a couple of issues running the REST samples. I think the
> > startserver.bat and runrestclient.bat need to add libcurl to the PATH.
> > The
> > client script adds %LIBCURL_HOME%\bin to the path but this needs to be
> > %LIBCURL_HOME% for the version of libcurl you mention above. startserver
> > does not add libcurl to the path.
> >
> > Should we change these scripts to check for LIBCURL_HOME being set and
> > then
> > ad both %LIBCURL_HOME%\bin and %LIBCURL_HOME% to the PATH?
> >
> > Cheers,
> >
>
> I think this is a very good question!
>
> I've been going back and forth on this, between:
> a) let the user configure the PATH (and LD_LIBRARY_PATH on Windows) once
> for all to include our dependencies
> b) leverage the XYZ_HOME that people need to configure to build and
> configure the PATH in the sample scripts
>
> Here are few things to consider:
> - I would expect users to do (a) anyway when they install the various
> dependencies (and this is done for you by some of the Ruby and Python
> installers for example).
> - People who build from source will have the XYZ_HOME variables defined
> so (b) will work well for them, but people who use the binary distros
> will probably not have these variables, and asking them to define these
> variables will complicate their setup.
> - Setting the path in each script is not something I would recommend to
> a user if he has many Tuscany programs. Ideally he should be able to run
> things without writing a script to launch each program.
> - On the other hand, configuring the path in our sample scripts shows
> people how to do it, and allows them to replicate this by simple
> copy/paste.
>
> After writing this email, I'm now starting to think that we should not
> tweak the path to our dependencies in our scripts and instead provide
> the configuration snippets in a README, and ask people to configure
> their environment once for all when they install Tuscany.
>
> Like I said, I've been going back and forth on this, so I could also be
> convinced otherwise... What do you think?
>
> --
> Jean-Sebastien


I think I've been through exactly the same thoughts! Maybe we should
document like "ensure the licurl libraries are on the PATH" and also ship a
tuscanyenv.bat, for users to edit, which contains the set of variables we
expect e.g.

#set TUSCANY_SCACPP=...
#set LIBCURL_HOME=<path to libcurl>
#set PATH=%TUSCANY_SCACPP%\bin;%PATH%

Maybe we could make our runxxx.bat scripts call this tuscanyenv..bat??

What is a pain though is trying to debug WHY the
tuscany_sca_rest_reference.dll will not load!! It took a while to find that
the libcurl.dll was in LIBURL_HOME and not LIBCURL_HOME\bin


-- 
Pete

Re: [C++] REST extension/samples and libcurl on Windows

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Pete Robbins wrote:
> On 12/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>>
>> Jean-Sebastien Delfino wrote:
>> > Jean-Sebastien Delfino wrote:
>> >> Pete Robbins wrote:
>> >>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
>> >>>>
>> >>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
>> >>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>> >>>> > > I checked in the initial structure of a REST extension under
>> >>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
>> >>>> > >
>> >>>> > > The idea is to add support for <interface.rest> and
>> >>>> <binding.rest> on
>> >>>> > > services and references and implement a RESTFul pattern (using
>> the
>> >>>> HTTP
>> >>>> > > Post/Get/Put/Delete verbs to implement
>> >>>> Create/Retrieve/Update/Delete
>> >>>> > > operations on resources) as well as a simple service invocation
>> >>>> > > mechanism using HTTP Get and Post.
>> >>>> > >
>> >>>> > > I have updated the Linux build files, added a configure
>> >>>> > > --enable-restbinding option and the necessary Makefile.am 
>> files.
>> >>>> > >
>> >>>> > > The reference binding requires Libcurl (I tried 7.15.5) and
>> >>>> CURL_LIB
>> >>>> and
>> >>>> > > CURL_INCLUDE environment variables pointing to its lib and
>> include
>> >>>> > > directories.
>> >>>> > > The service binding requires Apache httpd (2.2.x) and HTTPD_LIB
>> >>>> and
>> >>>> > > HTTPD_INCLUDE environment variables.
>> >>>> > >
>> >>>> > > The SCDL model classes should be roughly Ok but the
>> >>>> ServiceProxy and
>> >>>> > > ServiceWrapper classes are under construction and only 
>> useful to
>> >>>> verify
>> >>>> > > that the extension can be built.
>> >>>> > >
>> >>>> >
>> >>>> > I just committed the build files & a few minor changes to get the
>> >>>> > extension building on Windows - you will need to set the
>> environment
>> >>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the appropriate
>> >>>> > places (guess!)
>> >>>> >
>> >>>> > Haven't yet got the sample going - that's the next job.
>> >>>> >
>> >>>> > Cheers
>> >>>> > Andy
>> >>>> >
>> >>>>
>> >>>> I spent most of today trying to get the RestCalculator sample up 
>> and
>> >>>> running on Windows. I hit a few issues:
>> >>>>
>> >>>> Libcurl - this was the major one. The extension built fine but died
>> on
>> >>>> the restclient side of the sample when it tried to initialise 
>> libcurl
>> >>>> (via the curl_global_init() call). I tried all the different 
>> kinds of
>> >>>> libcurl for Windows that are available at [1] but I got the same
>> >>>> result with all of them. Eventually I built my own from source, and
>> >>>> that died too until I built it via VS Express rather than the
>> >>>> command-line build! At this point it all started working and I 
>> began
>> >>>> to see messages appearing on the server.
>> >>>>
>> >>>> To have to download the src and build it would be a huge hassle for
>> >>>> users that we *really* want to avoid. It may just be that I was 
>> doing
>> >>>> something wrong with my libcurl stuff but I couldn't see what  - I
>> was
>> >>>> just getting the windows "it's died" message that you normally get
>> >>>> when libraries don't like each other. If anyone else could try 
>> it out
>> >>>> and see what happens for them with the windows libcurl binary 
>> distros
>> >>>> it would be appreciated!
>> >>>
>> >>>
>> >>>
>> >>> I wonder if our building with vc8 is causing the incomaptibility. We
>> >>> have
>> >>> had issue before with dll's being built against different versions
>> >>> of the
>> >>> msvc runtime dlls.
>> >>>
>> >>>
>> >>>
>> >>> REST service - after all the shenanigans with libcurl, I hit an 
>> issue
>> >>>> with tuscany_sca_mod_rest.dll that I didn't have time to get 
>> past. In
>> >>>> ModREST.cpp the request->path_info is coming out as
>> >>>>
>> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div, 
>>
>> >>>>
>> >>>> but it looks like the code expects it to be something like
>> >>>> /sample.calculator.CalculatorComponent/CalculatorService/div - this
>> >>>> meant that the runtime was looking for a component named htdocs 
>> and a
>> >>>> service named rest! I assume you get the path without the
>> /htdocs/rest
>> >>>> part on Linux, although it's a bit odd that the data is 
>> different on
>> >>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version 
>> you're
>> >>>> using?
>> >>>>
>> >>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
>> >>>> conference in Belgium next week, so I'll be preparing for/going to
>> >>>> that over the next few days, and won't have much time to progress
>> this
>> >>>> or the HttpdBigBank sample. I've put the windows deploy/run scripts
>> >>>> for RestCalculator on svn, so if anyone does fancy trying it out 
>> I'll
>> >>>> be interested in your results!
>> >>>>
>> >>>> Cheers
>> >>>>
>> >>>> Andy
>> >>>>
>> >>>> [1] http://curl.haxx.se/download.html
>> >>>>
>> >>>> 
>> ---------------------------------------------------------------------
>> >>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
>> >>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>> >>>>
>> >>>>
>> >>
>> >> I finished setting up a complete Windows environment with Curl and
>> >> Httpd yesterday evening. I noticed that there are many Curl
>> >> distributions available, so I picked an "MSVC development
>> >> distribution" and will give it a try today.
>> >>
>> >
>> > Andy,
>> >
>> > The RestCalculator sample now works on Windows, with the following
>> > configuration:
>> > - an MSVC based Libcurl distribution (at
>> > http://curl.haxx.se/download.html, the one before the last one at the
>> > bottom of the page, more precisely
>> > libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris Drake).
>> > - an update to the VSExpress project to link with the import lib from
>> > that Libcurl distro
>> > - an update to the HTTPD conf to specify a DocumentRoot (and load the
>> > Mime and Dir HTTPD modules into the server), I added the gen of this
>> > conf to the startserver.bat script.
>> >
>> > So if you download the Libcurl distribution above and update from the
>> > SVN head, it should work now.
>> >
>> > I started to update the scripts and conf in the RestCustomer sample as
>> > well but it doesn't work yet, I'll continue to work on it later this
>> > evening.
>> >
>>
>> After fixing the deploy.bat script in the REST Customer sample (it was
>> missing a copy of the required Customer.xsd to the deploy directory),
>> this sample now works as well.
>
>
> I hit a couple of issues running the REST samples. I think the
> startserver.bat and runrestclient.bat need to add libcurl to the PATH. 
> The
> client script adds %LIBCURL_HOME%\bin to the path but this needs to be
> %LIBCURL_HOME% for the version of libcurl you mention above. startserver
> does not add libcurl to the path.
>
> Should we change these scripts to check for LIBCURL_HOME being set and 
> then
> ad both %LIBCURL_HOME%\bin and %LIBCURL_HOME% to the PATH?
>
> Cheers,
>

I think this is a very good question!

I've been going back and forth on this, between:
a) let the user configure the PATH (and LD_LIBRARY_PATH on Windows) once 
for all to include our dependencies
b) leverage the XYZ_HOME that people need to configure to build and 
configure the PATH in the sample scripts

Here are few things to consider:
- I would expect users to do (a) anyway when they install the various 
dependencies (and this is done for you by some of the Ruby and Python 
installers for example).
- People who build from source will have the XYZ_HOME variables defined 
so (b) will work well for them, but people who use the binary distros 
will probably not have these variables, and asking them to define these 
variables will complicate their setup.
- Setting the path in each script is not something I would recommend to 
a user if he has many Tuscany programs. Ideally he should be able to run 
things without writing a script to launch each program.
- On the other hand, configuring the path in our sample scripts shows 
people how to do it, and allows them to replicate this by simple copy/paste.

After writing this email, I'm now starting to think that we should not 
tweak the path to our dependencies in our scripts and instead provide 
the configuration snippets in a README, and ask people to configure 
their environment once for all when they install Tuscany.

Like I said, I've been going back and forth on this, so I could also be 
convinced otherwise... What do you think?

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org


Re: [C++] REST extension/samples and libcurl on Windows

Posted by Pete Robbins <ro...@googlemail.com>.
On 12/12/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>
> Jean-Sebastien Delfino wrote:
> > Jean-Sebastien Delfino wrote:
> >> Pete Robbins wrote:
> >>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
> >>>>
> >>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
> >>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
> >>>> > > I checked in the initial structure of a REST extension under
> >>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
> >>>> > >
> >>>> > > The idea is to add support for <interface.rest> and
> >>>> <binding.rest> on
> >>>> > > services and references and implement a RESTFul pattern (using
> the
> >>>> HTTP
> >>>> > > Post/Get/Put/Delete verbs to implement
> >>>> Create/Retrieve/Update/Delete
> >>>> > > operations on resources) as well as a simple service invocation
> >>>> > > mechanism using HTTP Get and Post.
> >>>> > >
> >>>> > > I have updated the Linux build files, added a configure
> >>>> > > --enable-restbinding option and the necessary Makefile.am files.
> >>>> > >
> >>>> > > The reference binding requires Libcurl (I tried 7.15.5) and
> >>>> CURL_LIB
> >>>> and
> >>>> > > CURL_INCLUDE environment variables pointing to its lib and
> include
> >>>> > > directories.
> >>>> > > The service binding requires Apache httpd (2.2.x) and HTTPD_LIB
> >>>> and
> >>>> > > HTTPD_INCLUDE environment variables.
> >>>> > >
> >>>> > > The SCDL model classes should be roughly Ok but the
> >>>> ServiceProxy and
> >>>> > > ServiceWrapper classes are under construction and only useful to
> >>>> verify
> >>>> > > that the extension can be built.
> >>>> > >
> >>>> >
> >>>> > I just committed the build files & a few minor changes to get the
> >>>> > extension building on Windows - you will need to set the
> environment
> >>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the appropriate
> >>>> > places (guess!)
> >>>> >
> >>>> > Haven't yet got the sample going - that's the next job.
> >>>> >
> >>>> > Cheers
> >>>> > Andy
> >>>> >
> >>>>
> >>>> I spent most of today trying to get the RestCalculator sample up and
> >>>> running on Windows. I hit a few issues:
> >>>>
> >>>> Libcurl - this was the major one. The extension built fine but died
> on
> >>>> the restclient side of the sample when it tried to initialise libcurl
> >>>> (via the curl_global_init() call). I tried all the different kinds of
> >>>> libcurl for Windows that are available at [1] but I got the same
> >>>> result with all of them. Eventually I built my own from source, and
> >>>> that died too until I built it via VS Express rather than the
> >>>> command-line build! At this point it all started working and I began
> >>>> to see messages appearing on the server.
> >>>>
> >>>> To have to download the src and build it would be a huge hassle for
> >>>> users that we *really* want to avoid. It may just be that I was doing
> >>>> something wrong with my libcurl stuff but I couldn't see what  - I
> was
> >>>> just getting the windows "it's died" message that you normally get
> >>>> when libraries don't like each other. If anyone else could try it out
> >>>> and see what happens for them with the windows libcurl binary distros
> >>>> it would be appreciated!
> >>>
> >>>
> >>>
> >>> I wonder if our building with vc8 is causing the incomaptibility. We
> >>> have
> >>> had issue before with dll's being built against different versions
> >>> of the
> >>> msvc runtime dlls.
> >>>
> >>>
> >>>
> >>> REST service - after all the shenanigans with libcurl, I hit an issue
> >>>> with tuscany_sca_mod_rest.dll that I didn't have time to get past. In
> >>>> ModREST.cpp the request->path_info is coming out as
> >>>>
> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div,
> >>>>
> >>>> but it looks like the code expects it to be something like
> >>>> /sample.calculator.CalculatorComponent/CalculatorService/div - this
> >>>> meant that the runtime was looking for a component named htdocs and a
> >>>> service named rest! I assume you get the path without the
> /htdocs/rest
> >>>> part on Linux, although it's a bit odd that the data is different on
> >>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version you're
> >>>> using?
> >>>>
> >>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
> >>>> conference in Belgium next week, so I'll be preparing for/going to
> >>>> that over the next few days, and won't have much time to progress
> this
> >>>> or the HttpdBigBank sample. I've put the windows deploy/run scripts
> >>>> for RestCalculator on svn, so if anyone does fancy trying it out I'll
> >>>> be interested in your results!
> >>>>
> >>>> Cheers
> >>>>
> >>>> Andy
> >>>>
> >>>> [1] http://curl.haxx.se/download.html
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> >>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
> >>>>
> >>>>
> >>
> >> I finished setting up a complete Windows environment with Curl and
> >> Httpd yesterday evening. I noticed that there are many Curl
> >> distributions available, so I picked an "MSVC development
> >> distribution" and will give it a try today.
> >>
> >
> > Andy,
> >
> > The RestCalculator sample now works on Windows, with the following
> > configuration:
> > - an MSVC based Libcurl distribution (at
> > http://curl.haxx.se/download.html, the one before the last one at the
> > bottom of the page, more precisely
> > libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris Drake).
> > - an update to the VSExpress project to link with the import lib from
> > that Libcurl distro
> > - an update to the HTTPD conf to specify a DocumentRoot (and load the
> > Mime and Dir HTTPD modules into the server), I added the gen of this
> > conf to the startserver.bat script.
> >
> > So if you download the Libcurl distribution above and update from the
> > SVN head, it should work now.
> >
> > I started to update the scripts and conf in the RestCustomer sample as
> > well but it doesn't work yet, I'll continue to work on it later this
> > evening.
> >
>
> After fixing the deploy.bat script in the REST Customer sample (it was
> missing a copy of the required Customer.xsd to the deploy directory),
> this sample now works as well.


I hit a couple of issues running the REST samples. I think the
startserver.bat and runrestclient.bat need to add libcurl to the PATH. The
client script adds %LIBCURL_HOME%\bin to the path but this needs to be
%LIBCURL_HOME% for the version of libcurl you mention above. startserver
does not add libcurl to the path.

Should we change these scripts to check for LIBCURL_HOME being set and then
ad both %LIBCURL_HOME%\bin and %LIBCURL_HOME% to the PATH?

Cheers,

-- 
Pete

Re: [C++] REST extension/samples and libcurl on Windows

Posted by Jean-Sebastien Delfino <js...@apache.org>.
Jean-Sebastien Delfino wrote:
> Jean-Sebastien Delfino wrote:
>> Pete Robbins wrote:
>>> On 07/12/06, Andrew Borley <aj...@gmail.com> wrote:
>>>>
>>>> On 12/7/06, Andrew Borley <aj...@gmail.com> wrote:
>>>> > On 11/20/06, Jean-Sebastien Delfino <js...@apache.org> wrote:
>>>> > > I checked in the initial structure of a REST extension under
>>>> > > cpp/sca/runtime/extensions/rest, revision r477110.
>>>> > >
>>>> > > The idea is to add support for <interface.rest> and 
>>>> <binding.rest> on
>>>> > > services and references and implement a RESTFul pattern (using the
>>>> HTTP
>>>> > > Post/Get/Put/Delete verbs to implement 
>>>> Create/Retrieve/Update/Delete
>>>> > > operations on resources) as well as a simple service invocation
>>>> > > mechanism using HTTP Get and Post.
>>>> > >
>>>> > > I have updated the Linux build files, added a configure
>>>> > > --enable-restbinding option and the necessary Makefile.am files.
>>>> > >
>>>> > > The reference binding requires Libcurl (I tried 7.15.5) and 
>>>> CURL_LIB
>>>> and
>>>> > > CURL_INCLUDE environment variables pointing to its lib and include
>>>> > > directories.
>>>> > > The service binding requires Apache httpd (2.2.x) and HTTPD_LIB 
>>>> and
>>>> > > HTTPD_INCLUDE environment variables.
>>>> > >
>>>> > > The SCDL model classes should be roughly Ok but the 
>>>> ServiceProxy and
>>>> > > ServiceWrapper classes are under construction and only useful to
>>>> verify
>>>> > > that the extension can be built.
>>>> > >
>>>> >
>>>> > I just committed the build files & a few minor changes to get the
>>>> > extension building on Windows - you will need to set the environment
>>>> > variables LIBCURL_HOME and HTTPD_HOME to point to the appropriate
>>>> > places (guess!)
>>>> >
>>>> > Haven't yet got the sample going - that's the next job.
>>>> >
>>>> > Cheers
>>>> > Andy
>>>> >
>>>>
>>>> I spent most of today trying to get the RestCalculator sample up and
>>>> running on Windows. I hit a few issues:
>>>>
>>>> Libcurl - this was the major one. The extension built fine but died on
>>>> the restclient side of the sample when it tried to initialise libcurl
>>>> (via the curl_global_init() call). I tried all the different kinds of
>>>> libcurl for Windows that are available at [1] but I got the same
>>>> result with all of them. Eventually I built my own from source, and
>>>> that died too until I built it via VS Express rather than the
>>>> command-line build! At this point it all started working and I began
>>>> to see messages appearing on the server.
>>>>
>>>> To have to download the src and build it would be a huge hassle for
>>>> users that we *really* want to avoid. It may just be that I was doing
>>>> something wrong with my libcurl stuff but I couldn't see what  - I was
>>>> just getting the windows "it's died" message that you normally get
>>>> when libraries don't like each other. If anyone else could try it out
>>>> and see what happens for them with the windows libcurl binary distros
>>>> it would be appreciated!
>>>
>>>
>>>
>>> I wonder if our building with vc8 is causing the incomaptibility. We 
>>> have
>>> had issue before with dll's being built against different versions 
>>> of the
>>> msvc runtime dlls.
>>>
>>>
>>>
>>> REST service - after all the shenanigans with libcurl, I hit an issue
>>>> with tuscany_sca_mod_rest.dll that I didn't have time to get past. In
>>>> ModREST.cpp the request->path_info is coming out as
>>>> /htdocs/rest/sample.calculator.CalculatorComponent/CalculatorService/div, 
>>>>
>>>> but it looks like the code expects it to be something like
>>>> /sample.calculator.CalculatorComponent/CalculatorService/div - this
>>>> meant that the runtime was looking for a component named htdocs and a
>>>> service named rest! I assume you get the path without the /htdocs/rest
>>>> part on Linux, although it's a bit odd that the data is different on
>>>> Windows.. I'm on Apache HTTPD 2.2.3 - is that the same version you're
>>>> using?
>>>>
>>>> Anyway, I'm doing a presentation on Tuscany at the Javapolis
>>>> conference in Belgium next week, so I'll be preparing for/going to
>>>> that over the next few days, and won't have much time to progress this
>>>> or the HttpdBigBank sample. I've put the windows deploy/run scripts
>>>> for RestCalculator on svn, so if anyone does fancy trying it out I'll
>>>> be interested in your results!
>>>>
>>>> Cheers
>>>>
>>>> Andy
>>>>
>>>> [1] http://curl.haxx.se/download.html
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
>>>> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>>>>
>>>>
>>
>> I finished setting up a complete Windows environment with Curl and 
>> Httpd yesterday evening. I noticed that there are many Curl 
>> distributions available, so I picked an "MSVC development 
>> distribution" and will give it a try today.
>>
>
> Andy,
>
> The RestCalculator sample now works on Windows, with the following 
> configuration:
> - an MSVC based Libcurl distribution (at 
> http://curl.haxx.se/download.html, the one before the last one at the 
> bottom of the page, more precisely 
> libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3.zip from Chris Drake).
> - an update to the VSExpress project to link with the import lib from 
> that Libcurl distro
> - an update to the HTTPD conf to specify a DocumentRoot (and load the 
> Mime and Dir HTTPD modules into the server), I added the gen of this 
> conf to the startserver.bat script.
>
> So if you download the Libcurl distribution above and update from the 
> SVN head, it should work now.
>
> I started to update the scripts and conf in the RestCustomer sample as 
> well but it doesn't work yet, I'll continue to work on it later this 
> evening.
>

After fixing the deploy.bat script in the REST Customer sample (it was 
missing a copy of the required Customer.xsd to the deploy directory), 
this sample now works as well.

-- 
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org