building Axis2/C on windows

This is a discussion on building Axis2/C on windows within the Apache forums in Application Servers & Tools category; I'm trying to build Axis2/C on Win Server 2k3 using MSVC++ 6 (actually I'm building the WSO2 WSF/C++ wrapper for it, but the entirety of the Axis2/C source tree is inside it and that's the part that's failing). I have no choice about the OS for compiler version, unfortunately. I had a problem where the SO_EXCLUSIVEADDRUSE constant wasn't defined in my winsock2.h, probably because of the really old compiler, so I added the line from a newer version of visual studio. That let me get far enough for it to fail on the httpd dependency. I want to use libcurl, ...

Go Back   Application Development Forum > Application Servers & Tools > Apache

Object Mix

Register FAQ Calendar Search Today's Posts Mark Forums Read
  #1  
Old 11-07-2008, 02:15 PM
Yanroy
Guest
 
Default building Axis2/C on windows


I'm trying to build Axis2/C on Win Server 2k3 using MSVC++ 6 (actually I'm
building the WSO2 WSF/C++ wrapper for it, but the entirety of the Axis2/C
source tree is inside it and that's the part that's failing). I have no
choice about the OS for compiler version, unfortunately. I had a problem
where the SO_EXCLUSIVEADDRUSE constant wasn't defined in my winsock2.h,
probably because of the really old compiler, so I added the line from a
newer version of visual studio. That let me get far enough for it to fail
on the httpd dependency. I want to use libcurl, not httpd. I don't want to
use either an httpd or IIS module -- I'm trying to integrate this into my
existing webapp which is already an IIS extension. I'm also not using the
binary distributions because I don't want the extra dependencies and because
I was getting memory corruption issues with them that I think might be
caused by my old compiler trying to link to them. I have several questions:

1) What are the proper target(s) to use in the makefile to get all the stuff
I'll need except the apache/IIS modules? I've been doing "nmake install" so
far, but I also tried "nmake dist_as_lib".

2) My webapp will be both sending and receiving requests via HTTP (or
HTTPS). I assume libcurl will be sufficient for outgoing connections. My
intended way of handling incoming connections is to use the HTTP request
handling function that has already been developed in my webapp and just hand
off the body of the request to Axis2/C. Will this work? Will I need to
create my own Transport Receiver to pull this off, and if so, is there any
documentation/tutorial you could point me to?

3) As I was signing up for this mailing list, I noticed some discussion
about lack of unicode support. Doesn't Axis2/C have to process SOAP
messages encoded in UTF8? My webapp exclusively uses UTF8 and it's a must
that I can send and receive SOAP messages in UTF8 format. I assume Axis2/C
has a dependency on iconv to support this. Can you please verify it's
capable of this?

4) Also, I've been hanging out on your IRC channel lately... it's really
quiet in there. This mailing list also seems to have fairly low volume.
Does that mean Axis2/C isn't under much use or development? Is it suitable
for a new app?

Thank you very much for your assistance,

Ryan
--
View this message in context: http://www.nabble.com/building-Axis2...p20387114.html
Sent from the Axis - C++ - User mailing list archive at Nabble.com.
Reply With Quote
  #2  
Old 11-07-2008, 05:17 PM
Yanroy
Guest
 
Default Re: building Axis2/C on windows


I've continued investigating this issue all day. I think I've made some
progress. I discovered I was setting my build target in the wrong place.
Now I'm using dist_as_lib and it mostly works (gets further, anyways). I
also added in libcurl. I downloaded some binaries for windows off the curl
site, but it has a libcurl.a file inside it instead of the libcurl_imp.lib
file that axis seems to be looking for. What should I do about this? I
can't find any download of libcurl that has that file in it, and from a
cursory examination it doesn't look like building from source will get it
for me. Do I even need curl support? Can axis make outgoing HTTP requests
without it?

