Interfaces bloat in JMS

There are 43 interfaces in JMS api as of j2ee 1.4beta. That seems to be awful lot of interfaces to do messaging.
The "domain unification of the interfaces" in jms 1.1 is a welcome improvement, but still it's huge.
Any thoughts ?

Why, is that too many? How many do you suggest?

Similar Messages

  • COM interface for Oracle JMS MOM????

    Hello all,
    Can anyone point me to resources or any information
    of how to implement or access Oracle Java Message
    Service MOM from COM???
    Any help greatly appreciated,
    Best Regards,
    Giovanni

    Hi Giovanni,
    First off, I have very little knowledge of COM but I'll do my best to answer your question.
    There are a couple potential solutions that come to mind depending on what you're trying to do.
    1) If you can access a JVM from a COM application then you should be able to access OJMS. There is no "adapter" for
    integrating COM and OJMS.
    2) OJMS is just one of a handful of API's for accessing Oracle Advanced Queuing. If all you need to do is access AQ then you
    could use the Visual Basic interface. See Chapter 3 in the following document; http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96587.pdf
    Hope this helps...
    John

  • Calling Stored Procedure from Oracle DataBase using Sender JDBC (JDBC-JMS)

    Hi All,
    We have requirement to move the data from Database to Queue (Interface Flow: JDBC -> JMS).
    Database is Oracle.
    *Based on Event, data will be triggered into two tables: XX & YY. This event occurs twice daily.
    Take one field: 'aa' in XX and compare it with the field: 'pp' in YY.
    If both are equal, then
         if the field: 'qq' in YY table equals to "Add" then take the data from the view table: 'Add_View'.
         else  if the field: 'qq' in YY table equals to "Modify"  then take the data from the view table: 'Modify_View'.
    Finally, We need to archive the selected data from the respective view table.*
    From each table, data will come differently, means with different field names.
    I thought of call Stored Procedure from Sender JDBC Adapter for the above requirement.
    But I heard that, we cannot call stored procedure in Oracle through Sender JDBC as it returns Cursor instead of ResultSet.
    Is there any way other than Stored Procedure?
    How to handle Data Types as data is coming from two different tables?
    Can we create one data type for two tables?
    Is BPM required for this to collect data from two different tables?
    Can somebody guide me on how to handle this?
    Waiting eagerly for help which will be rewarded.
    Thanks and Regards,
    Jyothirmayi.

    Hi Gopal,
    Thank you for your reply.
    >Is there any way other than Stored Procedure?
    Can you try configuring sender adapter to poll the data in intervals. You can configure Automatic TIme planning (ATP) in the sender jdbc channel.
    I need to select the data from different tables based on some conditions. Let me simplify that.
    Suppose Table1 contains 'n' no of rows. For each row, I need to test two conditions where only one condition will be satisfied. If 1st condition is satisfied, then data needs to be taken from Table2 else data needs to be taken from Table3.
    How can we meet this by configuring sender adapter with ATP?
    ================================================================================================
    >How to handle Data Types as data is coming from two different tables?
    If you use join query in the select statement field of the channel then whatever you need select fields will be returned. This might be fields of two tables. your datatype fields are combination of two diff table.
    we need to take data only from one table at a time. It is not join of two tables.
    ================================================================================================
    Thanks,
    Jyothirmayi.

  • Missing message in JMS adapter sender

    Hi,
    we have a synchronous interface with a JMS adapter. The scenario is:
    ECC 5.0 -> XI -> MQSeries -> XI -> ECC 5.0
    We put the message in the queue MQ correctly and we get the response message. I can see this in the adapter monitoring in RuntimeWorkbench. But from this moment the message is missing. I can't see anything in the bpm monitoring (SXMB_MONI_BPE). The bpm stops in workitem receive but doesn't return any error.
    I don't know how to see where we lose the message and why.
    Thanks for advance.
    Paloma

    Hi,
    Can you see your message in SXMB_MONI? Is your BPM is in running state in sxmb_moni?
    You can double click on "PE" in sxmb_moni. It will take you to the Workflow display. Then click on button Technical details,which will show you all steps and if you expand all branches..you should be able to see your error / exception message in case if any.
    Please check n let us know the result.
    Nilesh

  • BPM-Synch to Synch Interface Communication

    Hello All  -
    My scenario is Outbound Synchronous Interface (IfOut_Synch,from JMS Adapter))->BPM->Inbound Synchronous Ingterface(PO CHNAGE BAPI).
    In BPM, I want to have Receive->Transformation(Message Mapping to BAPI)->Send steps to achieve this scenario.
    I created :
    Interface -
    1. IfOut_Synch(Synchronous Interface to get the data from JMS Adapter)
    2. AbstractRequest_Asynch(Message type=PORequest from JMS)
    3. AbstractResponse_Asynch(Message type=POResponse to JMS)
    4. AbstractRequest_Synch (Message Type=Exactly same as IfOutSynch)
    5. AbstractBAPI_Synch(Message Type=BAPI request &  BAPI Response)
    Interface Mapping -
    AbstractRequest_Synch <=> BAPI_PO_CHANGE
    In BPM:
    Containers- 
    MsgOut(type AbstractRequest_Asynch)
    MsgIn (type  AbstractResponse_Asynch)
    Receive step-
    Message=MsgOut, Mode=opens S/A Bridge, Synchronous Interface=AbstractRequest_Synch
    Transformation Step-
    Inertface Mapping=As defined above, Source message=MsgOut,Target Message=MsgIn
    Send Step-
    Mode=Close S/A bridge, Message=MsgIn, Opened by=Receive step.
    I am getting Errors in Transformation Step, EXPRESSION MUST RETURN THE INTERFACE TYPE <Source message> AND EXPRESSION MUST RETURN THE INTERFACE TYPE <Target message> .
    Pls advice, Anybody ??
    I suspect this is because the Container is the Asynchronous Type but assigned to Synchronous Interface. While, Contained does not accept the Synchronous Type of Abstract Interface.
    Thanx in Adavce....

    I'm not sure Block in (par)foreach mode is the best option for multiple synchronous calls.
    Anyway, you can always add a exception branch within your block and catch the exception from the send step. If you just want the next steps to continue, you can just do nothing in the exception branch (or maybe log an error message).
    Regards,
    Henrique.

  • Sync/Async communication with JMS Receiver

    Hi all,
    I am working on one Sync/Async model without BPM. Sender is  RFC which is expecting some response, but we know receiver jms doesnt support response message directly. For this i used modules provided by SAP.
    While developing interface i used below objects.
    One Outbound Synchronous interface--> for Sender RFC channel
    Inbound Synchronous Interface----->for Receiver JMS Channel
    outbound asynchronous interface--->for Sender JMS channel
    one request mapping and one response mapping
    Operational mapping between outbound Synchronous to inbound synchronous.
    ID Objects:
    2 sender agreements: one with sender jms channel
                                         one with sender rfc channel
    1 receiver agreement: with jms receiver channel
    1 receiver determination
    1 interface determination
    In receiver jms and sender jms channels i used modules as specified in the document http://help.sap.com/saphelp_nw04/helpdata/EN/45/20d2b4c20a0732e10000000a155369/content.htm
    But my interface is not working end to end successfully.
    Please confirm below points
    1)do i need to have other external application put response message to response queue or will the MQ automatically generates the response message and put into response queue
    2)In receiver jms channel is it ok if i will put response queue(Q2) name in the field JMS ReplyTo Queue Name or do i need to put in the form queue://<ReplyToQMgr>/<ReplyToQ>
    3). what is the format of data type for asynchronous outbound interface which i used for sender agreement of jms sender channel.
    4). Do i need to do any other special settings at MQ settings in MQ server.
    Note: i am using PI7.1 and i selected the option JMS-compliant for target client in jms channels.
    Thanks,
    Madhu
    Edited by: Madhusudana Reddy on Nov 4, 2009 9:38 AM

    1)do i need to have other external application put response message to response queue or will the MQ automatically generates the response message and put into response queue
    The following information is available in SAP note-
    Message correlation implies correlating a response message with a request message. With respect to the JMS adapter, this means that you sent have sent a message through a JMS receiver channel to some JMS queue (say queueA) , some external application processes this message and puts the response onto another JMS queue(say queueB) which is then picked up by a JMS sender channel. You need to relate this response message with the original request message.
    In the simple case, for all JMS compliant providers this can be done in a straightforward manner:
    a) In the JMS receiver channel configuration, set the JMSCorrelationID to the XIMessageID. (or some other XI header which is applicable)
    b) Ensure that your external application does not change the value of the JMSCorrelation
    c) In the JMS sender channel configuration, set the XIConversationID to the JMSCorrelationID
    d) The XIConversationID header of the response XI message now contains the XIMessageID of the request XI message.
    For some providers such as Websphere MQ in legacy/native mode this is not so straightforward.
    Do i need to do any other special settings at MQ settings in MQ server.
    If your using Websphere MQ, refer que#4 in sap note :1086303
    Edited by: nagarjuna _s on Nov 4, 2009 11:02 AM

  • Error in JMS message routing

    Hi,
    I am doing interface which send JMS messages to IDOC. JMS is sending three different messages (three XSD's) and I have created three separate interfaces as a below.
    A) Negative.xsd ; to IDOC1
    B) Positive.xsd ; to IDOC2
    C)Multiple.xsd ; to IDOC3
    When I get the Negative.xsd from JMS for the first time, Interface u2018Au2019 is executing and itu2019s creating IDOC1 successfully. When I get the Negative.xsd for the second time then the Interface u2018Bu2019 is executing (Instead of Interface u2018Au2019) and itu2019s trying to send Negative.xsd into IDOC2 and itu2019s getting fail.
    When we are getting all the three XSDu2019s at the same time then first interface u2018Au2019 is getting picked up and failed for the second (u2018Bu2019) and third (u2018Cu2019) interfaces and for first one is successful.
    Can you please guide me to pick the right interface?
    Regards,
    Kishore

    Hi, Kishore:
    In your situation, you need to configure Message Selector for your JMS sender adapter:
    1.  First you have to work with your JMS Queue system consultant, create a Property name, Saying "MsgType", its value is used to identify type of the message. e.g. the message of Positive Type put into the queue, its Property value "MsgType" can be set to "Positive"
    2.  In your JMS Communication Channel, Parameter Tab -> Advanced Tab, you need to Check " Adapter Specific Message Attribute"
    3. Then Check "Specify Additional JMS Message Properties
      Click "+" to add your property name, it should match the property name mentioned in step 1. e.g. "MsgType"
    4. In "Process" tab, you specify message Selector:
        e.g. MsgType = Positive"
    After you have done above step, this JMS adapter only pick message of the Property value "MsgType" equals to "Postive"
    You can create additonal JMS commnunication channels that polling from same queue, but only for different type of message: e.g. "Negative"
    Regards !
    Liang

  • Sharing JMS sender communication channels

    Hi all,
    We have flatfile interfaces to XI JMS where we would like to share the JMS sender communication channel.
    This is normally not possible since you cannot have two sender agreements with the same comm channel.
    Are there workarounds for sharing JMS comm channels (we cannot make use of content fields, we do no conversion). is there a way with variables perhaps?
    Thanks for any help
    Tom

    Tom
    There is an otption of send a file to multiple receivers.
    Therefore use your receiver determination to have multiple receivers and set there some condition.Thus making conditional receivers. Or have two receiver determinations.
    This might help you.
    /people/shabarish.vijayakumar/blog/2005/08/03/xpath-to-show-the-path-multiple-receivers
    /people/prasadbabu.nemalikanti3/blog/2006/03/10/bpmsingle-sender-and-multiple-receivers-based-on-synchronous-exchangeswitch-part-1
    /people/prasadbabu.nemalikanti3/blog/2006/02/27/collecting-and-bundling-vendor-records-from-different-multiple-interfaces-file-systempeoplesoft-and-sending-to-sap-r3-system-part-2
    http://help.sap.com/saphelp_nw04/helpdata/en/7d/577941761b070de10000000a1550b0/content.htm
      Pls : Reward points if helpful.
    Vishal K

  • JMS to File

    Hi
    I have gone through all the previous posts on this topic. But I am still not clear. Can anyone give me the step by step procedure for JMS to file scenario?

    Hi Arthi,
    I configured similar kind of scenario in my project.
    Here JMS is sender, File is receiver. here mq i used is Webshpere of JMS complaint
    SLD
    one third party business system would be enough for this scenario.
    IR
    1. Create a datatype similar to the structure of the message that is residing in WebsphereMQ
    2. Create messagetype (one datatype, message type would be enough)
    3. create two interfaces, outbound for jms and inbound for file
    4. create message mapping and interface mapping.
    ID
    1. Import BS  and create 2 comm channels
    2. one jms sender, one file receiver
    3. in jms sender, select WebsphereMQ( select the appropriate mq vendor)
    defualt values appear for queue connectionfactory and and queue class
    give ip address of the system on which MQ is installed, its port by default it is 1414, give queue manager name, channel name, and queue name. Remember all the characters shuld be in upper case only.  select transport protocol as tcp/ip and jms complaint. give the userid and password of the system on which this MQ is installed. all these details u can get from MQ team.
    4. create file receiver com.channel
    5. remaining steps like sender, receiver agreement and interface, reciever determination can be created.
    let me know if you have any doubts in this.
    Regards,
    Ravi.

  • OSB: JMS Foreign Server

    Hi!
    I have problem with configure BusinesService for HornetQ JMS Server.
    Connection cannot instantiate:
    <Error> <WliSbTransports> <BEA-381502> <Exception in JmsInboundMessageContext.close : javax.jms.JMSException: [JMSPool:169803]JNDI lookup of the JMS connection factory jms.WLReceiverCF failed: javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
    javax.jms.JMSException: [JMSPool:169803]JNDI lookup of the JMS connection factory jms.WLReceiverCF failed: javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
         at weblogic.deployment.jms.JMSExceptions.getJMSException(JMSExceptions.java:29)
         at weblogic.deployment.jms.JMSConnectionHelper.lookupConnectionFactory(JMSConnectionHelper.java:485)
         at weblogic.deployment.jms.JMSConnectionHelper.openConnection(JMSConnectionHelper.java:268)
         at weblogic.deployment.jms.JMSConnectionHelper.<init>(JMSConnectionHelper.java:144)
         at weblogic.deployment.jms.JMSSessionPool.getConnectionHelper(JMSSessionPool.java:517)
         at weblogic.deployment.jms.PooledConnectionFactory.createConnectionInternal(PooledConnectionFactory.java:355)
         at weblogic.deployment.jms.PooledConnectionFactory.createQueueConnection(PooledConnectionFactory.java:188)ProxyService for this foreign server work fine.
    Help please!
    Best Regards,
    lam
    Edited by: laaam on Nov 25, 2010 1:02 PM
    Edited by: laaam on Nov 25, 2010 7:52 PM

    Hi Lam,
    I have a successful configuration to JBoss JMS . My foreign server configuration is like this:
    <foreign-server name=”ForeignServer”>
    <default-targeting-enabled>true</default-targeting-enabled>
    <foreign-destination name=”A”>
    <local-jndi-name>A</local-jndi-name>
    <remote-jndi-name>queue/A</remote-jndi-name>
    </foreign-destination>
    <foreign-connection-factory name=”FConf”>
    <local-jndi-name>FConf</local-jndi-name>
    <remote-jndi-name>ConnectionFactory</remote-jndi-name>
    <username>esbuser</username>
    <password-encrypted>{3DES}90sIZwo6Llr9r73p+VXkvQ==</password-encrypted>
    </foreign-connection-factory>
    <initial-context-factory>org.jnp.interfaces.NamingContextFactory</initial-context-factory>
    <connection-url>jnp://localhost:1099</connection-url>
    </foreign-server>
    The difference I can see is the extra jndi property java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces. Can you try removing that ?
    Another try if the above doesn't work is to specify the full jms business service URI if your JBoss destination is not a secured one (if no user name/password is required to access it).
    jms://<WLSHostname>:<wls port>/jms.WLReceiverCF/jms.queue.RegisterDocumentResponse

  • JMS Windows Client

    Hi,
    I want to use JMS like the api to communicate 2 applications, but i'm having a problem because it can't find the variables for JNDI. I have been looking for a solution for this, and i have foud that this should be in a container in a server to find this variables. The problem is that the application which will use that is just a simple client installed in any computer, and not in a server so... it will not have any container or server to look for the variables.
    What should I do?
    Excuse me for my English
    Thanks in advance.

    Let's start with a JMS concept.
    JMS only specify the interface that the JMS provider should expose. Consequently, there is no constraints on how the messaging implementation is done, only how the external behavior should be. So, when dealing with a real application, you need real classes. The usual Java answer is to use a class factory. Provide an Interface to a factory and it will return the real implementation to you. In JMS, this concept goes further, with the notion of Object Store. The JMS objects used for the connection definitions, such as the connection factory, the queues and topics, are stored in a location that can be accessed using JNDI. Using this concept, the JMS application can then be reused with multiple JMS providers.
    JNDI is a simple, but powerful, mean of accessing to a persistent location (file, ldap, DB) in which you can retrieve the object definition, and use them in the application. In Open MQ, You can use the file system or ldap to store the objects. When using the application server, you can also use its JNDI.
    The specific definition on how to use the JNDI should be described in the programmer's guide or the system administrator's guide for the JMS provider you are using. If you can specify which one you are using, people on this forum may be better equipped to provide you with some guidance. Usually, the JNDI variable are set as properties for the application before making the call to JNDI.
    BTW, you do not need a "server" to use JMS. But you will need one of the machines to host the broker so that each client machines would know where to connect.
    HTH,
    TE

  • Improving Interface design

    Hi all ,
    I need your suggestions in improving the current interface design.
    We have an interface: Sending System--->(JMS Adapter) PI 7.1(IDOC) -->  (Idoc)ECC
    This is the current situation:
    Sending System sends 1 file with 1000 transactions, out of which 70% gets filtered in PI and sends nearly 300 idocs to ECC.
    Right now we have this interface for 1 company code. Few transactions should give out DELIVERY idoc and few should give out MBGMCR idocs.
    Few Fields like MESSAGECODE, MESSAGEFUNCTION, MOVETYPE, etc in the IDOCS etc.  have complex udfu2019s.
    UDFu2019s have the logic based on 6 incoming fields(companycode, Transaction, Supplier, PO,ReturnComp, DirectWithdrawal)
    2 Message mappings- one for MBGMCR and 1 for DELIVERY
    In receiver Determination.. we are doing routing based on company code.
    In Interface determination, we have a complex condition for MBGMCR (based on 5 fields)which is taking 3 times more than mapping execution time (Mapping-2 sec and Interface mapping condition check takes  6 sec).
    New Business Requirement:          
    Now the business wants us to develop a prototype which will reduce extensive testing when new conditions are added. So they want more flexible solution as this interface will be taking care of the further rollouts where new plants and conditions will be added. While adding new conditions business is worried that the existing logic shouldnu2019t be affected and retested.
    So few options which came into picture are:
    1. Maintaining a database table where a table will be updated with conditions. In PI we will do a look up to check the incoming values match the values in table and return the corresponding output values.
    Consequences: Due to large volumes sent everyday nearly 500,000 messages a day . Each msg containing 1000 transactions out of which 70% gets filtered in PI. So we expect 500,000 RFC calls will lead to performance issues in PI.
    2. Filtering Transactions on the sending system & sending some kind of flags (for transactions to be processed) which will reduce filtering in PI and save lot of system resources also. But this is not feasible from business point of view.
    So now the question is :
    Is there any other better way to avoid retest of the currently existing logic when new conditions are added .
    (keeping performance in mind.)
    Your suggestions are highly appreciated.
    (I know this a lengthy post. But Thanks for your time and for your valuable suggestions)

    While adding new conditions business is worried that the existing logic shouldnu2019t be affected and retested.
    honest opinion would be the person who does the re-config needs to be more careful and not touch the existing mapping/ routing conditions etc.
    there is no other way wherein you can say that shield part1 of the MappingA while somebody makes a new change to the same mapping.
    If your fear (or of the business') that it may happen that even existing logic is deleted while making new one then as a workaround you can suggest that we can easily retrieve the old logic (object)...at least when it comes to ESR/ IB.

  • Establishment of XA "Thread of Control" in a Tuxedo application

    Hello there,
    I am assigned the task of developing an XA compliant resource manager so that a client can use the C interface to our JMS messaging system from a Tuxedo application and have the application's transactions managed by it. The query I have here is abbout establishing the "thread of control" in a Tuxedo context. I'll set out my understanding and the particular queries that I have in the hope that you can confirm whether my understanding is correct and maybe point me in the right direction.
    The XA Specification clearly sets out the requirements for
    successful distributed transaction processing, and the important roles within this for the three participants: the application programme (AP), the resource manager (RM) and the transaction manager (TM). The key concept in XA is the Thread of Control as described in section 2.2.8 of
    the specification. Here is the paragraph describing the pivotal role that identification of thread of control has in transaction coordination:
    <quot>The thread concept is central to the TM's coordination on RMs. APs call RMs to request work
    while TMs call RMs to delineate transaction branches. The way the RM knows that a given work request pertains to a given branch is that the AP and the TM both call it from the same thread of control. For example, an AP thread calls the TM to declare the start of a global
    transaction. The TM records this fact and informs RMs. After the AP regains control it uses the native interface of one or more RMs to do work. The RM receives the calls from the AP and TM in the same thread of control.
    Certain XA routines, therefore, must be called from a particular thread.</quot>
    In developing a RM the key question is what should be used to identify thread of control so that work can be properly assigned to the correct transaction or more specifically XID. The obvious choice here is the thread identifier itself (such as would be returned by
    PRThread* PR_GetCurrentThread(void) when using the Netscape Portable Runtime library).
    As long as AP, RM and TM are all in one process this is not a difficult problem, however many threads may
    be created. It will also work for in our messaging system in the case where branches of the same transaction are executed in separate processes of this type. This is because "transaction assembly" occurs on the "server" when JMS messages are received there. A Message is assigned to a transaction on an individual basis. This also gives us the flexibility to implement various connection pooling mechanisms or use a single connection to transfer messages
    for many different transactions along with messages not participating in an XA transaction at all.
    However, Tuxedo presents a challenge as there cannot be a single thread in this sense as the participants are distributed across several processes. These processes are respectively, client; server and RM; TMS. There are at least two TMS to avoid blocking problems and potentially very many server-RMs. Given this situation how then is it possible for the RM to match up units of work requested by various services with the XIDs that it has been informed of by the TMS? One assumes that a different thread will run in the server/RM process for:
    a) TMS to indicate to RM that a transaction has started, ended, etc., one distinct thread for each of these calls.
    b) service execution, one distinct thread for each call, where there may be many of these making up
    the work of one transaction
    It is obviously preferable from our point of view that our RM should not have to use Tuxedo specific code, but if this is unavoidable then we shall have to live with it.
    BTW in case it is relevant I'm assuming that the RM will not use dynamic registration.
    Thanks for any help,
    Gillian Horne

    Gillian,
    When Tuxedo issues an xa_start() call, the matching xa_end() call will
    always be executed in the same thread of the same process.
    If another xa_start() is executed at a later point for the same transaction,
    that call could be made in a different process, in a different thread of the
    same process, or in the same thread of the same process.
    Tuxedo will call xa_end() with the TMSUSPEND|TMMIGRATE flag pair only for
    certain CORBA transactions. If your application does not use CORBA, then it
    would be acceptable to develop an RM with the TMNOMIGRATE flag set in the RM
    switch. Tuxedo does not use asynchronous XA operations, so you do not ened
    to develop an RM with the TMUSEASYNC flag set.
    The xa_prepare() call for a particular transaction branch can be made in
    different process or thread from the xa_commit() or xa_rollback() call that
    follows it.
    Except in the case of transactions started with the Tuxedo AUTOTRAN feature,
    the xa_prepare() and xa_commit() calls for a particular transaction branch
    will almost always be made in different processes from the processes that
    performed xa_start()/xa_end() calls for that transaction branch.
    There shouldn't be any need to write special RM code for Tuxedo. Popular
    RMs such as Oracle, Informix, DB2, MQ Series, and others have all been able
    to work with Tuxedo, with the former Top End product, with Encina, and with
    other transaction monitors.
    I hope this information is of help in implementing your RM.
    Ed
    <Gillian Horne> wrote in message news:[email protected]...
    Hello there,
    I am assigned the task of developing an XA compliant resource manager so
    that a client can use the C interface to our JMS messaging system from a
    Tuxedo application and have the application's transactions managed by it.
    The query I have here is abbout establishing the "thread of control" in a
    Tuxedo context. I'll set out my understanding and the particular queries
    that I have in the hope that you can confirm whether my understanding is
    correct and maybe point me in the right direction.
    The XA Specification clearly sets out the requirements for
    successful distributed transaction processing, and the important roles
    within this for the three participants: the application programme (AP), the
    resource manager (RM) and the transaction manager (TM). The key concept in
    XA is the Thread of Control as described in section 2.2.8 of
    the specification. Here is the paragraph describing the pivotal role that
    identification of thread of control has in transaction coordination:
    <quot>The thread concept is central to the TM's coordination on RMs. APs
    call RMs to request work
    while TMs call RMs to delineate transaction branches. The way the RM knows
    that a given work request pertains to a given branch is that the AP and the
    TM both call it from the same thread of control. For example, an AP
    thread calls the TM to declare the start of a global
    transaction. The TM records this fact and informs RMs. After the AP regains
    control it uses the native interface of one or more RMs to do work. The RM
    receives the calls from the AP and TM in the same thread of control.
    Certain XA routines, therefore, must be called from a particular
    thread.</quot>
    In developing a RM the key question is what should be used to identify
    thread of control so that work can be properly assigned to the correct
    transaction or more specifically XID. The obvious choice here is the thread
    identifier itself (such as would be returned by
    PRThread* PR_GetCurrentThread(void) when using the Netscape Portable Runtime
    library).
    As long as AP, RM and TM are all in one process this is not a difficult
    problem, however many threads may
    be created. It will also work for in our messaging system in the case where
    branches of the same transaction are executed in separate processes of this
    type. This is because "transaction assembly" occurs on the "server" when JMS
    messages are received there. A Message is assigned to a transaction on an
    individual basis. This also gives us the flexibility to implement various
    connection pooling mechanisms or use a single connection to transfer
    messages
    for many different transactions along with messages not participating in an
    XA transaction at all.
    However, Tuxedo presents a challenge as there cannot be a single thread in
    this sense as the participants are distributed across several processes.
    These processes are respectively, client; server and RM; TMS. There are at
    least two TMS to avoid blocking problems and potentially very many
    server-RMs. Given this situation how then is it possible for the RM to match
    up units of work requested by various services with the XIDs that it has
    been informed of by the TMS? One assumes that a different thread will run in
    the server/RM process for:
    a) TMS to indicate to RM that a transaction has started, ended, etc., one
    distinct thread for each of these calls.
    b) service execution, one distinct thread for each call, where there may be
    many of these making up
    the work of one transaction
    It is obviously preferable from our point of view that our RM should not
    have to use Tuxedo specific code, but if this is unavoidable then we shall
    have to live with it.
    BTW in case it is relevant I'm assuming that the RM will not use dynamic
    registration.
    Thanks for any help,
    Gillian Horne

  • Creating tmp files on unix servers root while reading from MQ?

    Hi All,
    I have developed a interface in ODI for extracting messages from MQ and loading into oracle tables.
    recently i have observed that ,some temp file are creating with names start with "jms*" on my servers root directory (i.e /tmp).
    not getting any idea why these files are creating? load Knowledge module using for this interface is "Load JMS to SQL" with following important options
    JMS_COMMIT     <Default>:Yes
    TRUNCATE WORK TABLE     Yes
    DELETE_TEMPORARY_OBJECTS     No
    JMSDELIVERYMODE     <Default>:
    JMSEXPIRATION     <Default>:
    JMSPRIORITY     <Default>:
    JMSPRIORITY     <Default>:
    MESSAGESELECTOR     <Default>:
    SENDMESSAGETYPE     <Default>:
    JMSTYPE     <Default>:
    CLIENTID     <Default>:MySubscriber
    Here i have following questions
    Does ODI creates files on server or not? if yes how can i change file creation location ?
    is there any issues with my configuration,so that files are creating? if yes how can resolve this issue?
    Please let me as soon as possible, because we are getting this error prod environment?
    Thanks,
    Vinay

    Any updates on this please?
    Thanks,
    Vinay

  • ABAP Table for DynamicConfiguration details of XML message in SXMB_MONI

    Dear All
    I have a requirement where I have to read the value from DCJMSCorreleationID property of message which is recorded in SXMB_MONI based on the SAP PI message ID.
    I have 2 interfaces as below
    Interface one (INT1) : JMS-PI-ECC --->Inbound interface to ECC when message is received on PI it will have DCJMSCorreleationID populated with some ID as shown below
    Go to SXMB_MONI -->Inbound Message ---> SOAP Header --->DynamicConfiguration
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <SAP:DynamicConfiguration SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    <SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">
    a26c4276-9d5e-11e3-ba87-000004238292
    </SAP:Record>
    <SAP:Record namespace="http://sap.com/xi/XI/Message/30/general" name="senderAgreementGUID">dd3fb7c6b983314293e14ba59df1ad45</SAP:Record></SAP:DynamicConfiguration>
    Interface Two (INT2):-ECC-PI-JMS----> Outbound from ECC where I am passing a SAP PI Message ID for INT1 in one of the field
    Can I read this DCJMSCorreleationID for INT1 when INT2 is executed and have message ID for INT1 ?
    Where are these SOAP hearder porperties like DCJMSCorreleationID are stored on ABAP table?

    Thanks Jörg for your reply
    I have a back up plan for ZTable approach but the only concern there is RFC calls for read and write
    we have implemented a FM which gives the original payload using a std SAP functional modules FM SXMB_GET_XI_MESSAGE_INT and  ECATT_CONV_XSTRING_TO_STRING
    But I am looking for the SOAP Header information for DCJMSCorreleationID
    So if there is anything which will help to read this DCJMSCorreleationID property easily form existing message SOAP header is really helpful

