Hi again,
Now I have a DCL procedure found on the internet which analyzes .obj files
and
creates a modules.opt file with all object files named to be linked in it,
and a
_link.opt file which has a symbol vector setup to name all the external
avilable
symbole (procedures and data) Used to link all the object files into a
sharable image,
for OpenVMS, beeing very close to a DDL file.
So far my AXIS2/C is compiled into a bunch of sharable images and all
togeter
form the axis2_http_server.exe, aimed at loading images on demand.
Also my server starts but fails during initialization with error 34 as it
could not
load axis2_mod_addr.exe, which is another sharable image.
In fact it loades it but can not retreive the function axis2_get_instance()
why?
The problem has much to do with AXIS2_STATIC_DEPLOY, to which I have a
few to now info found in the sources. (any other places to look?)
The axis2_engine depends on axis2_engine_receivers and *receivers depend
on the *engine. as the *receivers come in with axis2_get_instance()
this symbo is used and hence leads to the problem of multiple defined
symbols
if one likes to linke axis2_mod_addr.exe/share
Now I can easy rename in each *mod* and in *sender* and *receiver*
the function axis2_mod_addr_get_Instance(), and its counterpart but then
the
class loader can not find it again, even he loads the module, the *sender*,
*receiver* or any other *image* which has the axis2_get_instance() and the
axis2_remove_instance() in it.
**********************************
How shall / does static deployment work?
**********************************
what do I have to configure that I can start my server and get it running
in this mode?.
How are modules engaged if the server is made using STATIC_DEPLOMENT?
what is statically deployed when the server is built for static and what is
still
loaded at runtime by the class loader?
Would it work if I change the name of the engine built in receiver method
from
axis2_get_instance into something different, if yes into what preferably?
Unfortunately when I compile/link the objects making
axis2_mod_addr.exe/share
the error multiple defined symbols will happen. The exe is created but the
symbol axis2_get_instance() is not generated into the axis2_mod_adder.exe
And this makes the module loadable by the class loader but the classloader
then fails as it can not find axis2_get_instance because it generated or
inserted
into the symbol table by the linker.
The workarround could be that axis2_engine_receivers are made into a .DLL
(an sharable OpenVMS image) too. This would allow all modules to be linked
with the engine and would not result in the known error multiple defined
symbols.
How can I make it all static?
OR
How can I make axis2_engine_receivers into a self contained .DLL or image
and avoid the cross dependencies of the two engine and receivers.
I tried to link axis2_engine_receivers without engine. A NOGO.
Thats itm, as else all my stuff is now compiled linked and is ready to
startup
as soon as modules and services are able to be loaded by the classloader
and this is on HP Alpha OpenVMS
regards
Josef.Stadelmann
@axa-winterthur.ch
-----Ursprüngliche Nachricht-----
Von: Dinesh Premalal [mailto:[EMAIL PROTECTED]
Gesendet: Montag, 29. Oktober 2007 09:26
An: Apache AXIS C User List
Betreff: Re: AXIS2/C OpenVMS Port
Hi,
Please find my comments inline.
On 10/24/07, Stadelmann Josef < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> >
wrote:
Hi developer team,
I have ported almost a great part of AXIS2/C to HP Alpha/OpenVMS
so far, all basic libs (zlib, libxml2, ... ) a re running, are tested,
so far, libxml2 is built and test after I have managed to move the test and
result xml files correctly to OpenVMS
so far, axutil is ported and has passed all given test (including uuidgen)
so far, axiom is ported and has passed all existing tests (could use more
testing on that component)
so far, all core and module sources are compiled and .obj's are inserted into
relevant .OLB files
so far, axis2_http_server.c is compiled and linkes with only 3 minor warnings
BUT IT FAILS ON STARTUP
The reason is that AXIS2_PLAFTFORM_LOADLIB (axutil_class_loader) uses
#include <dlfcn.h>
void *dlopen (char *pathname, int mode);
BUT my pathname arg points i.e to axis2_mod_addr.olb which is wrong and must be
axis2_mod_addr.exe implemented as a shareable image
On a Alpha/OpenVMS system, shareable Images depend on a option file for
linking, defining a transfer vector to gloabl processes, data, symbols, etc.
i.e.
$ LINK/SHAREABLE MY_MATH, SYS$INPUT/OPT
GSMATCH=lequal,1,1000
SYMBOL_VECTOR=(myadd=PROCEDURE,-
mysub=PROCEDURE,-
mymul=PROCEDURE,-
mydiv=PROCEDURE,-
my_symbol=DATA,-
my_data=PSECT)
[Ctrl/Z]
I would like to know from you dear team members, which routines, symbols, etc.
of
addr_in_handler.c;2
addr_out_handler.c;2
mod_addr.c;2
I do have to declare in this option file as PROCEDURE, DATA, PSECT
How can I get this information from existing axis2_mod_addr.lib's out of
Visual Studio C++ 2005, which I use for parallel development purpose, and then
move the source to OpenVMS.
I have made some MMK make files to build the components; not as clean as
delivered, all in absence of dozends of unix tools (automake configure libtool
etc) on OpenVMS, they need improvments in the area of generic and intrinsic
rules, also maybe a better MMK.EXE would do the job more cleaner by following
sub dirs etc. i.e. build of this mmk description files is a major work;
I think you could get an idea about build frameworks of both unix and window
by looking at make files and nmake files. I would recommend you to look at
nmake file which is located in
build/win32/makefile , which will be much more useful to get the details that
you asked.
thanks,
Dinesh