Debugging  of Tuxedo Service in C/C++

Hi All,
I am trying to debug tuxedo service (C code on HP-UNIX 11.00) in the following ways :
shprod25 48: gdb csbfp001 -> csbfp001 is the application service exe
(gdb) b GetRecircRow -> GetRecircRow is the function name
(gdb) r
Starting program: /appl/bstar/bin/csbfp001
Error while reading dynamic library list.
(gdb)
Looks like it is not able to read DLL and it exists. Can anyone please tell me how can i debug the code line by line ?

It's even more complex than this, because Tuxedo Services has to attach IPCS and register in the BBL/DBBL in order to communicate with the world. The problem you are facing is because you are trying to boot the server without all the variables that tuxedo programs (like tmboot) uses when starting all the stuff.
So, I will recommend you two different aproaches:
1) Start tuxedo server as usual (with tmboot a/o tmadmin) and attach gdb to the pid when it has started, debugging from then on. It is the easiest and safest way.
2) If you need to debug from the start (which is a little more complex), load the environment that starts initially the domain (BBL/DBBL), start tuxedo server as usual, take note with a "ps" of all the parameters tuxedo uses when starting this server, shutdown it and start debugging with gdb using this parameters to run the server.
Hope this helps.
Ramon

Similar Messages

  • Debugging a tuxedo service using dbx

    Hi,
    Is is possible to debug a tuxedo service using dbx by enabing the tmboot switches
    and -g option of the compiler. I am able to step into tpsvrinit during initialisation,
    but not able to do when a client calls a service. I could not step into the service
    by setting breakpoints. Please help.
    rgds,
    Dominic

    The only thing to be aware of is that while you play around in the debugger, Tuxedo
    is timing out your transaction.
    So, if you want things to keep working while you debug, setup some nice long timouts.
    ...Lyall
    "RC Bryan" <[email protected]> wrote:
    >
    I have not done this on Solaris in a while but basically, what you have
    to do is
    to build the process with -g and start it with tmboot as you would normally.
    After the process is running, you can attach by typing:
    dbx name pid
    where the name is the name of the executable and pid is the process id
    of the
    server process (obtained either with ps -ef | grep name or with verbose
    mode psr
    in tmadmin). This will break into the running process. You can then
    set your
    break points in the service routines as required. When the service is
    entered,
    control will return to your debugger session and you can debug as you
    normally
    would.
    Incidentally, I find the buildserver -k (keep) option to be useful when
    debugging
    servers. This allows you to debug through the startup code that is normally
    deleted
    as a part of the buildserver process.
    Regards,
    /RC Bryan
    "Dominic" <[email protected]> wrote:
    Hi,
    Is is possible to debug a tuxedo service using dbx by enabing the tmboot
    switches
    and -g option of the compiler. I am able to step into tpsvrinit during
    initialisation,
    but not able to do when a client calls a service. I could not step into
    the service
    by setting breakpoints. Please help.
    rgds,
    Dominic

  • Tuxedo Service Debugging

    Hi All ,
    Is it possible to debug Tuxedo Services using GDB in Unix environment (AIX) ..
    Could you please share your experience in this regard
    Thanks in advance
    Nadeer.

    Nadeer,
    Yes, it is possible to debug services using GDB. To get the most debugging
    information, you should "export CFLAGS=-g" when running buildserver so that
    your server will be compiled with debugging on. After booting the server,
    you can attach to the running server using "gdb myserver process_id" and set
    breakpoints. After setting breakpoints, you can give the "continue" command
    and send a client request to the server.
    Ed
    "nadeer ahammed" <[email protected]> wrote in message
    news:[email protected]..
    Hi All ,
    Is it possible to debug Tuxedo Services using GDB in Unix environment
    (AIX) ..
    Could you please share your experience in this regard
    Thanks in advance
    Nadeer.

  • [help]a problem about dbx/attach a tuxedo service

    I attempted to trace a Tuxedo service process via dbx/attach command:
    attach nnnnwhen I attached dbx to the service PID, the service process is stopped somewhere outside my service program:
    (/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) where
    current thread: t@1
    =>[1] __systemcall(0xffbfeda8, 0x31, 0x2, 0x10540c, 0x2cc0e8, 0x641dc), at 0xfe120080
      [2] _libc_msgrcv(0x10540c, 0x2cc0e8, 0x641dc, 0xc0000000, 0x0, 0x2ec), at 0xfe117928
      [3] msgrcv(0x10540c, 0x2cc0e8, 0x641dc, 0xc0000000, 0x0, 0x0), at 0xfe45dc40
      [4] _tmmbrecvm(0x0, 0xbdb0c, 0x2, 0xa, 0x0, 0x7), at 0xfe59b658
      [5] _tmmsgrcv(0xfffffffc, 0xfe5fdaa8, 0x0, 0xffff, 0xbf800, 0xb76c8), at 0xfe4bc1d0
      [6] _tmrcvrq(0xae608, 0xffbff38c, 0x22, 0x10000000, 0x1000, 0xc0000000), at 0xfe4f9738
      [7] _tmrunserver(0x0, 0x1400, 0x0, 0xfe5fdaa8, 0x0, 0xb76c8), at 0xfe4fe418
      [8] _tmstartserver(0x15, 0x1c00, 0x8b160, 0xae608, 0x0, 0x8af88), at 0xfe4d7530
      [9] main(0x15, 0xffbff4bc, 0xffbff514, 0x8b000, 0x0, 0x0), at 0x238f8However, I can not resume the service process either. when I use cont command, the dbx seems to stop there with no input prompt.
    Has anyone debug a tuxedo serive in SunOS using dbx?How can I resume the server process If I want to print the local variables?Thank you in advance!
    Edited by: angeloyu on Sep 16, 2008 8:02 PM

    angeloyu wrote:
    I attempted to trace a Tuxedo service process via dbx/attach command:
    attach nnnnwhen I attached dbx to the service PID, the service process is stopped somewhere outside my service program:
    (/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) where
    current thread: t@1
    [9] main(0x15, 0xffbff4bc, 0xffbff514, 0x8b000, 0x0, 0x0), at 0x238f8
    Judging by WS6U2 above, I assume you are using dbx 6.2, which is very, very old. Unless you need it to work on similarly old Solaris, please consider upgrading to Sun Studio 11 (supports Solaris 8) or Sun Studio 12 (supports Solaris 9+). Both are free and contain many improvements.
    angeloyu wrote:
    However, I can not resume the service process either. when I use cont command, the dbx seems to stop there with no input prompt.That's kind of expected behavior from the debugger - it resumes debuggee and sits there until debuggee generates some event (like hitting breakpoint or receiving a signal). Once dbx gets notified of this event, it presents details to the user and provides input prompt.
    Did you put any breakpoints in (with stop command)? You'll also need to make sure breakpoint is reached by that service you are debugging.
    Anyways, if all you need is to trace the service, it might be easier to use truss(1) command like this:
    $ truss -p `pgrep Tuxedo`

  • TPESYSTEM error when calling tuxedo service

    Hello,
    I have a problem when running my own EJB as a TUXEDO service using WTC.
    Im using TUXEDO 8.1 and WL 8.1.
    My TUXEDO and WTC configuration seems OK, because TOLOWER example is running OK.
    When im trying to run my own EJB as a TUXEDO service on TUXEDO side TPESYSTEM
    error appears.
    JDNI name and configuration of the EJB is correct, because when I put wrong JNDI
    then on TUXEDO side TPENOENTRY error appears. Additionally - my EJB's bussines
    logic is pretty the same as TOLOWER example.
    I think that is EJB issue because in server logs there is an information that
    domains are connected but ejbCreate method isn't called. My EJB was developed
    using JBuilder 9 WebLOgic Edition and WL Workshop 8.1.
    Thanks,
         Patrick

    Hi Hemant,
    I'm not sure, but my guess is it was a setup problem. Perhaps not implementing the right interface in the EJB, not having the correct home specified, etc.
    Usually the best way to find these errors the first time is to turn on some debugging information in WLS. More information can be found at: http://edocs.bea.com/wls/docs91/wtc_admin/Install.html
    For this sort of problem, it probably makes sense to enable -Dweblogic.debug.DebugWTCGwtEx=true and/or -Dweblogic.debug.DebugWTCJatmiEx=true
    The above examples are for WLS 9.1 and later. For earlier releases of WLS, check edocs for the settings of weblogic.wtc.TraceLevel
    Best Regards,
    Todd Little
    BEA Tuxedo Chief Architect

  • Wrong translation commond when I write Tuxedo Service to use Informix Database

    Old Environment:
    DB : Informix Dynamic Server Version 7.31.UC5
    Tools : INFORMIX-ESQL Version 7.24.UC8
    MIDDLE : Tuxedo 6.4 patch 341
    New Environment :
    DB : Informix Dynamic Server Version 9.30.FC1
    Tools : IBM Informix CSDK Version 2.80,
    IBM Informix-ESQL Version 9.52.UC2
    MIDDLE : Tuxedo 8.0 patch 135
    Event :
    My old tuxedo service had wroted to communicate with Informix Database by
    XA transaction. In my service code have to
    prepare informix statement by command
    ' EXEC SQL PREPARE p_roll FROM "ROLLBACK WORK" ' And in my old environment it's
    workable until I upgrade my environment.
    My old tuxedo service can compile in new environment but when i try to test
    service by ud32 tool the result is error "A syntax error has occurred". After
    I check my code and receive statement at Database host I found some thing does
    not correct.
    I send to prepare ' ROLLBACK WORK ' but at database host received ' ROLLBACK WORKRK"
    ' that unknown command to database.
    I try to write my small new code to test PREPARE command of Informix ESQL/C
    without to build to Tuxedo Server, It's can work correctly.
    If you had found the same case , Please advise me too.
    Thanks you very much for your advise.
    [roll.ec]

    If ud32 reported a syntax error, then your service was never called.
    Normally, a service running under XA control should not issue transactional SQL
    statements. Begins and Rollbacks are issued from the transaction manager, not the
    application code.
    Can you post the Tuxedo message catalog number, and your ud32 script, as well as
    your environment variables?
         Scott Orshan
    Sutep wrote:
    Old Environment:
    DB : Informix Dynamic Server Version 7.31.UC5
    Tools : INFORMIX-ESQL Version 7.24.UC8
    MIDDLE : Tuxedo 6.4 patch 341
    New Environment :
    DB : Informix Dynamic Server Version 9.30.FC1
    Tools : IBM Informix CSDK Version 2.80,
    IBM Informix-ESQL Version 9.52.UC2
    MIDDLE : Tuxedo 8.0 patch 135
    Event :
    My old tuxedo service had wroted to communicate with Informix Database by
    XA transaction. In my service code have to
    prepare informix statement by command
    ' EXEC SQL PREPARE p_roll FROM "ROLLBACK WORK" ' And in my old environment it's
    workable until I upgrade my environment.
    My old tuxedo service can compile in new environment but when i try to test
    service by ud32 tool the result is error "A syntax error has occurred". After
    I check my code and receive statement at Database host I found some thing does
    not correct.
    I send to prepare ' ROLLBACK WORK ' but at database host received ' ROLLBACK WORKRK"
    ' that unknown command to database.
    I try to write my small new code to test PREPARE command of Informix ESQL/C
    without to build to Tuxedo Server, It's can work correctly.
    If you had found the same case , Please advise me too.
    Thanks you very much for your advise.
    #include     <stdio.h>
    #define BUFF          30
    #define SQLROWCOUNT sqlca.sqlerrd[2]
    exec sql define LNGTH1     40;
    main()
         exec sql whenever sqlerror goto :sqlx;
         exec sql begin declare section;
              string     hs_vlue_char[LNGTH1];
              string     hs_sql[500];
         exec sql end declare section;
         long     li_line;
         fprintf(stderr,"\nProcessing...\n");
         exec sql connect to 'sysmaster@oltp';
         li_line = __LINE__;
         exec sql prepare bwork from "BEGIN WORK";
         li_line = __LINE__;
         exec sql prepare cwork from "COMMIT WORK";
         li_line = __LINE__;
         exec sql prepare rwork from "ROLLBACK WORK";
         printf("%d: Before Rollback Work\n", __LINE__);
         EXEC SQL PREPARE p_rwork FROM "ROLLBACK WORK";
         /* free(hs_v[tmp]);
         hs_v[tmp] = strfmt("%s", "rollback work");
         CHECK_STRFMT_ERROR( hs_v, tmp);
         debug("'%s'", hs_v[tmp]);
         exec sql prepare p_rwork from :hs_v[tmp];
         printf("%d: After Rollback Work\n", __LINE__);
         printf("%d: Before Begin Work\n", __LINE__);
         EXEC SQL PREPARE p_bwork FROM "BEGIN WORK";
         printf("%d: After Begin Work\n", __LINE__);
         printf("%d: Before Commit Work\n", __LINE__);
         EXEC SQL PREPARE p_cwork FROM "COMMIT WORK";
         printf("%d: After Commit Work\n", __LINE__);
         sprintf(hs_sql, "SELECT vlue_char from cs_dfpm where dfpm_code = 'LOG_PATH_NAME1'");
         printf("hs_Sql = %s\n", hs_sql);
         exec sql prepare sel_sql from :hs_sql;
         exec sql execute sel_sql into :hs_vlue_char;
         printf("hs_vlue_char = %s\n", hs_vlue_char);
         exec sql free sel_sql;
         exec sql execute p_bwork;
         exec sql
         update cs_dfpm
         set vlue_char = '/test/'
         where dfpm_code = 'LOG_PATH_NAME1';
         if ( SQLROWCOUNT == 0 )
              exec sql execute p_rwork;
         exec sql execute p_cwork;
         exec sql free p_bwork;
         exec sql free p_cwork;
         exec sql free p_rwork;
         exec sql disconnect current;
         fprintf(stderr, "\nProcess completed successfully.\n");
         return(0);
    sqlx:
         fprintf(stderr,"\nDB error encountered at line = %ld(%ld)\n", li_line, SQLCODE);
         fprintf(stderr,"\nDB error encountered(%ld)\n", SQLCODE);
         exec sql whenever sqlerror continue;
         exec sql free sel_sql;
         exec sql free p_bwork;
         exec sql free cwork;
         exec sql free rwork;
         exec sql disconnect current;
         printf("%s@%d:Process completed with Error.\n", __FILE__, __LINE__);

  • Troubleshooting tuxedo services .. related to Oracle deadlock errors

    Afternoon all,
    I support an application that allows API calls to tuxedo services using messages comprised of FML fields. Our application sits on an OracleDB that is experiencing deadlock issues, one of the tuxedo servers involved in the deadlock is one that advertises services accessed by the API calls so I'm trying to rule it out as the source.
    Is there any way to trace/log the services in detail so that I can tie the deadlocks directly to a call of a tuxedo service?
    I've looked into TMTRACE, but I'm not sure this is going to give me the detail I need.
    Changing application code is not an option unfortunately.
    Thanks,
    Adam

    Hi Todd,
    Thanks for the quick response.
    Aplogies for the ignorance, but what do you mean by XA / local database transaction?
    Our architecture is such that a tuxedo server, that offers the services our APIs talk to, makes the Oracle updates. Is that XA or local?
    Oracle's logging and deadlock messages show me what the updates are, but I'm trying to make sure 100% that an API called service is instigating that update.
    Hope that is clear enough!
    Cheers,
    Adam
    Todd Little wrote:
    Hi Adam,
    Are the Tuxedo services using XA transactions or only local database transactions? The reason I ask is that TSAM offers the ability to track XA transactions and might be able to tell you what's happening. It can also track services and call paths, i.e., complete end-to-end call tracking from a Tuxedo client, through intervening servers (services).
    If you are not using XA transactions, I'm afraid there isn't a lot that Tuxedo can provide you as Tuxedo is unaware of the underlying database requests. In fact, if you aren't using XA transactions, Tuxedo doesn't even know a database is involved it the processing of requests.
    I would think you should be able to trace things from the database side, but you'd have to ask that question over in the database forums as I'm not familiar enough with what tracing/debugging facilities on the database side to give you much help.
    Regards,
    Todd Little
    Oracle Tuxedo Chief Architect

  • I have a problem when running my own EJB as a TUXEDO service using WTC.

    Hello,
    I have a problem when running my own EJB as a TUXEDO service using WTC. I am using TUXEDO 8.1 and WL 9.1.
    When I am trying to run my own EJB as a TUXEDO service error appears.
    TPENOENT(6):0:0:TPED_MINVAL(0):QMNONE(0):0:Could not find service TOUPPER
    at weblogic.wtc.gwt.WTCService.getImport(WTCService.java:4988)
    at weblogic.wtc.gwt.TuxedoConnection.getImport(TuxedoConnection.java:303)
    at weblogic.wtc.gwt.TuxedoConnection.tpcall(TuxedoConnection.java:1302)
    at examples.MyTestSessionBean.Toupper(MyTestSessionBean.java:102)
    at examples.TestSessionBean_knby6k_EOImpl.Toupper(TestSessionBean_knby6k_EOImpl.java:61)
    at net.roseindia.web.servlets.SessionTestServlet.doGet(SessionTestServlet.java:69)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:272)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:165)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3153)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1973)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1880)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1310)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
    e8
    10
    java.rmi.RemoteException: EJB Exception: ; nested exception is:
    java.lang.NullPointerException
    at weblogic.ejb.container.internal.EJBRuntimeUtils.throwRemoteException(EJBRuntimeUtils.java:95)
    at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:713)
    at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:681)
    at weblogic.ejb.container.internal.BaseEJBObject.postInvoke1(BaseEJBObject.java:447)
    at weblogic.ejb.container.internal.StatelessEJBObject.postInvoke1(StatelessEJBObject.java:72)
    at weblogic.ejb.container.internal.BaseEJBObject.postInvokeTxRetry(BaseEJBObject.java:374)
    at examples.TestSessionBean_knby6k_EOImpl.Toupper(TestSessionBean_knby6k_EOImpl.java:75)
    at net.roseindia.web.servlets.SessionTestServlet.doGet(SessionTestServlet.java:69)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:272)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:165)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3153)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1973)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1880)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1310)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
    Caused by: java.lang.NullPointerException
    at examples.MyTestSessionBean.Toupper(MyTestSessionBean.java:130)
    at examples.TestSessionBean_knby6k_EOImpl.Toupper(TestSessionBean_knby6k_EOImpl.java:61)
    ... 15 more
    Any clue on this.
    With Regards,
    MVS

    If you are trying to create a Tuxedo service in Java using WTC you need to develop an EJB that implements the TuxedoService interface and register its home in JNDI so WTC can look it up. Once that is done you can then export the service to a remote domain in the WTC configuration.
    Regards,
    Todd Little
    Oracle Tuxedo Chief Architect

  • Tuxedo service start

    Hi
    I have a Tuxedo COBOL service and I have a problem: the TPSVCSTART routine it seams that not working very well.
    When I start the service for the first time and I send some record to the TPSVCSTART service routine, everything goes fine. After the COBOL service is terminated (COPY TPRETURN...) and I try to connect to the service again, the VIEW record passed to the TPSVCSTART routine contains the data that I sent but contains also random chars in his string fields, although the record's string value fields and their lengths are correctly set on the client side.
    Anyone knows why this is happening?
    Code for the TPSVCSTART routine:
    DO-TPSVCSTART.
    INITIALIZE ClientData
    MOVE "VIEW" TO REC-TYPE OF TPTYPE-REC.
    MOVE "ClientData" TO SUB-TYPE OF TPTYPE-REC.
    MOVE LENGTH OF CLIENT-DATA-REC TO LEN IN TPTYPE-REC.
    CALL "TPSVCSTART" USING TPSVCDEF-REC
    TPTYPE-REC
    CLIENT-DATA-REC
    TPSTATUS-REC.
    IF TPTRUNCATE
    MOVE "Input data exceeded DATA-REC length"
    TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EZ-EXIT.
    IF NOT TPOK
    MOVE "TPSVCSTART Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EZ-EXIT.
    IF REC-TYPE NOT = "VIEW"
    MOVE "REC-TYPE is not VIEW" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EZ-EXIT.
    Thanx
    Daniel

    Run the server manually using the command line from "tmboot -n -d1" and
    see if it is dumping core or failing in some other manner.
    Or if you already have a core file, get a stack trace with a debugger.
    Paul van Rixel wrote:
    Hi,
    With version Tuxedo 6.4 I have a fmldef.fml with 472 entries. The number of views
    is 121. So when I tried to add a service the tuxedo services will not start and
    returns with an "CMDTUX_CAT:819 INFO: Process Id=.... assumed started (pipe)".
    However, when I delete this service (or another one) the tmboot process does not
    return an error and works fine.
    So I wondered if there might be (default) value which I exceed. Anyone an idea?
    Regards,
    Paul

  • How to debug ABAP Web services from Microsoft Visual Studio

    When developing .NET based Web services clients using Visual Studio that call Web services in SAP NetWeaver .NET developers would like to be able to debug inside SAP. In my blog <a href="/people/andre.fischer/blog/2007/02/07/how-to-debug-abap-web-services-from-microsoft-visual-studio to debug ABAP Web services from Microsoft Visual Studio</a> I would like to point .NET developers to the fact that SAP NetWeaver offers the option of external debugging to perform this task. Though the steps that have to be performed are described in the SAP Online Help I am sure that this option is not well known amongst the .NET developer community.

    Hello WilliamIV,
    >>How can I "configure" Visual Studio debugger to allow validation to work?
    Since I do not have a VS2012 environment, according to your provided link, I created a test demo with VS2013, however, both ways catch the validation error:
    If possible, you could have a try with VS2013 to see if it works or run the example on other machine with VS2012 to see if this is caused by the VS environment, in my side, I do not change any configuration, all are default.
    If I misunderstood this issue, please feel free to let me know.
    Regards.
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Passing data from jsp/servlet to a Tuxedo Service thru VIEW

    Hi..
    We are using Tuxedo10g R3 on AIX 5.3..
    We have a Tuxedo Service running which takes values from the VIEW and converts that to upper case.. From the jsp page v r passing values to the VIEW fields which will be accepted by the service..
    For testing v checked the service with a tuxedo client and it is working fine..
    We have defined a jolt repository file for this service and finished bulkloading and coded the servlet also.. After passing the datas from the jsp, the Tuxedo service is called and it is ended.. but in the service only blank values are passed or the datas are not passed to VIEW fields.. It is not showing any error..
    The repository file for this service:
    service=NSIMPSRV
    export=true
    inbuf=VIEW
    inview=sample
    outbuf=STRING
    param=FIRSTSTR
    type=string
    access=in
    param=SECONDSTR
    type=string
    access=in
    param=THIRDSTR
    type=string
    access=in
    param=S-FIRST
    type=string
    access=out
    param=S-SECOND
    type=string
    access=out
    param=S-THIRD
    type=string
    access=out
    and the servlet code for this service:
    Result result1;
    ServletSessionPool servletsession = (ServletSessionPool) joltsession.getSessionPool("demojoltpool");
    ServletDataSet joltdataset = new ServletDataSet();
    joltdataset.setValue("FIRSTSTR","Testing");
    joltdataset.setValue("SECONDSTR","Tuxedo");
    joltdataset.setValue("THIRDSTR","Views");
    result1 = servletsession.call("NSIMPSRV", joltdataset, null);
    System.out.println("FIRSTSTR:"+result1.getValue("S-FIRST",""));
    System.out.println("SECONDSTR:"+result1.getValue("S-SECOND",""));
    System.out.println("THIRDSTR:"+result1.getValue("S-THIRD",""));
    we are not sure why the datas have not been passed.. do anyone have any idea regarding this??
    Thanks..

    Hi Wayne,
    This is my view definition:
    VIEW sample
    # type cname fbna count flag size null
    string firststr - 1 - 10 -
    string secondstr - 1 - 10 -
    string thirdstr - 1 - 10 -
    ENDJolt repository file:
    service=NSIMPSRV
    export=true
    inbuf=VIEW
    inview=sample
    outbuf=VIEW
    outview=sample
    param=FIRSTSTR
    type=string
    access=inout
    param=SECONDSTR
    type=string
    access=inout
    param=THIRDSTR
    type=string
    access=inoutThe Servlet code is:
    package Servlet;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import bea.jolt.pool.servlet.weblogic.PoolManagerStartUp;
    import bea.jolt.pool.servlet.*;
    import bea.jolt.pool.ApplicationException;
    import bea.jolt.pool.SessionPoolException;
    import bea.jolt.pool.ServiceException;
    import bea.jolt.pool.SessionPoolManager;
    import bea.jolt.pool.*;
    * Servlet implementation class ZC00582Servlet
    public class VIEWServlet extends HttpServlet {
         private ServletSessionPoolManager joltsession = (ServletSessionPoolManager) SessionPoolManager.poolmgr;
    public VIEWServlet() {
    super();
    // TODO Auto-generated constructor stub
         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // TODO Auto-generated method stub
         response.setContentType("text/html");
         ServletResult result;
         Result result1;     
         String String1 = request.getParameter("FIRSTSTR");
         String String2 = request.getParameter("SECONDSTR");
         String String3 = request.getParameter("THIRDSTR");
         System.out.println("THE VALUES BEFORE CONVERSION");
         System.out.println("FIRSTSTR:"+String1);
         System.out.println("SECONDSTR:"+String2);
         System.out.println("THIRDSTR:"+String3);
         System.out.println("1..");     
         //ServletResult message;
         ServletSessionPool servletsession = (ServletSessionPool) joltsession.getSessionPool("demojoltpool");
         System.out.println("2..");
         ServletDataSet joltdataset = new ServletDataSet();
         //joltdataset.importRequest(request);
         System.out.println("3..");
         //joltdataset.setValue("firststr","Hi");
         joltdataset.setValue("firststr",String1);
         System.out.println("4..");
         //joltdataset.setValue("secondstr","hello");
         joltdataset.setValue("secondstr",String2);
         System.out.println("5..");
         //joltdataset.setValue("thridstr","fine");
         joltdataset.setValue("thirdstr",String3);
         System.out.println("6..");
         //result = (ServletResult) servletsession.call("NSIMPSRV", joltdataset, null);
         result1 = servletsession.call("NSIMPSRV", joltdataset, null);
         result = (ServletResult) result1;
         System.out.println("THE VALUES AFTER CONVERSION");
         System.out.println("FIRSTSTR:"+result.getStringValue("firststr",""));
         System.out.println("SECONDSTR:"+result.getStringValue("secondstr",""));
         System.out.println("THIRDSTR:"+result.getStringValue("thirdstr",""));     
         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // TODO Auto-generated method stub
    and my server program :
    IDENTIFICATION DIVISION.
    PROGRAM-ID. NSIMPSRV.
    AUTHOR. TUXEDO DEVELOPMENT.
    ENVIRONMENT DIVISION.
    CONFIGURATION SECTION.
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    * Tuxedo definitions
    01 TPSVCRET-REC.
    COPY TPSVCRET.
    01 TPTYPE-REC.
    COPY TPTYPE.
    01 TPSTATUS-REC.
    COPY TPSTATUS.
    01 TPSVCDEF-REC.
    COPY TPSVCDEF.
    * Log message definitions
    01 LOGMSG.
    05 FILLER PIC X(10) VALUE
    "NSIMPSRV :".
    05 LOGMSG-TEXT PIC X(50).
    01 LOGMSG-LEN PIC S9(9) COMP-5.
    * User defined data records
    01 STRING-DATA.
    COPY SAMPLE.
    LINKAGE SECTION.
    PROCEDURE DIVISION.
    START-FUNDUPSR.
    MOVE LENGTH OF LOGMSG TO LOGMSG-LEN.
    MOVE "Started" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    * Get the data that was sent by the client
    MOVE LENGTH OF STRING-DATA TO LEN.
    CALL "TPSVCSTART" USING TPSVCDEF-REC
    TPTYPE-REC
    STRING-DATA
    TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPSVCSTART Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EXIT-PROGRAM
    END-IF.
    IF TPTRUNCATE
    MOVE "Data was truncated" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EXIT-PROGRAM
    END-IF.
    MOVE FIRSTSTR TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    MOVE SECONDSTR TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    MOVE THIRDSTR TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    INSPECT FIRSTSTR CONVERTING
    "abcdefghijklmnopqrstuvwxyz" TO
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
    INSPECT SECONDSTR CONVERTING
    "abcdefghijklmnopqrstuvwxyz" TO
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
    INSPECT THIRDSTR CONVERTING
    "abcdefghijklmnopqrstuvwxyz" TO
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
    MOVE "Success" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    MOVE STRING-DATA TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    SET TPSUCCESS TO TRUE.
    COPY TPRETURN REPLACING
    DATA-REC BY STRING-DATA.
    * Write out a log err messages
    DO-USERLOG.
    CALL "USERLOG" USING LOGMSG
    LOGMSG-LEN
    TPSTATUS-REC.
    * EXIT PROGRAM
    EXIT-PROGRAM.
    MOVE "Failed" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    SET TPFAIL TO TRUE.
    COPY TPRETURN REPLACING
    DATA-REC BY STRING-DATA.
    Thanks & Regards,
    Janani.

  • Is it possible to Remove the inbuf and outbuf tags from a SALT exposed Tuxedo Service?

    Hi All,
    Currently I have the need to expose my tuxedo Service in a pre-created WSDL file (with all the fields names and namespaces already defined). Searching the web and the examples presented in the Tuxedo and Salt Package, I was able to configure most of the fields but  still can't remove the wrapper inbuf tag.
    Is there any parameter or configuration I can use to eliminate this tag so I can expose the SALT generated WSDL the way I want? Or is it a requirement for every tuxedo service to have his input exposed that way by using SALT?
    If you need anything else in order to provide an answer for this, please let me know. I'm also open to any sugestions.
    Thanks in advance,
    Brunno Attorre

    Hi,
    You would need to set the environment variable GWWS_WSDL_NO_BUF_WRAPPER="Y" (and restart the GWWS server).
    This should prevent the <inbuf> and <outbuf> tags from being added but it may depend upon the SALT release and rolling patch
    level you are using(i.e. if it is included or not) 
    Regards,
    Bob Finan

  • Can a Tuxedo service send a message to itself?

    Hello,
    is it possible for a Tuxedo service to send a request to itself?
    The scenario is this:
    - The same Tuxedo service is provided by multiple processes (for scalability). The processes are single-threaded.
    - While handling a request in a transaction (XA transaction is started outside the process), the service code determines that some cached data needs to be refreshed. This refresh needs to be done outside the current transaction.
    - The service send an non-transactional async request to itself (the same process). [How?]
    - The transactional request completes.
    - The non-transactional request is handled and refreshes the cache.
    - The next transactional request is handled (by the same process), and uses the refreshed cache data.
    Is this possible? The challenge seems to be that the same process gets the non-transactional request. With multiple instances of the service, any instance could normally get the request (eg. when using tpacall()).
    Thanks...
    Roger

    Hi Roger,
    A couple of comments:
    1) There isn't any standard way of forcing a request to go to a specific server when the service is offered by multiple servers. The traditional way of handling the need to make a request to a specific server is to explicitly advertise the service with a synonym name that is unique to the server. So to call the BAL service in a particular server with a PID of 1433, the server would advertise the BAL server as BAL_1433 or something similar, and then any requests that had to be made to that particular server would be made to BAL_1433 instead of BAL. Unfortunately this is rather cumbersome and doesn't scale particularly well. One feature we are adding to Tuxedo in an upcoming release is client server affinity. With this feature an application could specify that all requests are routed to the first server that handles a service. Thus subsequent requests that are made to services while in a "session" with the server would always be routed to that server. While this client/server affinity might be a solution in the future, it's not really designed for the scenario you mention, i.e., performing an asynchronous out of band request to the same server.
    2) In your scenario under the point where you ask "how?", you could use the above approach, although the call would have to be a tpacall with TPNOTRAN set (which you already indicated) but would also have to set TPNOREPLY as it appears you are planning on performing a tpreturn before processing the asynch request.
    3) Obviously another solution would be to make the server multi-threaded and handling the refresh of the cache in a separate thread and not use a tpcall/tpacall to initiate the cache refresh.
    4) Although not likely to be an option, the Tuxedo CORBA infrastructure will support what you are trying to do. By activating an object in a process with a process activation policy, you could make a request to that object reference and be guaranteed the request would return to that same server.
    5) Finally one other possible solution, although probably inelegant and may not scale as well would be to use data dependent routing and only have a single server offering the service in each group.
    As an aside, we are planning on adding a distributed data caching mechanism to Tuxedo in a future release. Yeah, I know that doesn't help right now, but it is certainly something to look forward to! :-)
    Regards,
    Todd Little
    Oracle Tuxedo Chief Architect

  • Eroor in eclipse when i have run TOMCAT in debuge mode web service debuging

    hello all,
    i have a serious problem with debug my web service. I set local variable in eclipse (-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000). And now if i run TOMCAT in normal mode all worked fine and i run remote java application fine, but if i run TOMCAT in debug mode, eclipse in console return error:
    "Error occurred during initialization of VM
    agent library failed to init: jdwp
    ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options."
    If anyone have this problem please tell me how to resolved it.
    Thank for help.

    Eclipse is kind of a competing product so this is not the best place to ask the question. With that most will be nice enough to lend a hand. I suggest ensuring that all other instances of tomcat are stopped then try again. In the Debug perspective ensure there are no servers running with the same name as the one you are attempting to use. If all else fails ensure there are no tomcat process running if they are kill them. Finally, if you cant get it to work reboot. If still no good the Eclipse might be a better place to go.

  • How to deploy and debug java web service in eclipes or using any other soft

    Hai,
    can any one tell me how to deploy and debug java web service in eclipes or using any other software.
    i have used tomcat web server and jdk1.4.0 to develop web service.
    we have used web service to interact with MS outlook .
    bye
    sudhakar.m

    Hi Sudhakar,
    If you are used to working with ant then you can very well use eclipse to deploy your web service.
    You would usually have the ant script in the source root working directory. From eclipse if you select the build file from the navigator view and right click you will see a run ant option in the pop up menu.
    Select that option and you would be able to see each targets with a checkbox select option. So define each target maybe one for wsdl2java conversion, one for compilation and one for deploying your web services. You can either make all of them run by having depends option on or you can run them individually as it takes your fancy.
    I am not sure about debugging a web service yet.
    Hope this helps
    Aviroop
    The truth is out there? Does anyone know the URL?

Maybe you are looking for