Maybe you are looking for

  • Java Stored Procedure with LOB as input parameter (oracle 9i 9.2.0.6)

    Hi, Is there a way to pass CLOB as input and output as part of java stored proceudre in oracle 9i (9.2.0.6)? I have to perform some data conversion on the CLOB data in java program and return the converted CLOB as output. --Ramesh Lokineni           

  • Caller Can't Hear Me

    For some reason, I can receive a call and get in just enough time to say Hello before the caller can't hear me at all. It doesn't drop the call, simply silences me. I have never had this problem and haven't dropped my phone on anything hard. My firmw

  • BSP - Webdocuments

    <b>Webdocument is a BSP</b>,which is used to retrieve data from <b>SAP - DMS(Document Management System) which comes under SAP - PLM(Product Lifecycle Management).</b> Can anyone Help me out in how to call & activate the webdocuments. Awaiting your r

  • How to add properties to Channels in Portal Server 7

    hi, When in the Portal Server Console in the Manage Containers and Channels section I can easily edit the properties for the configured items. Now I want to add a property to, let's say, the SearchProvider or the preconfigured Search of the Developer

  • Will Airplay via Mountain Lion work on 2 GHz Intel Core 2 Duo (mid 2007)  iMac

    One of the main reasons I would purchase OS X Moutain Lion is for its AirPlay feature, in particular to stream Hulu from my iMac to my Apple TV 2.  In reading some of the preliminary reviews of Moutain Lion, AirPlay is not supported on older MacBook