Tuxedo service as CORBA client

Hi all-
Just want to confirm my approach on something. I have a Tux (8.1) service that
needs to call out to a CORBA object for some of it's processing. I think I need
to:
- Generate client stubs from the provided IDL using Tux provided 'idl' command.
- In my tpsvrinit(), Perform the ORB initialization using the Tux provided ORB,
i.e., CORBA::ORB_var var_orb = CORBA::ORB_init(argc, argv, "");, then resolve
initial references to a CosNamingService using the TP::bootstrap object and then
use this to look up and narrow my remote object reference. The key here being
that I use a federated CosNamingService (not just the local Tux).
- In my service, use my object reference to make calls.
- In my tpsvrdone, release my object reference and gracefully shutdown my ORB
connection.
Is this about right?
Question - do I need to run an instance of TMFFNAME to make this work?
Thanks,
Rick

Hi Rick,
Signals shouldn't be a problem if you are simply a client to a remote ORB (even if the client is operating in the context of a server since any signals involved would be the problem of the remote ORB.) There are issues in general with signals, but the documentation should describe those. In some cases you may need to use a Tuxedo provided function for registering your own signal handler(s). The only other "issue" might be that you need to call C++ code from C as we only support the OMG C++ bindings and not the C bindings.
As for compatibilty issues, we will try to address any that can be identified, although in general we will make sure our implementation complies with the OMG specifications. The areas that have tended to be problematic with other ORBs (usually because of their broken implementation) have been around wide characters and codeset negotiation, valuetypes (lots of ORBs have had marshalling issues with these), and sometimes GIOP versioning issues and alignment.
Regards,
Todd
>
Hi Todd-
Thanks for responding.
The CORBA server is remote - in fact, a different ORB
vendor (still trying to
find out which one). And it looks like I might be
getting stringified IORs to
use instead of a naming service.
So as a follow up:
- Is there anything to be wary of trying to call a
remote CORBA server from within
my Tux server? Signals or other things?
- Are there any known compatibility issues with the
Tuxedo ORB (the old DEC ORB
if memory serves me) and other current ORB
implementations?
Thx again,
Rick
"Todd Little" <[email protected]> wrote:
Hi Rick,
The approach sounds right, although I'm not certainwe support calling
a CORBA
server from an ATMI server. I couldn't find in aquick search of the
documentation
anything on this. You also didn't say whether theCORBA server is local
or remote.
As for TMFFNAME, that is only needed if you aregoing to use the FactoryFinder.
Regards,
Todd
"Rick Robinson" <[email protected]> wrote:
Hi all-
Just want to confirm my approach on something. I
have a Tux (8.1) service
that
needs to call out to a CORBA object for some ofit's processing. I
think
I need
to:
- Generate client stubs from the provided IDL using
Tux provided 'idl'
command.
- In my tpsvrinit(), Perform the ORB initializationusing the Tux provided
ORB,
i.e., CORBA::ORB_var var_orb =CORBA::ORB_init(argc, argv, "");, then
resolve
initial references to a CosNamingService using theTP::bootstrap object
and then
use this to look up and narrow my remote objectreference. The key
here
being
that I use a federated CosNamingService (not just
the local Tux).
- In my service, use my object reference to makecalls.
- In my tpsvrdone, release my object reference andgracefully shutdown
my ORB
connection.
Is this about right?
Question - do I need to run an instance of TMFFNAMEto make this work?
Thanks,
Rick