When I disable libcurl, I now run into a different problem. This one seems
to be in the sandesha module (which I don't want but can't figure out how to
turn off -- I think it's being built by the WSO2 WSF/C++ build script). I
get an internal compiler error. My guess is that it's using some kind of
advanced templating technique and my ancient compiler can't cope with it.
Is it a lost cause trying to use Axis2/C on MSVC++ 6?

Thanks again. I'm getting increasingly desperate. I may have to switch to
another SOAP library if I can't get this working. Though there's no
guarantee another one would work any better...
--
View this message in context: http://www.nabble.com/building-Axis2...p20389710.html
Sent from the Axis - C++ - User mailing list archive at Nabble.com.
Reply With Quote
  #3  
Old 11-09-2008, 09:16 AM
Nandika Jayawardana
Guest
 
Default Re: building Axis2/C on windows

Hi,
If you are building the C++ wrapper, did you edit the configure.in file and
then ran the build.bat. It should build the libraries for you.

Regards
Nandika

On Sat, Nov 8, 2008 at 3:47 AM, Yanroy <ryan.d.meador-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:

>
> I've continued investigating this issue all day. I think I've made some
> progress. I discovered I was setting my build target in the wrong place.
> Now I'm using dist_as_lib and it mostly works (gets further, anyways). I
> also added in libcurl. I downloaded some binaries for windows off the curl
> site, but it has a libcurl.a file inside it instead of the libcurl_imp.lib
> file that axis seems to be looking for. What should I do about this? I
> can't find any download of libcurl that has that file in it, and from a
> cursory examination it doesn't look like building from source will get it
> for me. Do I even need curl support? Can axis make outgoing HTTP requests
> without it?
>
> When I disable libcurl, I now run into a different problem. This one seems
> to be in the sandesha module (which I don't want but can't figure out how
> to
> turn off -- I think it's being built by the WSO2 WSF/C++ build script). I
> get an internal compiler error. My guess is that it's using some kind of
> advanced templating technique and my ancient compiler can't cope with it.
> Is it a lost cause trying to use Axis2/C on MSVC++ 6?
>
> Thanks again. I'm getting increasingly desperate. I may have to switch to
> another SOAP library if I can't get this working. Though there's no
> guarantee another one would work any better...
> --
> View this message in context:
> http://www.nabble.com/building-Axis2...p20389710.html
> Sent from the Axis - C++ - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe-28n8OjmUYWfN...blic.gmane.org
> For additional commands, e-mail: axis-c-user-help-28n8OjmUYWfNLxjTenL...blic.gmane.org
>
>



--
http://nandikajayawardana.blogspot.com/
WSO2 Inc: http://www.wso2.com

Reply With Quote
  #4  
Old 11-10-2008, 12:31 PM
Yanroy
Guest
 
Default Re: building Axis2/C on windows


I'm not entirely sure what you mean, but I'm pretty sure I did it. I
downloaded binary distributions of libxml2, openssl, zlib, etc and set the
paths in configure.in to point to them. Running build.bat gives me two
different errors, depending on which target I have set up inside it. If I
attempt to build "dist", it gives me an error about not having an include
file for httpd (which is expected, since I don't want the apache module).
If I build "dist_as_lib", I get an error about missing libeay32MT.lib. The
openssl package I have contains libeay32.lib and libeay32_a.lib, not that
file specified. To get this far, I had to modify one of the build scripts
to not build most of the modules because they all fail in varying ways
(particularly sandesha). I think it's hopeless for me to try to build from
source.

This morning I found this blog (http://wsaxc.blogspot.com/) which is the
first useful documentation of Axis2/C that I've come across. Why is there
so little documentation for it? There's plenty for Java, but all the
interesting parts of the Java documentation don't apply to the C
implementation because they depend on reflection. This blog mentions that
only VS2005 is supported (I'm using 6.0, unfortunately), so I gave up on
building from source and I'm now back to trying to figure out why I can't
use the binary distribution. The blog post gave me a small clue about how
the C version works when it mentioned that services are loaded from DLLs
based on the services.xml file. This makes sense, but it's not what I want.
It probably explains this error I get from the example server included in
the binary distribution (which I was trying to get working because I thought
it might shed light on why I get memory corruption when I try to run the
"echo" sample client app):

[Mon Nov 10 11:04:31 2008] [error]
...\..\src\core\deployment\dep_engine.c(750) dep_engine repos listener
creation failed, folder name is ../
[Mon Nov 10 11:04:31 2008] [error] ..\..\src\core\deployment\conf_init.c(67)
dep engine load failed. conf value is NULL
[Mon Nov 10 11:04:31 2008] [error]
...\..\src\core\transport\http\server\simple_axis2 _server\http_server_main.c(214)
Server creation failed: Error code: 34 :: Repository listener initialization
failed

So I guess this "repository" (there doesn't appear to be any documentation
explaining this term; I've had to infer from the error message, snippets on
blogs and mailing lists, and the source, which is poorly commented) is the
place the service DLL files are loaded from. I don't know where it's
looking... AFAICT, the ../ directory it specifies is WSFCPP_HOME, and
there's certainly no services there. There are some in the "services"
subdirectory of that folder, but I don't know what to do with them.

All I'm trying to do is add SOAP support to an existing application. I want
to handle the HTTP request myself, then hand the XML contained therein to
Axis for processing. I don't want Axis to open any ports nor do any socket
stuff. I don't want Axis to load any services DLLs. I want my app to be
the service. Can this be done using Axis? I think I may have had a
completely wrong idea of what Axis does -- it seems more like Tomcat than a
SOAP library. I don't want some kind of service container, I want a SOAP
API. Is this possible? Is there documentation?

Thanks.


nandika jayawardana-2 wrote:
>
> Hi,
> If you are building the C++ wrapper, did you edit the configure.in file
> and
> then ran the build.bat. It should build the libraries for you.
>
> Regards
> Nandika
>
>


--
View this message in context: http://www.nabble.com/building-Axis2...p20424400.html
Sent from the Axis - C++ - User mailing list archive at Nabble.com.
Reply With Quote
  #5  
Old 11-10-2008, 02:33 PM
Yanroy
Guest
 
Default Re: building Axis2/C on windows


Thank you very much for your swift reply. I had already seen the
documentation listed at that first link you provided. It doesn't seem to
have much in the way of API docs. The only such docs I can find are the
doxygen-generated ones, which don't have a high-level overview. Also, as I
mentioned, I think my use case is a bit strange since it's never even
mentioned anywhere.

That distribution that you linked to is what I'm trying to build. I
followed all the build instructions that came with it and it fails due to
dependency problems, as I mentioned in my previous email. In my attempt to
get rid of the Apache httpd dependency (I don't want to build anything httpd
related), I edited the build scripts to not build any of modules like
rampart, sandesha, neethi, etc. I also had to change the build target from
dist to dist_as_lib to get rid of it trying to build the httpd module
itself. I know that won't produce any of the samples, but I was hoping to
get some DLLs that I could use in my own test application (because the
binary distribution ones give me memory corruption errors). I may have been
confusing -- there are several different problems I'm having. I keep
switching my way of attacking Axis because I keep hitting dead ends. A
short list of my problems:

1) can I even use Axis2/C the way I intend? See my last email for a
detailed description, but the short version is "can I integrate it directly
into my application without having any server modules, service DLLs or any
other external communcations or interfaces?"

2) I can't run the example standalone server from the binary distribution
because of the error in my previous email.

3) I can't run a small test application (based on the echo sample client)
that I built against the binary distribution libraries because it gives me
memory corruption errors (it free()'s some pointer twice, I think).

4) I can't build from source because of dependency problems. I was trying
to build from source because I thought having my own bins might fix problems
2 and 3. If I can get the binary distribution working, then I will not need
to build from source.

I've been posting on this ML because AFAICT, all my problems are in the
Axis2/C part of the build script. I think it's failing before it even gets
to the C++ specific parts that WSO2 added. I looking into posting on their
ML, but they've had 2 posts in the past year according to the archive I
looked at, so I didn't think I'd find much help there.

Thank you very much for your help so far,

Ryan


nandika jayawardana-2 wrote:
>
> You can find documentation on Axis2/C here.
> *http://ws.apache.org/axis2/c/docs/index.html*
>
> In addition to that there are number of articles published here as well.
> http://wso2.org/taxonomy/term/254
>
> Ok back to your problem.
>
> I assume your problem comes with building this distribution
> http://wso2.org/downloads/wsf/cpp
>
> We usually used vc2005. However, you can actually build the code with vc6
> as
> well. You might want to make a minor modifications to the makefiles for
> that.You do not need to specify a build target to the build.bat if you
> have
> downloaded WSF/CPP distribution.Edit the configure.in file located in the
> outermost directory and just run the build.bat. dist_as_lib is used only
> for
> building library dlls. It will not build the services or clients and will
> not be of use to you. If you are directly using the makefile located in
> build\win32 directory , Always use dist target as it builds the usable
> binary distribution with all headers copied to proper locations.
>
> Hope this helps. Since you are interested in cpp, you can get more help
> by
> posting to wsf-cpp-user-zuXfA1pKn4XhvxM+mQhndA@public.gmane.org
>
> Regards
> Nandika
>
>


--
View this message in context: http://www.nabble.com/building-Axis2...p20426494.html
Sent from the Axis - C++ - User mailing list archive at Nabble.com.
Reply With Quote
Reply


Thread Tools
Display Modes


All times are GMT -5. The time now is 07:55 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vB Ad Management by =RedTyger=

In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.