axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Samisa Abeysinghe <sam...@wso2.com>
Subject Re: Writing web services with C++
Date Thu, 24 Apr 2008 12:52:47 GMT
alebu wrote:
> Ha! OK people, I think we (I mean mailing list) solved the problem!

Cool :)

> I put:
> #ifdef __cplusplus extern "C"
> {
> #endif
> //CODE
> #ifdef __cplusplus
> }
> #endif
> into axis2_svc_skel_<myservicename>.c file (no need to wrap all code) 
> and it start working!
> Thanks all for help and hope that this thread will be useful to other 
> people to.

We need to document this somewhere. People using C++ seem to run into 
this problem time to time, and this is a well known problem.

May be we should add a q to FAQ "Why doesn't my C++ service work?"

Samisa...

>
> On Thu, Apr 24, 2008 at 12:52 PM, Samisa Abeysinghe <samisa@wso2.com 
> <mailto:samisa@wso2.com>> wrote:
>
>     Is it possible to send in the code you are using to help debug
>     this situation.
>
>     Samisa...
>
>
>     Manjula Peiris wrote:
>
>         Alebu,
>
>         Can you put those generated code inside #ifndef __cplusplus...
>         declaration and try. I mean not only headers but also the
>         implementation
>         inside one #ifndef __cplusplus... block. Since you are using
>         g++ as the
>         compiler this may solve the problem. Because WSDL2C tool may
>         be assuming
>         that default compiler is gcc.
>
>         Thanks,
>         -Manjula.
>
>
>         On Thu, 2008-04-24 at 11:51 +0200, alebu wrote:
>          
>
>             I only had one additional function and it is declared (in
>             header file)
>             in suggested #ifndef __cplusplus...
>             I even removed it and all calls to it (only one call
>             actually), but
>             result is the same.
>             All other code is generated with WSDL2C utility. There was
>             problems
>             with it too (there is a thread about it),
>             but they was solved. So code is purely generated by WSDL2C.
>             When I turn on linker option "do not use default
>             libraties" (-nodefaultlibs)
>             Segmentaion Fault turned into SOAP response:
>
>             <soapenv:Envelope
>             xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
>               <soapenv:Header/>
>               <soapenv:Body>
>                  <soapenv:Fault>
>                     <faultcode>soapenv:Server</faultcode>
>                     <faultstring>Failed in creating DLL</faultstring>
>                  </soapenv:Fault>
>               </soapenv:Body>
>             </soapenv:Envelope>
>
>             And in logs/axis2.log I have naow:
>             [Thu Apr 24 12:42:36 2008] [debug] req_uri_disp.c(100)
>             Checking for
>             service using target endpoint address :
>             http://127.0.0.1:9090/axis2/services/uniservice
>             [Thu Apr 24 12:42:36 2008] [debug] req_uri_disp.c(121)
>             Service found
>             using target endpoint address
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             AddressingInHandler within the phase Transport
>             [Thu Apr 24 12:42:36 2008] [info]  Starting addressing in
>             handler
>             [Thu Apr 24 12:42:36 2008] [info]  addr_in_handler.c
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             addressing_based_dispatcher within the phase Transport
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             rest_dispatcher within the phase Dispatch
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             soap_message_body_based_dispatcher within the phase Dispatch
>             [Thu Apr 24 12:42:36 2008] [debug] soap_body_disp.c(231)
>             Checking for
>             operation using SOAP messagebody's first child's local
>             name : serve
>             [Thu Apr 24 12:42:36 2008] [debug] soap_body_disp.c(240)
>             Operation
>             found using SOAP message body's first child's local name
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             soap_action_based_dispatcher within the phase Dispatch
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             dispatch_post_conditions_evaluator within the phase
>             PostDispatch
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             context_handler within the phase PostDispatch
>             [Thu Apr 24 12:42:36 2008] [warning] op.c(1149) Message id
>             not found
>             for message context while registering operation context
>             for operation
>             serve
>             [Thu Apr 24 12:42:36 2008] [error] class_loader.c(161) dlerror
>             reason: ..//services/uniservice/libuniservice.so:
>             undefined symbol:
>             __gxx_personality_v0
>             [Thu Apr 24 12:42:36 2008] [error]
>             raw_xml_in_out_msg_recv.c(115) Impl
>             object for service 'uniservice' not set in message
>             receiver. 101 ::
>             Failed in creating DLL
>             [Thu Apr 24 12:42:36 2008] [debug] phase.c(210) Invoke the
>             handler
>             AddressingOutHandler within the phase MessageOut
>             [Thu Apr 24 12:42:36 2008] [info]  Starting addressing out
>             handler
>             [Thu Apr 24 12:42:36 2008] [debug] addr_out_handler.c(133)
>             No action
>             present. Stop processing addressing
>             [Thu Apr 24 12:42:36 2008] [info]  Request served in 0.123
>             seconds
>             [Thu Apr 24 12:45:15 2008] [info]  Received signal SIGINT.
>             Server
>             shutting down
>             [Thu Apr 24 12:45:15 2008] [info]  Terminating HTTP server
>             thread
>             [Thu Apr 24 12:45:15 2008] [debug] http_svr_thread.c(181)
>             Terminating
>             HTTP server thread.
>             [Thu Apr 24 12:45:15 2008] [info]  Successfully terminated
>              HTTP
>             server thread
>             [Thu Apr 24 12:45:15 2008] [info]  Shutdown complete ...
>
>
>             On Thu, Apr 24, 2008 at 10:40 AM, Manjula Peiris
>             <manjula@wso2.com <mailto:manjula@wso2.com>>
>             wrote:
>                    Hi Alebu,
>                            The segfault comes from
>             AXIS2_SVC_SKELETON_INIT macro. So this
>                    is
>                    because when calling your svc_skeleton_init
>             function. Since
>                    you are
>                    using g++ and given that it worked for gcc the only
>             reason I
>                    can think
>                    of is missing,
>                    #ifdef __cplusplus
>                                    extern "C" {
>                                    #endif
>                                    declaration. Since you have that
>             already there I can't think
>                    of any
>                    valid reason from the provided details. So in order
>             to analyze
>                    further
>                    can you send us your web services code.
>                            Thanks,
>                    -Manjula.
>                                    On Thu, 2008-04-24 at 10:02 +0200,
>             alebu wrote:
>                    > With 1.3.1-RC2 situation is the same... :(
>                    >
>                    > On Thu, Apr 24, 2008 at 8:53 AM, alebu
>             <aleboo@gmail.com <mailto:aleboo@gmail.com>>
>                    wrote:
>                    >         Hmm, don't know if that what you need
>             (based on
>                    axis2c-1.3.0
>                    >         code):
>                    >
>                    >         Program terminated with signal 11,
>             Segmentation
>                    fault.
>                    >         #0  0x746163696c707061 in ?? ()
>                    >         (gdb) backtrace
>                    >         #0  0x746163696c707061 in ?? ()
>                    >         #1  0x00002b960f68a0db in
>                    axis2_msg_recv_make_new_svc_obj
>                    >         (msg_recv=<value optimized out>,
>             env=0x676310,
>                    msg_ctx=<value
>                    >         optimized out>)
>                    >             at msg_recv.c:166
>                    >         #2  0x00002b960f68a579 in
>                    >
>                  
>              axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync
>                    >         (msg_recv=0x674650, env=0x676310,
>             msg_ctx=0x676ff0,
>                    >             new_msg_ctx=0x6829b0) at
>                    raw_xml_in_out_msg_recv.c:99
>                    >         #3  0x00002b960f68a2b1 in
>                    axis2_msg_recv_receive_impl
>                    >         (msg_recv=0x674650, env=0x676310,
>             msg_ctx=0x676ff0,
>                    >             callback_recv_param=<value optimized
>             out>) at
>                    >         msg_recv.c:319
>                    >         #4  0x00002b960f681a75 in
>             axis2_engine_receive
>                    >         (engine=0x6803c0, env=0x676310,
>             msg_ctx=0x676ff0) at
>                    >         engine.c:297
>                    >         #5  0x00002b960f557542 in
>                    >        
>             axis2_http_transport_utils_process_http_post_request
>                    >         (env=0x676310, msg_ctx=0x676ff0,
>                    >             in_stream=<value optimized out>,
>                    out_stream=<value
>                    >         optimized out>, content_type=0x676530
>                    >         "text/xml;charset=UTF-8",
>                    >             content_length=<value optimized out>,
>                    >         soap_action_header=0x677650,
>                    >             request_uri=0x6773c0
>                    >        
>             "http://127.0.0.1:9090/axis2/services/uniservice")
>                    at
>                    >         http_transport_utils.c:583
>                    >         #6  0x00002b960f55587e in
>                    axis2_http_worker_process_request
>                    >         (http_worker=0x676190, env=0x676310,
>                    svr_conn=0x676350,
>                    >             simple_request=0x676490) at
>             http_worker.c:400
>                    >         #7  0x00002b960f8cd26e in
>                    axis2_svr_thread_worker_func
>                    >         (thd=0x676160, data=0x674c20) at
>                    http_svr_thread.c:254
>                    >         #8  0x00002b960faf6143 in start_thread ()
>                    >         from /lib64/libpthread.so.0
>                    >         #9  0x00002b960fedf74d in clone ()
>                    from /lib64/libc.so.6
>                    >         #10 0x0000000000000000 in ?? ()
>                    >         ------------
>                    >         I will try the same with 1.3.1-RC2 now
>                    >
>                    >
>                    >
>                    >         On Wed, Apr 23, 2008 at 10:09 AM, Manjula
>             Peiris
>                    >         <manjula@wso2.com
>             <mailto:manjula@wso2.com>> wrote:
>                    >                 Hi alebu,
>                    >
>                    >                 If it segfaults can you send us
>             the gdb
>                    backtrace ?
>                    >                 BTW, another RC of
>                    >                 1.3.1 will be available soon.
>                    >
>                    >                 Thanks,
>                    >                 -Manjula.
>                    >
>                    >
>                    >
>                    >                 On Wed, 2008-04-23 at 09:55
>             +0200, alebu
>                    wrote:
>                    >                 > Link to 1.3.1 you gave is
>             broken for me.
>                    >                 > Now I got slightly different
>             problem.
>                    >                 > After compiling using g++ for
>             compiler and
>                    linker
>                    >                 (probably i was
>                    >                 > using gcc/g++ earlier and thats
>             was the
>                    problem)
>                    >                 > I simply have segmentaion fault
>             before any
>                    of my
>                    >                 custom code is
>                    >                 > executed. First row of
>             generated with
>                    WSDL2C invoke
>                    >                 > method was logging function and
>             it is not
>                    executed.
>                    >                 So, as I
>                    >                 > understand, problem occurs
>             somewhere
>                    before invoke
>                    >                 call.
>                    >                 > Compiling the same code with
>             the same
>                    parameters but
>                    >                 using gcc works
>                    >                 > fine. I should mention that
>             code in both
>                    cases is
>                    >                 > C code. All declarations are
>             covered with
>                    >                 > #ifdef __cplusplus
>                    >                 > extern "C" {
>                    >                 > #endif
>                    >                 > //code
>                    >                 > #ifdef __cplusplus
>                    >                 > }
>                    >                 > #endif
>                    >                 > In axis2c logs last LIVE line is:
>                    >                 > engine.c(670)
>                    End:axis2_engine_invoke_phases
>                    >                 > engine.c(648)
>                    Start:axis2_engine_invoke_phases
>                    >                 > engine.c(670)
>                    End:axis2_engine_invoke_phases
>                    >                 > class_loader.c(140) Object loaded
>                    successfully
>                    >                 > ... and no any error messages
>                    >                 >
>                    >                 > Any ideas? I could try the same
>             with
>                    axis2c 1.3.1
>                    >                 but I need a link to
>                    >                 > it (on website only 1.3.0 is
>             available)
>                    >                 > Compiler options are (fragment from
>                    Eclipse/C log):
>                    >                 > Invoking: GCC C Compiler
>                    >                 > g++
>                    -I/opt/axis2c-1.3.0/include/axis2-1.3.0 -O0 -g3
>                    >                 -Wall -c
>                    >                 > -fmessage-length=0 -fPIC -MMD -MP
>                    >                 -MF"src/adb_field_type.d"
>                    >                 > -MT"src/adb_field_type.d"
>                    -o"src/adb_field_type.o"
>                    >                 >
>                    >                 > And linking log part is:
>                    >                 > Invoking: GCC C Linker
>                    >                 > g++ -L/opt/axis2c-1.3.0/lib
>                    >                 -L/home/BEA/tuxedo9.1/lib -shared
>                    >                 > -o"libmyservice.so"
>                    >
>                     ./src/adb_field_type.o ./src/adb_serve.o
>             ./src/adb_serveResponse.o ./src/adb_serve_req_type.o
>             ./src/adb_serve_resp_type.o ./src/axis2_skel_uniservice.o
>             ./src/axis2_svc_skel_uniservice.o   -ldl -lbuft -lfml
>             -lfml32 -lengine -ltux -lpthread -laxutil -laxis2_axiom
>             -laxis2_engine -laxis2_parser -laxis2_http_sender
>             -laxis2_http_receiver -laxis2_libxml2
>                    >                 >
>                    >                 > Some additional libraries
>             relative to BEA
>                    Tuxedo are
>                    >                 included, but I
>                    >                 > don't think that they are the
>             problem.
>                    >                 >
>                    >                 >
>                    >                 > On Mon, Apr 14, 2008 at 4:08
>             PM, Samisa
>                    Abeysinghe
>                    >                 <samisa@wso2.com
>             <mailto:samisa@wso2.com>>
>                    >                 > wrote:
>                    >                 >         What are the compiler
>             options you
>                    used when
>                    >                 compiling the
>                    >                 >         service?
>                    >                 >
>                    >                 >         We have added the
>             dlerror to the
>                    log in
>                    >                 1.3.1. <http://1.3.1.> The RC is
>                    >                 >         available, can you try
>             with that?
>                    >                 >
>                    >                 >         Samisa...
>                    >                 >
>                    >                 >         alebu wrote:
>                    >                 >
>                    >                 >                 Hi list.
>                    >                 >                 I have such a
>             situation:
>                    >                 >                 I have some
>             web-service
>                    which was
>                    >                 generated from WSDL
>                    >                 >                 using WSDL2C
>             utility.
>                    >                 >                 Later I decided
>             to write
>                    part of
>                    >                 this web-service with
>                    >                 >                 C++. Before
>             functions that
>                    uses
>                    >                 >                 C++ code I put:
>                    >                 >                 #ifdef __cplusplus
>                    >                 >                 extern "C"
>                    >                 >                 #endif
>                    >                 >                 Then I tried to
>             compile
>                    using g++.
>                    >                 During compilation
>                    >                 >                 some errors
>             were found,
>                    but
>                    >                 >                 all of them was
>             about
>                    incorrect
>                    >                 conversion from void*
>                    >                 >                 into axis2 types.
>                    >                 >                 When I fixed
>             them (I hope)
>                    but when
>                    >                 I call this
>                    >                 >                 web-service I
>             got axis
>                    error:
>                    >                 >                 ...
>                    >                 >
>                    >                 <faultcode>soapenv:Server</faultcode>
>                    >                 >
>                    <faultstring>Failed in
>                    >                 creating
>                    >                 >                 DLL</faultstring>
>                    >                 >                 ...
>                    >                 >                 In axis2.log
>             only one
>                    message was
>                    >                 interesting for me:
>                    >                 >
>                    raw_xml_in_out_msg_recv.c(115) Impl
>                    >                 object for service
>                    >                 >                 'myService' not
>             set in
>                    message
>                    >                 receiver. 100 :: Failed
>                    >                 >                 in creating DLL
>                    >                 >
>                    >                 >                 I understand
>             that it
>                    probably was'nt
>                    >                 very wise to
>                    >                 >                 compile .c
>             files using g++
>                    but,
>                    >                 compilation was
>                    >                 >                 sucessful, so I
>             wonder
>                    >                 >                 where possible
>             problem can
>                    be.
>                    >                 >                 Is it possible
>             at all to
>                    compile
>                    >                 axis2/C web serice
>                    >                 >                 from C++
>             sources using C++
>                    >                 possibilities?
>                    >                 >
>                    >                 >
>                    >
>                  
>              ------------------------------------------------------------------------
>                    >                 >
>                    >                 >                 No virus found
>             in this
>                    incoming
>                    >                 message.
>                    >                 >                 Checked by AVG.
>             Version:
>                    7.5.519 /
>                    >                 Virus Database:
>                    >                 >                 269.22.13/1376
>             - Release
>                    Date:
>                    >                 4/13/2008 1:45 PM
>                    >                 >
>                    >                 >
>                    >                 >
>                    >                 >         --
>                    >                 >         Samisa Abeysinghe Director,
>                    Engineering;
>                    >                 WSO2 Inc.
>                    >                 >
>                    >                 >         http://www.wso2.com/ -
>             "The Open
>                    Source SOA
>                    >                 Company"
>                    >                 >
>                    >                 >
>                    >                 >
>                    >                 >
>                    >                 >
>                    >
>                  
>              ---------------------------------------------------------------------
>                    >                 >         To unsubscribe, e-mail:
>                    >                
>             axis-c-user-unsubscribe@ws.apache.org
>             <mailto:axis-c-user-unsubscribe@ws.apache.org>
>                    >                 >         For additional
>             commands, e-mail:
>                    >                 >        
>             axis-c-user-help@ws.apache.org
>             <mailto:axis-c-user-help@ws.apache.org>
>                    >                 >
>                    >                 >
>                    >                 >
>                    >
>                    >
>                    >
>                  
>              ---------------------------------------------------------------------
>                    >                 To unsubscribe, e-mail:
>                    >                
>             axis-c-user-unsubscribe@ws.apache.org
>             <mailto:axis-c-user-unsubscribe@ws.apache.org>
>                    >                 For additional commands, e-mail:
>                    >                 axis-c-user-help@ws.apache.org
>             <mailto:axis-c-user-help@ws.apache.org>
>                    >
>                    >
>                    >
>                    >
>                    >
>                                  
>              ---------------------------------------------------------------------
>                    To unsubscribe, e-mail:
>             axis-c-user-unsubscribe@ws.apache.org
>             <mailto:axis-c-user-unsubscribe@ws.apache.org>
>                    For additional commands, e-mail:
>                    axis-c-user-help@ws.apache.org
>             <mailto:axis-c-user-help@ws.apache.org>
>                            
>                
>
>
>
>         ---------------------------------------------------------------------
>         To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>         <mailto:axis-c-user-unsubscribe@ws.apache.org>
>         For additional commands, e-mail:
>         axis-c-user-help@ws.apache.org
>         <mailto:axis-c-user-help@ws.apache.org>
>
>
>
>          
>
>
>
>     -- 
>     Samisa Abeysinghe Director, Engineering; WSO2 Inc.
>
>     http://www.wso2.com/ - "The Open Source SOA Company"
>
>
>     ---------------------------------------------------------------------
>     To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>     <mailto:axis-c-user-unsubscribe@ws.apache.org>
>     For additional commands, e-mail: axis-c-user-help@ws.apache.org
>     <mailto:axis-c-user-help@ws.apache.org>
>
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG. 
> Version: 7.5.524 / Virus Database: 269.23.4/1394 - Release Date: 4/23/2008 7:16 PM
>   


-- 
Samisa Abeysinghe 
Director, Engineering; WSO2 Inc.

http://www.wso2.com/ - "The Open Source SOA Company"


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


Mime
View raw message