Similar Messages

  • How corba client and server find Naming service

    hello
    i want to ask how corba client and server find the Naming service ?
    10x

    By using a well-known port (I think the default for JavaIDL's NS is 1049) on a well-known address (localhost).
    As these values are not really standard, you can specify them when starting the server and client (+-ORBInitialPort 1050 -ORBInitialHost localhost+). See the documentation .

  • Tuxedo Service can not find a Jolt Client AFter timeout occured

    We are using Java Servlet/Jolt client to access out backend
    Tuxedo services.
    Whenever a Tuxedo service timedout, like
    "***tpcall failed |TPETIME - timeout occured|",
    The Jolt client and Tuxedo services will be out of sync,
    and Tuxedo Server will show following error message:
    "JOLT_CAT:1518: "ERROR: Call handle and clientid have no matching requests".
    Whenever this happends, we must reboot out Jolt client connection. Otherwise we
    will keep geting above problem.
    Our Jolt timeout time is 2 minutes. And Tuxedo block time is
    1 min 30 sec. (We setip in our UBB config as
    BLOCKTIME 9 #9*10s (def SCANUNIT)=90s or 1 min and 30s.).
    It seems like Tuxedo service will be timeouted before Jolt timedout.
    Could someone give us some suggestion about the above problem?
    Thanks in advance!

    Which version of Jolt are you using? This problem seems to have been fixed in
    latest rolling patch for Jolt1.2. Contact BEA support for it.
    -Deepak
    Yux71 wrote:
    We are using Java Servlet/Jolt client to access out backend
    Tuxedo services.
    Whenever a Tuxedo service timedout, like
    "***tpcall failed |TPETIME - timeout occured|",
    The Jolt client and Tuxedo services will be out of sync,
    and Tuxedo Server will show following error message:
    "JOLT_CAT:1518: "ERROR: Call handle and clientid have no matching requests".
    Whenever this happends, we must reboot out Jolt client connection. Otherwise we
    will keep geting above problem.
    Our Jolt timeout time is 2 minutes. And Tuxedo block time is
    1 min 30 sec. (We setip in our UBB config as
    BLOCKTIME 9 #9*10s (def SCANUNIT)=90s or 1 min and 30s.).
    It seems like Tuxedo service will be timeouted before Jolt timedout.
    Could someone give us some suggestion about the above problem?
    Thanks in advance!

  • Call of tuxedo workstation client to tuxedo service

    In ubb file:
    "WSL"     SRVGRP="GRP"     SRVID=44
         CLOPT="-A -- -p 10002 -n //172.17.1.10:10001 -P 10003 -T 180"
    My question is:
    1. In workstation client, WSNADDR is //172.17.1.10:10001. If I use "172.17.1.10:10001", it prompts "TPESYSTEM - internal system error", while "//172.17.1.10:10001" is right?
    2. 10001 is the port of WSL, 10002-10003 is the port of WSH. But in ubb file, I cannot find WSH configuration, is that right?
    3. If "telnet 172.17.1.10 10002(/10003)" doesn't work in workstation client, does it impact the call of tuxedo service from this workstation client?
    Thanks a lot.

    Bill,
    1. Tuxedo syntax for specifying TCP/IP addresses requires that the address start with "//", so it is expected behavior for "172.17.1.10:10001" to result in an error and for "//172.17.1.10:10001" to be correctly parsed.
    2. You're correct that the UBBCONFIG file does not include entries for WSH processes. WSH processes are started by the WSL as appropriate.
    3. The Tuxedo WSH communicates with workstation clients and with the WSL using a proprietary Tuxedo workstation protocol. The WSH does not understand telnet protocol, so any attempt to telnet to the WSH port will not succeed.
    Regards,
    Ed

  • 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

  • CORBA Clients

    Hi,
    I would like to know more about to CORBA clients (C++ & Java) accessing EJBs
    in the weblogic cluster. We have an EJB deployed in the weblogic cluster,
    when we are trying to access that EJB through CORBA client (Visibroker 5.1
    ORB), will it return me a replica aware stub or there is no Fault tolerant
    for CORBA clients.
    TIA,
    Vikas

    Hi Andy,
    Thanks for your reply.
    We have been calling EJBs using CORBA, the clients we have tested are C++ &
    Java clients. So I don't understand when you said Java doesn't work well due
    to some limitations. We are using the Visibroker ORB at the client side.
    Now as we move forward, we hit a wall as far as HA of the whole system is
    concerned. Are you aware of somebody using J2EE & CORBA in HA environment?
    Since we have some friends in house who are C++ geeks & we do have some
    legacy C++ code too. As you mentioned Tuxedo ORB, is it a fully functional
    ORB, which version of OMG specs it comply with?
    What happens in case if we want to invoke CORBA service from our EJBs
    deployed in the weblogic cluster? What are the issues we have in HA for this
    scenario?
    Thanks,
    Vi
    "Andy Piper" <[email protected]> wrote in message
    news:[email protected]...
    "Vikas Chawla" <[email protected]> writes:
    I would like to know more about to CORBA clients (C++ & Java) accessing
    EJBs
    >
    C++ works fine (we recommend you use the WebLogic C++ Client (Tuxedo
    ORB) since its free and works well). Java does not work at all due to
    limitations in the Java IDL mapping spec (i.e. does not work for any
    Vendor). Java clients should always use RMI to access EJB's.
    in the weblogic cluster. We have an EJB deployed in the weblogic
    cluster,
    when we are trying to access that EJB through CORBA client (Visibroker5.1
    ORB), will it return me a replica aware stub or there is no Faulttolerant
    for CORBA clients.Fault tolerance in WLS is client driven and thus there is no support
    for it in foreign ORBs. The next release of the WebLogic C++ client
    (part of Tux 8.1) includes fault-tolerance and load-balancing which
    you can use against WLS. This product will be free to WLS
    licencees. You could probably get hold of a beta of this product. It
    would also to be possible to implement fault-tolerance using
    interceptors if your ORB is spec compliant (we do this with the JDK
    1.4 ORB) but you would need to go through your account rep in order to
    get details of the IOR and Service Context formats.
    HTH
    andy

  • Running a Corba Client as a Java Stored Procedure

    Hi,
    I�m trying to use a Java Stored Procedure running as a Corba Client. I want to use the built in Visibroker ORB on Oracle side and JacORB (or others) on the server side.
    How can I init the ORB and get a naming service running not in Oracle but on the server side? Also which jar�s do I need to load into the db with (loadjava) to run the visibroker orb inside the Java Stored Procedure Client?
    I�m using Oracle 8.1.7.
    Thanks for help ;)

    By the way I�m using ORACLE 8.1.7.

  • 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

  • CORBA client reconnection: InvalidDomain

    I'm developing a CORBA-client for WLE 5.1. In short, the problem is:
    I can't restore a connection after a COMM_FAILURE. When trying to create a Tobj_Bootstrap object again I get
    com.beasys.Tobj.InvalidDomain: Can't connect to the domain (//my.domain:2600)
    Here are some details. The client must work without restart during a long time. It is normal that sometimes network problems occur or server is restarted or any other thing happens that can make a remote object reference invalid. So, when getting a COMM_FAILURE, I try to "reconnect" - that is to obtain remote reference again. I do it in the same way as on the first start of the client:
    1. Create Tobj_Bootstrap.
    2. Obtain Factory Finder.
    3. Obtain Factory.
    4. Obtain remote interface reference.
    On the first step I get this InvalidDomain exception. Even if the connection is OK, the server is up and running and the URL passed to Tobj_Bootstrap(orb, url) is correct. The other strange thing is - there is no network activity during this call (observed by network monitoring tool). Seems ORB doesn't really try to do its job.
    BTW, I use m3envobj.jar and wleclient.jar for CORBA-functionality.
    The same client using SUN's ORB (with simple CORBA-server from JDK 1.4) reconnects well.
    What is the reason?
    Thanks in advance.
    Yury.

    Generally, no. If you carefully massage the IDL that results from the EJB, it's possible to manufacture a subset of the EJB's interface that a 2.2 or 2.1 ORB can call, but there is currently no automagical support for this in WLS. Beyond the use of value types, the trouble that most ORBs run into is
    the IIOP type codes that start with RMI: instead of IDL:
    Loaner wrote:
    Hi,
    I have a CORBA client developed on pre CORBA 2.3 ORB, i.e. the ORB
    doesn't supports Object by Value. Can this client access the services
    being provided by the EJB somehow??
    Any help will be appreicated.
    Vikas

  • Problem using CORBA clients with RMI/EJB servers..!!!???

    Hi,
    I have a question on using EJB / or RMI servers with CORBA clients using
    RMI-IIOP transport, which in theory should work, but in practice has few
    glitches.
    Basically, I have implemented a very simple server, StockTreader, which
    looks up for a symbol and returns a 'Stock' object. In the first example, I
    simplified the 'Stock' object to be a mere java.lang.String, so that lookup
    would simply return the 'synbol'.
    Then I have implemented the above, as an RMI-IIOP server (case 1) and a
    CORBA server (case 2) with respective clients, and the pair of
    client-servers work fine as long as they are CORBA-to-CORBA and RMI-to-RMI.
    But the problem arises when I tried using the RMI server (via IIOP) with the
    CORBA client, when the client tries to narrow the object ref obtained from
    the naming service into the CORBA idl defined type (StockTrader) it ends up
    with a class cast exception.
    This is what I did to achieve the above results:
    [1] Define an RMI interface StockTrader.java (extending java.rmi.Remote)
    with the method,
    public String lookup( String symbol) throws RMIException;
    [2] Implement the StorckTrader interface (on a PortableRemoteObject derived
    class, to make it IIOP compliant), and then the server to register the stock
    trader with COS Naming service as follows:
    String homeName =....
    StockTraderImpl trader =new StockTraderImpl();
    System.out.println("binding obj <" homeName ">...");
    java.util.Hashtable ht =new java.util.Hashtable();
    ht.put("java.naming.factory.initial", args[2]);
    ht.put("java.naming.provider.url", args[3]);
    Context ctx =new InitialContext(ht);
    ctx.rebind(homeName, trader);
    [3] Generate the RMI-IIOP skeletons for the Implementation class,
    rmic -iiop stock.StockTraderImpl
    [4] generate the IDL for the RMI interface,
    rmic -idl stock.StockTraderImpl
    [5] Generate IDL stubs for the CORBA client,
    idlj -v -fclient -emitAll StockTraderImpl.idl
    [6] Write the client to use the IDL-defined stock trader,
    String serverName =args[0];
    String symList =args[1];
    StockClient client =new StockClient();
    System.out.println("init orb...");
    ORB orb =ORB.init(args, null);
    System.out.println("resolve init name service...");
    org.omg.CORBA.Object objRef
    =orb.resolve_initial_references("NameService");
    NamingContext naming =NamingContextHelper.narrow(objRef);
    ... define a naming component etc...
    org.omg.CORBA.Object obj =naming.resolve(...);
    System.out.println("narrow objRef: " obj.getClass() ": " +obj);
    StockTrader trader =StockTraderHelper.narrow(obj);
    [7] Compile all the classes using Java 1.2.2
    [8] start tnameserv (naming service), then the server to register the RMI
    server obj
    [9] Run the CORBA client, passing it the COSNaming service ref name (with
    which the server obj is registered)
    The CORBA client successfully finds the server obj ref in the naming
    service, the operation StockTraderHelper.narrow() fails in the segment
    below, with a class cast exception:
    org.omg.CORBA.Object obj =naming.resolve(...);
    StockTrader trader =StockTraderHelper.narrow(obj);
    The <obj> returned by naming service turns out to be of the type;
    class com.sun.rmi.iiop.CDRInputStream$1
    This is of the same type when stock trader object is registered in a CORBA
    server (as opposed to an RMI server), but works correctly with no casting
    excpetions..
    Any ideas / hints very welcome.
    thanks in advance,
    -hari

    On the contrary... all that is being said is that we needed to provide clearer examples/documentation in the 5.1.0 release. There will be no difference between the product as found in the service pack and the product found in the 5.1.1. That is, the only substantive will be that 5.1.1 will also
    include the examples.
    "<=one way=>" wrote:
    With reference to your and other messages, it appears that one should not
    expect that WLS RMI-IIOP will work in a complex real-life system, at least
    not now. In other words, support for real-life CORBA clients is not an
    option in the current release of WLS.
    TIA
    "Eduardo Ceballos" <[email protected]> wrote in message
    news:[email protected]...
    We currently publish an IDL example, even though the IDL programmingmodel in Java is completely non-functional, in anticipation of the support
    needs for uses who need to use IDL to talk to the Weblogic server,
    generically. This example illustrates the simplest connectivity; it does not
    address how
    to integrate CORBA and EJB, a broad topic, fraught with peril, imo. I'llnote in passing that, to my knowledge, none of the other vendors attempt
    this topic either, a point which is telling if all the less happy to hear.
    For the record then, what is missing from our distribution wrt RMI-IIOPare a RMI-IIOP example, an EJB-IIOP example, an EJB-C++. In this you are
    correct; better examples are forth coming.
    Still, I would not call our RMI-IIOP implementation fragile. I would saythat customers have an understandably hard time accepting that the IDL
    programming model is busted; busted in the sense that there are no C++
    libraries to support the EJB model, and busted in the sense that there is
    simply no
    support in Java for an IDL interface to an EJB. Weblogic has nothing to doit being busted, although we are trying to help our customers deal with it
    in productive ways.
    For the moment, what there is is a RMI (over IIOP) programming model, aninherently Java to Java programming model, and true to that, we accept and
    dispatch IIOP request into RMI server objects. The way I look at it is this:
    it's just a protocol, like HTTP, or JRMP; it's not IDL and it has
    practically nothing to do with CORBA.
    ST wrote:
    Eduardo,
    Can you give us more details about the comment below:
    I fear that as soon as the call to narrow succeeds, the remainingapplication will fail to work correctly because it is too difficult ot
    use an idl client in java to work.It seems to me that Weblogic's RMI-IIOP is a very fragile
    implementation. We
    don't need a "HelloWorld" example, we need a concrete serious example(fully
    tested and seriously documented) that works so that we can get a betteridea
    on how to integrate CORBA and EJB.
    Thanks,
    Said
    "Eduardo Ceballos" <[email protected]> wrote in message
    news:[email protected]...
    Please post request to the news group...
    As I said, you must separate the idl related classes (class files and
    java
    files) from the rmi classes... in the rmic step, you must set a newtarget
    (as you did), emit the java files into that directory (it's not clearyou
    did this), then remove all the rmi class files from the class path... ifyou
    need to compile more classes at that point, copy the java files to theidl
    directly is you must, but you can not share the types in any way.
    I fear that as soon as the call to narrow succeeds, the remainingapplication will fail to work correctly because it is too difficult otuse
    an idl client in java to work.
    Harindra Rajapakshe wrote:
    Hi Eduardo,
    Thanks for the help. That is the way I compiled my CORBA client, by
    separating the IDL-generated stubs from the RMI ones, but still I
    get a
    CORBA.BAD_PARAM upon narrowing the client proxy to the interfacetype.
    Here's what I did;
    + Define the RMI interfaces, in this case a StockTrader interface.
    + Implement RMI interface by extendingjavax.rmi.PortableRemoteObject
    making
    it IIOP compliant
    + Implemnnt an RMI server, and compile using JDK1.2.2
    + use the RMI implementation to generate CORBA idl, using RMI-IIOPplugin
    utility rmic;
    rmic -idl -noValueMethods -always -d idl stock.StockTraderImpl
    + generate Java mappings to the IDL generated above, using RMI-IIOPplugin
    util,
    idlj -v -fclient -emitAll -tf src stocks\StockTrader.idl
    This creates source for the package stock and also
    org.omg.CORBA.*
    package, presumably IIOP type marshalling
    + compile all classes generated above using JDK1.2.2
    + Implement client (CORBA) using the classes generated above, NOTthe
    RMI
    proxies.
    + start RMI server, with stockTrader server obj
    + start tnameserv
    + start CORBA client
    Then the client errors when trying to narrow the obj ref from the
    naming
    service, into the CORBA IDL defined interface using,
    org.omg.CORBA.Object obj =naming.resolve(nn);
    StockTrader trader =StockTraderHelper.narrow(obj); // THIS
    ERRORS..!!!
    throwing a CORBA.BAD_PARAM exception.
    any ideas..?
    Thanks in advance,
    -hari
    ----- Original Message -----
    From: Eduardo Ceballos <[email protected]>
    Newsgroups: weblogic.developer.interest.rmi-iiop
    To: Hari Rajapakshe <[email protected]>
    Sent: Wednesday, July 26, 2000 4:38 AM
    Subject: Re: problem using CORBA clients with RMI/EJBservers..!!!???
    Please see the post on june 26, re Errors compiling... somewherein
    there,
    I suspect, you are referring to the rmi class file when you are
    obliged
    to
    completely segregate these from the idl class files.
    Hari Rajapakshe wrote:
    Hi,
    I have a question on using EJB / or RMI servers with CORBA
    clients
    using
    RMI-IIOP transport, which in theory should work, but in practice
    has
    few
    glitches.
    Basically, I have implemented a very simple server,
    StockTreader,
    which
    looks up for a symbol and returns a 'Stock' object. In the firstexample, I
    simplified the 'Stock' object to be a mere java.lang.String, so
    that
    lookup
    would simply return the 'synbol'.
    Then I have implemented the above, as an RMI-IIOP server (case
    1)
    and a
    CORBA server (case 2) with respective clients, and the pair of
    client-servers work fine as long as they are CORBA-to-CORBA andRMI-to-RMI.
    But the problem arises when I tried using the RMI server (via
    IIOP)
    with
    the
    CORBA client, when the client tries to narrow the object ref
    obtained
    from
    the naming service into the CORBA idl defined type (StockTrader)
    it
    ends
    up
    with a class cast exception.
    This is what I did to achieve the above results:
    [1] Define an RMI interface StockTrader.java (extending
    java.rmi.Remote)
    with the method,
    public String lookup( String symbol) throws RMIException;
    [2] Implement the StorckTrader interface (on a
    PortableRemoteObject
    derived
    class, to make it IIOP compliant), and then the server to
    register
    the
    stock
    trader with COS Naming service as follows:
    String homeName =....
    StockTraderImpl trader =new StockTraderImpl();
    System.out.println("binding obj <" homeName ">...");
    java.util.Hashtable ht =new java.util.Hashtable();
    ht.put("java.naming.factory.initial", args[2]);
    ht.put("java.naming.provider.url", args[3]);
    Context ctx =new InitialContext(ht);
    ctx.rebind(homeName, trader);
    [3] Generate the RMI-IIOP skeletons for the Implementation
    class,
    rmic -iiop stock.StockTraderImpl
    [4] generate the IDL for the RMI interface,
    rmic -idl stock.StockTraderImpl
    [5] Generate IDL stubs for the CORBA client,
    idlj -v -fclient -emitAll StockTraderImpl.idl
    [6] Write the client to use the IDL-defined stock trader,
    String serverName =args[0];
    String symList =args[1];
    StockClient client =new StockClient();
    System.out.println("init orb...");
    ORB orb =ORB.init(args, null);
    System.out.println("resolve init name service...");
    org.omg.CORBA.Object objRef
    =orb.resolve_initial_references("NameService");
    NamingContext naming=NamingContextHelper.narrow(objRef);
    ... define a naming component etc...
    org.omg.CORBA.Object obj =naming.resolve(...);
    System.out.println("narrow objRef: " obj.getClass() ":"
    +obj);
    StockTrader trader =StockTraderHelper.narrow(obj);
    [7] Compile all the classes using Java 1.2.2
    [8] start tnameserv (naming service), then the server to
    register
    the
    RMI
    server obj
    [9] Run the CORBA client, passing it the COSNaming service ref
    name
    (with
    which the server obj is registered)
    The CORBA client successfully finds the server obj ref in the
    naming
    service, the operation StockTraderHelper.narrow() fails in thesegment
    below, with a class cast exception:
    org.omg.CORBA.Object obj =naming.resolve(...);
    StockTrader trader =StockTraderHelper.narrow(obj);
    The <obj> returned by naming service turns out to be of the
    type;
    class com.sun.rmi.iiop.CDRInputStream$1
    This is of the same type when stock trader object is registeredin a
    CORBA
    server (as opposed to an RMI server), but works correctly with
    no
    casting
    excpetions..
    Any ideas / hints very welcome.
    thanks in advance,
    -hari

  • 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.

  • Calling Tuxedo Service using BEA Jolt.

    I'm trying to call Tuxedo service from java stored procedure using BEA JOLT.My normal java client works fine but when i use the same client as java stored procedure i get following error message :
    can not connect to any //lucy:9021(host:port)
    Reason:Nwhdlr:can not open socket
    I've successfully loaded all required JOLT jar files using loadjava and created the procedure successfully .Java code is given below :
    import bea.jolt.*;
    import java.sql.*;
    public class JoltToTux
         public static void callTuxService() throws Exception
              JoltSession session;
              JoltSessionAttributes sattr;
              JoltRemoteService toupper;
              JoltTransaction trans;
              String userName=null;
              String userPassword=null;
              String appPassword=null;
              String userRole=null;
              String outstr;
              try {
              sattr = new JoltSessionAttributes();
              sattr.setString(sattr.APPADDRESS, "//lucy:9021");
              sattr.setInt(sattr.IDLETIMEOUT, 300);
              session = new JoltSession(sattr, userName, userRole,userPassword, appPassword);
                        toupper = new JoltRemoteService ("CB_EXESUB", session);
              toupper.setString("CLFY_SUB", "PingSrvr");
              toupper.call(null);
              System.out.println( "Call to Tuxedo complete" );
              outstr = toupper.getStringDef("WF_MESSAGE","" );
              System.out.println("return string : " + outstr);
                        session.endSession();
              System.exit(0);
              } //end of try
              catch (Exception e) {
                   // System.err.println(e.getMessage());}
                   e.printStackTrace();
         } // end main
         public static void main( String args[] ) {
              try {
                   JoltToTux jt = new JoltToTux();
                   jt.callTuxService();
              catch ( Exception e0 ) {
                   e0.printStackTrace();
    } // end ToUpper
    thanks
    anurag

    Ams,
    You can't do that with JOLT. You will need to use the WTC product,
    currently in beta - see WTC Questions and Answers
    Regards,
    Peter.
    Got a Question? Ask BEA at http://askbea.bea.com
    The views expressed in this posting are solely those of the author, and
    BEA
    Systems, Inc. does not endorse any of these views.
    BEA Systems, Inc. is not responsible for the accuracy or completeness of
    the
    information provided
    and assumes no duty to correct, expand upon, delete or update any of the
    information contained in this posting.
    Ams wrote:
    Hi Manoj,
    I want to call a tuxedo service and also want to update
    database (using entity beabs) in same transaction so I
    can't use AUTOTRAN , Am I right ?
    I am using bea.jolt.pool.SessionPool's startTransaction
    method to start a transaction and passing this
    to SessionPool's call method.
    Ams.
    "Manoj SASIDHARAN" <[email protected]> wrote:
    Hello Ams,
    Could u plz give more information abt the usage scenario. Another way
    to test
    would be to put AUTOTRAN=Y for the service in question.
    HTH
    regards
    MS
    "Ams" <[email protected]> wrote:
    Hi,
    I am calling Tuxedo service from ejb using jolt.
    I want the service call in transaction started in ejb.
    I am getting following error.
    LIBTUX_CAT:481: ERROR: Service xa_start returned -7
    Does jolt support transaction ?
    Ams
    [att1.html]

  • 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.

  • CORBA clients - EJBs in WLS

    This is the situation we have:
    1) We must support both C++ and Java clients that will be requesting
    services from our EJBs running in WLS. The clients are internal apps running
    in different companies and we would prefer to avoid requiring our clients to
    use an ORB by a specific vendor. At the same time we do not want to deal
    with potential problems related to the implementation differences by
    different ORB vendors. What would be the best way to handle this situation?
    2) WLS documentation has the following paragraph:
    "WebLogic RMI over IIOP is the framework for EJB-to-CORBA mapping support.
    Currently, however, a standard for passing user identity -- required to
    implement EJB-to-CORBA mapping -- does not exist and the requirement for
    transaction propagation from the client is in question. While RMI over IIOP
    does allow CORBA clients to access EJBeans, the following services will not
    be available:
    EJB transaction services
    EJB security services"
    Does this mean that:
    2.1) CORBA client initiated transactions will not be supported,
    everything will work
    2.2) None of the EJB security services will be available in EJB method
    called by a CORBA client (i.e. getCallerPrincipal() and isCallerInRole()
    will fail)
    Thanks in advance

    Generally speaking, applications are built around common resources, namely the databases and security realms. Here, it seems you can't make any assumptions about the client at all, so you render useless the ability to propagate the transaction and security context; the upshot being that you couldn't
    use it, even if we provided support for it, which we don't.
    You also want to be shielded from all the incompatibilities between the ORB vendors, that is, you want to provide a client interface to call into an ejb, that will work irrespective of the orb the client runs. From this, I gather that you can have a 1.0 or 2.1 Tao, Visibroker, IONA, etc, orb as a
    client, so you can not use objects in the interface.
    To accomplish this, you need to do the following:
    -- design the client interface so that it is stateless
    -- design the interface so that it does not include any objects or structs... actually, you can use structs, it's just more complicated.
    -- use server side transactions only (this follows from the statelessness of the interface)
    -- either assume that ssl will be in place by the time you need it or include a token in the interface for the authenticated user
    Please, read on...
    "<=one way=>" wrote:
    This is the situation we have:
    1) We must support both C++ and Java clients that will be requesting
    services from our EJBs running in WLS. The clients are internal apps running
    in different companies and we would prefer to avoid requiring our clients to
    use an ORB by a specific vendor. At the same time we do not want to deal
    with potential problems related to the implementation differences by
    different ORB vendors. What would be the best way to handle this situation?
    We support IIOP as the transport. To call into any remote interface, you must provide a java.rmi.Remote interface, and code generate the IDL from that interface using weblogic.rmic. If you follow the above strictures, and use the -noValueTypes discussed earlier, you should be able to make progress
    without the promised examples.... or you can wait for the examples.
    >
    2) WLS documentation has the following paragraph:
    "WebLogic RMI over IIOP is the framework for EJB-to-CORBA mapping support.
    Currently, however, a standard for passing user identity -- required to
    implement EJB-to-CORBA mapping -- does not exist and the requirement for
    transaction propagation from the client is in question. While RMI over IIOP
    does allow CORBA clients to access EJBeans, the following services will not
    be available:
    EJB transaction services
    EJB security services"
    Does this mean that:
    2.1) CORBA client initiated transactions will not be supported,
    everything else (sic) will workYes.
    >
    2.2) None of the EJB security services will be available in EJB method
    called by a CORBA client (i.e. getCallerPrincipal() and isCallerInRole()
    will fail)No. The call will not fail, they will either provide values that correspond to the default or the user configured by the weblogic.iiop.user property.
    >
    >
    Thanks in advance

  • Tpcall() within a tuxedo service fails

    when i invoke tpcall() within another Tuxedo service, the call fails with code
    TPESVCFAIL. If I call this service from a standalone client, it works fine.
    I'm reallocating a new FML Buffer to pass to the call, so I'm not sure if this
    is somehow causing the service dispatcher (in main()) to not find the service
    I'm trying to call.... here is the relevant code:
    if ((trans_deposit = (FBFR*)tpalloc(FMLTYPE, NULL, 0)) == (FBFR*)NULL)
    (void)printf("Failed to allocate deposit buffer>>>>\n");
    tpreturn(TPFAIL, 0, transb->data, 0L, 0);
    } else
    printf(" allocated deposit buffer\n");
    (void)Fadd(trans_deposit, ACCOUNT_ID, &account_id, (FLDLEN)0);
    (void)Fadd(trans_deposit, TRANS_AMT, &trans_amt, (FLDLEN)0);
    (void)Fadd(trans_deposit, TRANS_DATE, open_date, (FLDLEN)0);
    if ((retc = tpcall("DEPOSIT", (char*)trans_deposit, 0L, (char**)&trans_deposit,
    &reply_len, 0)) == -1)
    printf(" error number is: %d\n", tperrno);
    printf(" error message using tperr: %s\n", tpstrerror(tperrno));
    printf("*********************\n");
    Any help is greatly appreciated.

    I checked, and it is set to Y. What is the support email, and I will send them
    an overview of what is happening....
    thanks
    John
    Peter Holditch <[email protected]> wrote:
    >
    >
    This seems a little wierd... I suggest you raise it with support.
    The only thing I can think of is that your server making the tpcall has
    REPLYQ=N set for it in the ubbconfig *SERVERS section.  It needs to be
    Y
    if a call is to work.
    I woudn't expect the symptoms you describe if that was the problem, however.
    Regards,
    Peter.
    Got a Question? Ask BEA at http://askbea.bea.com
    The views expressed in this posting are solely those of the author, and
    BEA
    Systems, Inc. does not endorse any of these views.
    BEA Systems, Inc. is not responsible for the accuracy or completeness
    of
    the
    information provided
    and assumes no duty to correct, expand upon, delete or update any of
    the
    information contained in this posting.
    john wrote:
    I found that if I call tpforward() instead, then it works. I noticedsomething
    in the documentation about specifying TPNOREPLY, is this the problemwith the
    way I was trying to do it?
    Thanks
    John
    "john" <[email protected]> wrote:
    Actually, the error code is TPENOENT, sorry.....
    "john" <[email protected]> wrote:
    when i invoke tpcall() within another Tuxedo service, the call fails
    with code
    TPESVCFAIL. If I call this service from a standalone client, it works
    fine.
    I'm reallocating a new FML Buffer to pass to the call, so I'm not
    sure
    if this
    is somehow causing the service dispatcher (in main()) to not findthe
    service
    I'm trying to call.... here is the relevant code:
    if ((trans_deposit = (FBFR*)tpalloc(FMLTYPE, NULL, 0)) == (FBFR*)NULL)
    (void)printf("Failed to allocate deposit buffer>>>>\n");
    tpreturn(TPFAIL, 0, transb->data, 0L, 0);
    } else
    printf(" allocated deposit buffer\n");
    (void)Fadd(trans_deposit, ACCOUNT_ID, &account_id, (FLDLEN)0);
    (void)Fadd(trans_deposit, TRANS_AMT, &trans_amt, (FLDLEN)0);
    (void)Fadd(trans_deposit, TRANS_DATE, open_date, (FLDLEN)0);
    if ((retc = tpcall("DEPOSIT", (char*)trans_deposit, 0L, (char**)&trans_deposit,
    &reply_len, 0)) == -1)
    printf(" error number is: %d\n", tperrno);
    printf(" error message using tperr: %s\n", tpstrerror(tperrno));
    printf("*********************\n");
    Any help is greatly appreciated.
    <html>
    <head>
    </head>
    <body>
    This seems a little wierd...  I suggest you raise it with support.<br>
    <br>
    <br>
    The only thing I can think of is that your server making the tpcall has
    REPLYQ=N
    set for it in the ubbconfig *SERVERS section.  It needs to be Y
    if a call
    is to work.<br>
    <br>
    I woudn't expect the symptoms you describe if that was the problem, however.<br>
    <br>
    Regards,<br>
    Peter.<br>
    <br>
    <p>__________________________________________________________ <br>
    Got a Question?  Ask BEA at http://askbea.bea.com
    </p>
    The views expressed in this posting are solely those of the author, and
    BEA
    <br>
    Systems, Inc. does not endorse any of these views. <br>
    BEA Systems, Inc. is not responsible for the accuracy or completeness
    of
    the <br>
    information provided <br>
    and assumes no duty to correct, expand upon, delete or update any of
    the <br>
    information contained in this posting. <br>
    ___________________________________________________________ <br>
    <br>
    john wrote:<br>
    <blockquote type="cite" cite="mid:[email protected]">
    <pre wrap="">I found that if I call tpforward() instead, then it works.
    I noticed something<br>in the documentation about specifying TPNOREPLY,
    is this the problem with the<br>way I was trying to do it?<br>Thanks<br>John<br><br>"john"
    <a class="moz-txt-link-rfc2396E" href="mailto:[email protected]"><[email protected]></a>
    wrote:<br></pre>
    <blockquote type="cite">
    <pre wrap="">Actually, the error code is TPENOENT, sorry.....<br><br>"john"
    <a class="moz-txt-link-rfc2396E" href="mailto:[email protected]"><[email protected]></a>
    wrote:<br></pre>
    <blockquote type="cite">
    <pre wrap="">when i invoke tpcall() within another Tuxedo service,
    the call fails<br>with code<br>TPESVCFAIL. If I call this service from
    a standalone client, it works<br>fine. <br>I'm reallocating a new FML
    Buffer to pass to the call, so I'm not sure<br>if this<br>is somehow
    causing the service dispatcher (in main()) to not find the<br>service<br>I'm
    trying to call.... here is the relevant code:<br><br> if ((trans_deposit
    = (FBFR*)tpalloc(FMLTYPE, NULL, 0)) == (FBFR*)NULL)<br> {<br> (void)printf("Failed
    to allocate deposit buffer>>>>\n");<br> tpreturn(TPFAIL,
    0, transb->data, 0L, 0);<br> } else<br> {<br> printf(" allocated
    deposit buffer\n");<br> }<br> (void)Fadd(trans_deposit, ACCOUNT_ID,
    &account_id, (FLDLEN)0);<br> (void)Fadd(trans_deposit, TRANS_AMT,
    &trans_amt, (FLDLEN)0);<br> (void)Fadd(trans_deposit, TRANS_DATE,
    open_date, (FLDLEN)0);<br> <br> if ((retc = tpcall("DEPOSIT", (char*)trans_deposit,
    0L, (char**)&trans_deposit,<br>&a
    mp;reply_len, 0)) == -1)<br> {<br> printf(" error number is: %d\n",
    tperrno);<br> printf(" error message using tperr: %s\n", tpstrerror(tperrno));<br>
    printf("*********************\n");<br><br>Any help is greatly appreciated.<br></pre>
    </blockquote>
    </blockquote>
    <pre wrap=""><!----><br></pre>
    </blockquote>
    <br>
    </body>
    </html>

Maybe you are looking for

  • Why can't I install Adobe Reader to my new version of windows 7?

    I up graded my computer from win dows XP to windows 7 ultimite and now I can't install my printer or Adobe Reader.when I try to install it comes up installation failed:unknown error.can someone advise me how to install this  using windows 7 ultimite?

  • Can't get [ ] brackets to work to increase or decrease

    Hi I am new to this forum. I have CS2. My C drive crashed and I had to re-format my hard drive, and re-install all of my programs. Since then, my brackets[ ] with not work to increase or decrease brush sizes. I have to use the drop-down menu to chang

  • Problem with stills - output window

    I am new to Premiero Pro. I have imported a still into my project and the preview window displays this perfectly but when I add to and play the timeline, the still image in the output window is cropped (edge's of the still dont display) The image is

  • Add Drop Shadow to JMenu Problem

    Hi, I got this code from "Swing Hacks", for some reason it does not run for me, but throws exceptions. I can not figure out why this is happening. This code straight out of the book, should be runnable. Below is the custom class, then the driver-test

  • 2 Airport extremes, one as base and one as a range extender?

    Hope someone can help. I have 2 aiport extremes n version. I want to use one as a base station (which it is already) and another as 'range extender'. Airport utility only seems to allow a set up as a base station but I just what to open up a new bit