Hello Oleg,

Managed to get the right builds up. Now I face a strange problem that J
environment is not recognizing the dll file I built - I get a cder of 1 0
which means file not found.

When I give a fully qualified path, when does J fail to recognize a dll that
is in that location?

As soon as I get past this, I would have a debug environment to investigate
the strings and local variables you speak off.

~Yuva


On 8/9/07, Oleg Kobchenko <[EMAIL PROTECTED]> wrote:
>
> It may be the strings. Are they copied inside
> the lib or the passed references are used?
> If so, assign them all to separate nouns and
> keep them around until the "call".
>
> --- Yuvaraj Athur Raghuvir <[EMAIL PROTECTED]> wrote:
>
> > Hello Oleg,
> >
> > 1) I use the axis2c 1.0 libraries and sample as available at this
> > place<http://ws.apache.org/axis2/c/download.cgi>
> > .[1]
> >
> > 2) The sample I am trying out is the yahoo_client.c. The code is here
> [2]
> >
> > 3) I wrote the same in J. The code is here [3]
> >
> > I have isolated the offending line in a call method. When I invoke this
> > method, J.exe crashes.  When debugged from VC, this leads to a function
> call
> > invocation that is prepared by the various libraries before the call is
> > made. So, an access is made into the J.exe process space that results in
> a
> > violation.
> >
> > The way I went about the code is like follows:
> > a) Get the yahoo_client.c to work. (It cashes later on some free calls
> but
> > that I have not yet investigated)
> > b) Write the j version as a translation of dll calls using the
> declarations
> > as I found fit. For this I looked into the lib files to identify the
> > exported function name and used the header files to deduce the
> declarations.
> >
> > c) There are no cd errors so far - only a big crash!!
> >
> > (Note: I could have attached files but I am not sure if this mail server
> > accepts attachments. So I have pasted the whole code).
> >
> > Do let me know if you have some ideas that I can try out.
> >
> > Regards,
> > Yuva
> >
> >
> >
> >
> > [1] http://ws.apache.org/axis2/c/download.cgi
> > [2]
> > int main (int argc, char *argv[])
> > {
> >     const axutil_env_t *env = NULL;
> >     const axis2_char_t *address = NULL;
> >     axis2_endpoint_ref_t* endpoint_ref = NULL;
> >     axis2_options_t *options = NULL;
> >     const axis2_char_t *client_home = NULL;
> >     axis2_svc_client_t* svc_client = NULL;
> >     axiom_node_t *payload = NULL;
> >     axiom_node_t *ret_node = NULL;
> >     axis2_char_t *search_string = NULL;
> >
> >     if (argc > 1)
> >     {
> >
> >         if (!strcmp (argv[1], "-h") || !strcmp (argv[1], "--help"))
> >         {
> >             print_help ();
> >         }
> >         else
> >             search_string = argv[1];
> >     }
> >
> >
> >     env = axutil_env_create_all("yahoo_rest_search.log",
> > AXIS2_LOG_LEVEL_TRACE);
> >     address = "http://search.yahooapis.com/WebSearchService/V1/webSearch
> ";
> >
> >     printf ("using endpoint %s \n", address);
> >
> >     endpoint_ref = axis2_endpoint_ref_create(env, address);
> >
> >     options = axis2_options_create(env);
> >     axis2_options_set_to(options, env, endpoint_ref);
> >
> >     axis2_options_set_enable_rest(options, env, AXIS2_TRUE);
> >     axis2_options_set_http_method(options, env, AXIS2_HTTP_GET);
> >
> >     client_home = AXIS2_GETENV("AXIS2C_HOME");
> >     if (!client_home || !strcmp (client_home, ""))
> >         client_home = "../..";
> >
> >     /* Create service client */
> >     svc_client = axis2_svc_client_create(env, client_home);
> >     if (!svc_client)
> >     {
> >         printf("Error creating service client, Please check AXIS2C_HOME
> > again\n");
> >         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED:
> Error
> > code:"
> >                 " %d :: %s", env->error->error_number,
> >                 AXIS2_ERROR_GET_MESSAGE(env->error));
> >           return -1;
> >     }
> >
> >     /* Set service client options */
> >     axis2_svc_client_set_options(svc_client, env, options);
> >
> >     /* adding proxy support */
> >     axis2_svc_client_set_proxy(svc_client,env, "proxy","8080");
> >
> >     /* Build the SOAP request message payload using OM API.*/
> >     payload = build_yahoo_rest_payload (env, search_string);
> >
> >     /* Send request */
> >     ret_node = axis2_svc_client_send_receive(svc_client, env, payload);
> >
> >     if (ret_node)
> >     {
> >         format_output (env, ret_node);
> >         printf("\necho client invoke SUCCESSFUL!\n");
> >     }
> >     else
> >     {
> >         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED:
> Error
> > code:"
> >                 " %d :: %s", env->error->error_number,
> >                 AXIS2_ERROR_GET_MESSAGE(env->error));
> >         printf("Yahoo REST client invoke FAILED!\n");
> >     }
> >
> >     if (svc_client)
> >     {
> >         axis2_svc_client_free(svc_client, env);
> >         svc_client = NULL;
> >     }
> >     return 0;
> > }
> >
> > [3]
> > ROOTDIR =: jpath '~user\projects\websvc\'
> > NB. v1 : echo application
> > d=. (<jhostpath ROOTDIR,'lib/') ,&.> cut 'axiom.dll
> axutil.dllaxis2_engine.dll'
> > 'AXIOM UTILITY ENGINE' =:    ('"'&,@],&'" ') L:0 d
> > NB.DEBUG
> > ENGINE =: 'C:\08.Utils\axis2\axis2c-
> > bin-1.0.0-win32\samples\WebServiceSamples\debug\Engine.dll  '
> > NB. AXIOM =:  'C:\08.Utils\axis2\axis2c-
> > bin-1.0.0-win32\samples\WebServiceSamples\debug\Axiom.dll  '
> >
> > cdu =: 1 : '(UTILITY,m)&cd'
> > cde =: 1 : '(ENGINE,m)&cd'
> > cda =: 1 : '(AXIOM,m)&cd'
> >
> > NB. win32
> > setenv           =:            'kernel32 SetEnvironmentVariableA  > i *c
> > *c'&cd
> >
> > NB. methods
> > strcmp           =:            '[EMAIL PROTECTED]  > i *c *c' cdu
> > env_create_all =:             '[EMAIL PROTECTED]  > i *c i' cdu
> >
> > endpoint_ref   =:            '[EMAIL PROTECTED] >  i i *c'
> cde
> > options_create =:            '[EMAIL PROTECTED] > i i' cde
> > options_set_to =:             '[EMAIL PROTECTED] > i i i i' cde
> > options_set_enable_rest=:    '[EMAIL PROTECTED] > i i i
> i'
> > cde
> > options_set_http_method =:    '[EMAIL PROTECTED] > i i i
> *c'
> > cde
> > svc_client_create =:        '[EMAIL PROTECTED] > i i *c' cde
> > svc_client_set_options=:    '[EMAIL PROTECTED] > i i i i'
> cde
> > svc_client_set_proxy=:        '[EMAIL PROTECTED] > i i i *c
> *c'
> > cde
> > svc_client_send_receive =:     '[EMAIL PROTECTED] > i i
> i i'
> > cde
> > node_create =:                 '[EMAIL PROTECTED] > i i' cda
> > element_create =:             '[EMAIL PROTECTED] > i i i *c i i'
> cda
> > element_set_text =:            '[EMAIL PROTECTED] > i i i *c i'
> cda
> >
> > NB. enumerations
> > 'L_CRITICAL L_ERROR L_WARNING L_INFO L_DEBUG L_TRACE' =: 0 1 2 3 4 5
> > 'TRUE FALSE' =: 1 0
> > HTTP_GET =: 'GET'
> >
> > NB. Test
> > evp =: ROOTDIR
> > evv =: 'AXIS_HOME'
> > setenv evv;evp
> > l =: ROOTDIR,'/logs/test_yahoo.log'
> > a =: 'http://search.yahooapis.com/WebSearchService/V1/webSearch'
> > e =: env_create_all l;L_TRACE
> > ep =: endpoint_ref e;a
> > op =: options_create <e
> > options_set_to op;e;ep
> > options_set_enable_rest op;e;TRUE
> > options_set_http_method op;e;HTTP_GET
> > c =: svc_client_create e;ROOTDIR NB. axis2.xml + modules/ + services/
> > svc_client_set_options c;e;op
> > svc_client_set_proxy c;e;'proxy';'8080'
> >
> > NB. build payload
> > rn =: node_create <e
> > an =: node_create <e
> > qn =: node_create <e
> > re =: element_create e;0;'yahoo_rest_search';0;rn
> > ae =: element_create e;rn;'appid';0;an
> > element_set_text ae;e;'Yahoo Demo';an
> > qe =: element_create e;rn;'query';0;qn
> > element_set_text qe;e;'finance';qn
> >
> > NB. make the call
> > NB. retn =: svc_client_send_receive c;e;rn
> > call =: 3 : 0
> >     try.
> >         retn =: svc_client_send_receive c;e;rn
> >     catch.
> >         smoutput 'error occurred'
> >     end.
> > )
> >
> >
> >
> > On 8/8/07, Oleg Kobchenko <[EMAIL PROTECTED]> wrote:
> > >
> > > You need to be either more specific, or the
> > > general advice is use the debuggers (J and C++)
> > > and trace up to the offending line and observe all
> > > the parameters carefully. This will involve a lot
> > > of crashes and restarts, which is normal. As you
> > > gain more handle over it, you will be constructing the
> > > definitions and preparing parameters that will work
> > > without crashing the first time around.
> > >
> > > Can you privide a few representative code samples
> > > what you are doing?
> > >
> > >
> > > --- Yuvaraj Athur Raghuvir <[EMAIL PROTECTED]> wrote:
> > >
> > > > Hello,
> > > >
> > > > I started the implementation of my own wrapper. Now, almost all the
> > > calls
> > > > are going fine. At the critical point when I have to establish the
> > > > connection and send the message, there is an  Access Violation that
> > > brings
> > > > down J environment. I am able to execute the same sequence of calls
> from
> > > a
> > > > simple client application.
> > > >
> > > > Now, how to debug this access violation?
> > > >
> > > > 1) I have done a simple mapping of pointers to structures as
> integers.
> > > This
> > > > seems to work because all I do is manage the various pointers - get
> it
> > > from
> > > > one call and pass it to the other. But is this the right way?
> > > >
> > > > 2) I built the engine in the VC++ Express edition. However, all I
> get to
> > > > understand if that a certain call causes a access violation in j.exeand
> > > the
> > > > second time J crashes. This is related to invoking a function
> pointer
> > > buried
> > > > deep in the various pointers I manage from J.
> > > >
> > > > Any clues?
> > > >
> > > > Regards,
> > > > Yuva
> > > >
> > > > p.s: If you need more info on the code I have written, just let me
> know
> > > and
> > > > I shall paste the code into the mail (the C/C++ working version & my
> J
> > > > translation)
> > > >
> > > > On 7/18/07, Yuvaraj Athur Raghuvir <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > Hello,
> > > > >
> > > > > I recently came across Axis2C - a C implementation for Web Service
> > > > > Consumption - developed by Apache (http://ws.apache.org/axis2/c/)
> > > > >
> > > > > Looking at the example clients that comes with the installation, I
> > > think
> > > > > it would be quite straight forward to provide a web service client
> > > facility
> > > > > in J via an addon.
> > > > >
> > > > > Being a novice at DLL integration into J, I was wondering if
> someone
> > > else
> > > > > is looking into this.
> > > > >
> > > > > I think adding this as another package under JAL would be quite
> > > useful.
> > > > >
> > > > > Let me know.
> > > > >
> > > > > Thanks,
> > > > > Yuva
> > > > >
> > > > >
> > > >
> ----------------------------------------------------------------------
> > > > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > > >
> > >
> > >
> > >
> > >
> > >
> ____________________________________________________________________________________
> > > Park yourself in front of a world of choices in alternative vehicles.
> > > Visit the Yahoo! Auto Green Center.
> > > http://autos.yahoo.com/green_center/
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
>
>
>
>
>       
> ____________________________________________________________________________________
> Fussy? Opinionated? Impossible to please? Perfect.  Join Yahoo!'s user
> panel and lay it on us.
> http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to