JMS Provider vs. JMS Connector

Hi
can any1 explain me diffrenteces between those 2 ?
is it related to JMS Adapter there is 2 option likes MQ Series and JNDI one of them goes to the other?
thx,Shai

Hi,
>> JMS Adapter there is 2 option likes MQ Series and JNDI one of them goes to the other?
   YES , They are the 2 options.
>> one of them goes to the other?
NO
JMS Provider-  Server
JMS connector - use such objects in the application, instead of creating and configuring these object
This will help you
http://help.sap.com/saphelp_nw04/helpdata/en/a3/63af1bbf09469fa1615c05f0daff6f/frameset.htm
Regards
Agasthuri Doss

Similar Messages

  • JMS Connector ReceiverThreads setting in 10.1.3.3 to improve performance?

    Gurus,
    I am using nonBlockingInvoke=true property in bpel.xml to spawn a thread for each parallel flow activity.
    However, upon setting this property, I found a hit in performance. I suspect the JMS Connector ReceiverThreads setting to be the issue. If more ReceiverThreads could listen on the queue, the performance might improve. (Page 47 of the 10.1.3.1. Performance Tuning Document).
    But, I'm not able to locate this property in orion-ejb-jar.xml. Is this property set in some other file or does this property have to be added (please can you provide the exact code)?
    Thanks a ton!
    SP

    You can find ReceiverThreads documentation here:
    http://download.oracle.com/docs/cd/B32110_01/web.1013/b28958/jms.htm
    (Table 4-11)
    There are examples above the table which show how to add a property.
    (A property can be added either to orion-ejb-jar.xml or ejb-jar.xml though if you are setting the property via an .xml file orion-ejb-jar.xml is recommended since this is an OC4J-specific setting.)
    Alternatively, you can set it via annotation. See here:
    http://download.oracle.com/docs/cd/B32110_01/web.1013/b28221/actcfgprop.htm

  • JMS Connector WebSphere MQ JMS Problems

    I'm having problems configuring and using Oracle's JMS Connector with IBM WebSphere MQ JMS, as explained in the following Oracle How-to:
    http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-connect-to-mqseries/doc/how-to-connect-to-mqseries.html
    by Jeff Steidl
    When trying to deploy the application to the oc4j (wich is done as part of the default ant target), I get the following error in the oc4j console:
    2006-07-20 12:04:29.859 ERROR J2EE EJB3027 [how-to-connect-to-mqseries] An error
    occured deploying EJB module: java.lang.InstantiationException: Resource except
    ion(MQJMSRAInstanceName) for MessageDrivenBean DealerEjbName during endpoint act
    ivation: failure looking up resource provider factory for XAConnectionFactoryWra
    pper [XA Unified]-OracleGJRA.XAConnectionFactoryWrapper.pedroec.-7b007002:10c88d
    48c98:-7fff.171 []: javax.resource.spi.ResourceAdapterInternalException: Looking
    up java:comp/resource/MQJMSReference/mqxacf: javax.naming.NameNotFoundException
    : No resource named 'MQJMSReference/mqxacf'found
    I assume the problem is that I don't have an appropriate WebShpere binding for the resource.
    Before going through the mentioned How-to, I followed the install instructions in:
    http://www.oracle.com/technology/tech/java/oc4j/1003/how_to/jcajmsmq/doc/Install.html
    In order to create a queue manager, a queue, a topic and the appropriate bindings.
    After following the previous document, I end up with the following bindings (listing obtained using JMSAdmin console):
    InitCtx> dis ctx
    Contents of InitCtx
    .bindings java.io.File
    a MQXAQCF com.ibm.mq.jms.MQXAQueueConnectionFactory
    a MQTCF com.ibm.mq.jms.MQTopicConnectionFactory
    a MQQCF com.ibm.mq.jms.MQQueueConnectionFactory
    a MQQ com.ibm.mq.jms.MQQueue
    a MQT com.ibm.mq.jms.MQTopic
    a MQXATCF com.ibm.mq.jms.MQXATopicConnectionFactory
    7 Object(s)
    0 Context(s)
    7 Binding(s), 6 Administered
    And as you can see there is no mqxacf binding.
    So the question is, should I define a new binding with that name? If so, what would be the command (def xacf(mqxacf) ?)
    As you can see, ther is a MQXAQCF binding so Instead of defining a new mqxacf (which I really don't know how to do...) I thought that maybe I could use this one, being a xa queue connection factory instead of a plain xa connection factory.
    This is used by the MDB, so I modified orion-ejb-jar.xml changing:
    <resource-ref-mapping
    location = "MQJMSRASubcontext/MyXACF"
    name = "jms/DealerConnectionFactory"/>
    <config-property>
    <config-property-name>ConnectionFactoryJndiName
    </config-property-name>
    <config-property-value>MQJMSRASubcontext/MyXACF
    </config-property-value>
    </config-property>
    for this:
    <resource-ref-mapping
    location = "MQJMSRASubcontext/MyXAQCF"
    name = "jms/DealerConnectionFactory"/>
    <config-property>
    <config-property-name>ConnectionFactoryJndiName
    </config-property-name>
    <config-property-value>MQJMSRASubcontext/MyXAQCF
    </config-property-value>
    </config-property>
    I changed MyXACF with MyXAQCF because oc4j-ra.xml defines a jndi location of mqxacf (which is not beign found in the bindings) for MyXACF while it defines a jndi location of MQXAQCF for MyXAQCF, which is defined in the bindings.
    With this change, the application deploys ok ... but when I run the client (ant larry) I get the following error (from the client console, not the oc4j console... in the oc4j console, nothing is reported):
    run-demo:
    [exec] java.lang.NullPointerException
    [exec] at oracle.j2ee.ra.jms.generic.RAUtils.lookupUsingResourceProvide
    r(RAUtils.java:254)
    [exec] at oracle.j2ee.ra.jms.generic.CommonManagedConnectionFactoryImpl
    .getFactory(CommonManagedConnectionFactoryImpl.java:605)
    [exec] at oracle.j2ee.ra.jms.generic.CommonFactoryWrapper.localCreateCo
    nnection(CommonFactoryWrapper.java:121)
    [exec] at oracle.j2ee.ra.jms.generic.ConnectionFactoryWrapper.createCon
    nection(ConnectionFactoryWrapper.java:62)
    [exec] at MyChannel.<init>(MyChannel.java:46)
    [exec] at Player.play(Player.java:242)
    [exec] at Player.main(Player.java:30)
    Since MyCF is bound to the jndi location mqcf (in oc4j-ra.xml) which does not exist in my MQ bindings I decided to modify orion-ejb-jar.xml as I did for the MyXACF of the MDB.
    I changed
    <resource-ref-mapping
    location = "MQJMSRASubcontext/MyCF"
    name = "jms/PlayerConnectionFactory"/>
    with this:
    <resource-ref-mapping
    location = "MQJMSRASubcontext/MyQCF"
    name = "jms/PlayerConnectionFactory"/>
    I changed MyCF to MyQCF, which has a jndi location of MQQCF (specified inside of oc4j-ra.xml) which has a valid MQ binding.
    .... but I get the following error:
    run-demo:
    [exec] Exception in thread "main" java.lang.AbstractMethodError: com.ibm.mq
    .jms.MQQueueConnectionFactory.createConnection()Ljavax/jms/Connection;
    [exec] at oracle.j2ee.ra.jms.generic.CommonManagedConnectionFactoryImpl
    .createManagedConnection(CommonManagedConnectionFactoryImpl.java:261)
    [exec] at com.evermind.server.connector.ApplicationConnectionManager.cr
    eateManagedConnection(ApplicationConnectionManager.java:1333)
    [exec] at oracle.j2ee.connector.ConnectionPoolImpl.createManagedConnect
    ionFromFactory(ConnectionPoolImpl.java:324)
    [exec] at oracle.j2ee.connector.ConnectionPoolImpl.access$800(Connectio
    nPoolImpl.java:95)
    [exec] at oracle.j2ee.connector.ConnectionPoolImpl$NonePoolingScheme.ge
    tManagedConnection(ConnectionPoolImpl.java:1209)
    [exec] at oracle.j2ee.connector.ConnectionPoolImpl.getManagedConnection
    (ConnectionPoolImpl.java:782)
    [exec] at com.evermind.server.connector.ApplicationConnectionManager.ge
    tConnectionFromPool(ApplicationConnectionManager.java:1532)
    [exec] at com.evermind.server.connector.ApplicationConnectionManager.ac
    quireConnectionContext(ApplicationConnectionManager.java:1477)
    [exec] at com.evermind.server.connector.ApplicationConnectionManager.al
    locateConnection(ApplicationConnectionManager.java:1423)
    [exec] at oracle.j2ee.connector.OracleConnectionManager.unprivileged_al
    locateConnection(OracleConnectionManager.java:244)
    [exec] at oracle.j2ee.connector.OracleConnectionManager.allocateConnect
    ion(OracleConnectionManager.java:198)
    [exec] at oracle.j2ee.ra.jms.generic.CommonFactoryWrapper.localCreateCo
    nnection(CommonFactoryWrapper.java:130)
    [exec] at oracle.j2ee.ra.jms.generic.QueueConnectionFactoryWrapper.crea
    teConnection(QueueConnectionFactoryWrapper.java:84)
    [exec] at MyChannel.<init>(MyChannel.java:46)
    [exec] at Player.play(Player.java:242)
    [exec] at Player.main(Player.java:30)
    [exec] Result: 1
    So as you can see I'm stuck.
    Maybe it is just a simple matter of defining the appropriate objects and bindigs for mqxacf and mqcf, but I don't know how to do that.
    I would appreciate any help.
    Message was edited by:
    pablokrause

    Thanks again for your quick and useful response Jeff.
    Regarding the extra administration steps to get topic consumers working in MQ, I had already executed them a few days ago as part of the MQ setup as is described in another JMS resource adapter demo (see references at bottom of this reply) but I thought that doing it once was enough. Well, it seems that you have to execute those commands each time you start MQ!
    I executed them (again), as you kindly suggested in your last response and voila, it worked!... well sort of.
    After starting the clients, I get the following random error in oc4j:
    06/07/21 15:39:18 Got message: PING
    06/07/21 15:39:18 randomly testing rollback:
    06/07/21 15:39:18 sending a junk message
    06/07/21 15:39:18 Sent message: Invalid junk message
    06/07/21 15:39:18 marking transaction for rollback
    06/07/21 15:39:18 sending a junk message
    06/07/21 15:39:18 Sent message: Invalid junk message
    2006-07-21 15:39:18.921 WARNING J2EE JTA0107 Error in resource driver during rol
    lback: javax.transaction.xa.XAException: XA operation failed, see errorCode
    2006-07-21 15:39:18.921 WARNING J2EE JTA0104 Failed to add the resource due to e
    rror in the resource : javax.transaction.xa.XAException: Attempt to start transa
    ction while transaction Xid( Global Id c0.a7.ff.20.b0.22.00.00.0c.00.00.00.00.00
    .00.00.00.00.00.00.00.00.00.00, Format Id 4660, Branch Id 7d.20.c6.d9.00.00.00.0
    0.00.00.00.00.00.00.00.00) is active. errorcode : -6 : Enlistment of resource fa
    iled. Attempt to start transaction while transaction Xid( Global Id c0.a7.ff.20.
    b0.22.00.00.0c.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00, Format Id 4660, Bra
    nch Id 7d.20.c6.d9.00.00.00.00.00.00.00.00.00.00.00.00) is active.
    followed, after a few seconds, by the following stack trace:
    06/07/21 16:13:30 Got message: PING
    06/07/21 16:13:30 MQJMS3011: Failed to publish message to MQ queue
    06/07/21 16:13:30 javax.jms.JMSException: MQJMS3011: Failed to publish message t
    o MQ queue
    06/07/21 16:13:30 at com.ibm.mq.jms.services.ConfigEnvironment.newExceptio
    n(ConfigEnvironment.java:553)
    06/07/21 16:13:30 at com.ibm.mq.jms.MQMessageProducer.publish(MQMessagePro
    ducer.java:1855)
    06/07/21 16:13:30 at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProduc
    er.java:976)
    06/07/21 16:13:30 at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProduc
    er.java:1056)
    06/07/21 16:13:30 at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.send
    (CommonProducerWrapper.java:121)
    06/07/21 16:13:30 at MyChannel.send(MyChannel.java:73)
    06/07/21 16:13:30 at Dealer.onMessage(Dealer.java:210)
    06/07/21 16:13:30 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M
    ethod)
    06/07/21 16:13:30 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMet
    hodAccessorImpl.java:39)
    06/07/21 16:13:30 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Deleg
    atingMethodAccessorImpl.java:25)
    06/07/21 16:13:30 at java.lang.reflect.Method.invoke(Method.java:585)
    06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.joinpoint.EJBJoin
    PointImpl.invoke(EJBJoinPointImpl.java:35)
    06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.InvocationContext
    Impl.proceed(InvocationContextImpl.java:69)
    06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.system.DMSInterce
    ptor.invoke(DMSInterceptor.java:52)
    06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.InvocationContext
    Impl.proceed(InvocationContextImpl.java:69)
    06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.system.SetContext
    ActionInterceptor.invoke(SetContextActionInterceptor.java:34)
    06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.InvocationContext
    Impl.proceed(InvocationContextImpl.java:69)
    06/07/21 16:13:30 at oracle.j2ee.connector.messageinflow.MessageEndpointIm
    pl.invokeMessageInflowCallbacks(MessageEndpointImpl.java:294)
    06/07/21 16:13:30 at MessageListener_MessageEndpoint1.onMessage(MessageLis
    tener_MessageEndpoint1.java:39)
    06/07/21 16:13:30 at oracle.j2ee.ra.jms.generic.WorkConsumer.run(WorkConsu
    mer.java:237)
    06/07/21 16:13:30 at oracle.j2ee.connector.work.WorkWrapper.runTargetWork(
    WorkWrapper.java:242)
    06/07/21 16:13:30 at oracle.j2ee.connector.work.WorkWrapper.doWork(WorkWra
    pper.java:215)
    06/07/21 16:13:30 at oracle.j2ee.connector.work.WorkWrapper.run(WorkWrappe
    r.java:190)
    06/07/21 16:13:30 at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worke
    r.run(PooledExecutor.java:814)
    06/07/21 16:13:30 at java.lang.Thread.run(Thread.java:595)
    In the Dealer code, I found a piece of code that randomly generating a junk message and marking the transaction for rollback. If I comment out this code, everything works fine.
    So, even when I managed to make the demo work, the transactional stuff is not working.
    It would be really nice to know what is going on, but I'm tired, its fiday and I'm clueless...
    Now, for the "Unable to load message properties file - mqji(xx).properties", it is still showing up, but as you said, MQ seems to work fine.
    Thank you very much again Jeff for your invaluable and extremely responsive help.
    References:
    I can't seem to find an demo that was very useful for me for setting up MQ in the Oracle site, but the direct links seem to still be working:
    http://www.oracle.com/technology/tech/java/oc4j/1003/how_to/jcajmsmq/doc/readme.html
    http://www.oracle.com/technology/tech/java/oc4j/1003/how_to/jcajmsmq/doc/Install.html
    and the sample code and scripts:
    http://otn.oracle.com/tech/java/oc4j/1003/how_to/jcajmsmq.zip
    Message was edited by:
    pablokrause

  • How to Configure and Use Oracle's JMS Connector with Tibco EMS

    Jeff,
    I am getting the below exception while try to do the deployment of the sample provided on 'How to Configure and Use Oracle's JMS Connector with Tibco Enterprise for JMS'
    While deployment not able to get the 'TibcoJMSReference',
    As I understand in the 'orion-application.xml for the below, unable to get the instance. Could you adivce how I can enable the trace more?
    <resource-provider class="com.evermind.server.deployment.ContextScanningResourceProvider" name="TibcoJMSReference">
    could you help to resolve the issue?
    Error
    Operation failed with error: No resource named 'TibcoJMSReference/TibcoXACF'found

    Hi,
    I'm also looking for the same 'Configure and Use Oracle's JMS Connector with Tibco JMS to consume message'. If you have already implemented and working fine, please let me know the steps and some documents.

  • Does Weblogic7.0 supports JMS-connector

              HI,
              I am not sure about this. please someone gives some insights..
              As in the connector specifications 1.0 IN chapter 5 (Connection Management) it
              is written
              "An application component uses a connection factory to access a connection instance,
              which the component then uses to connect to the underlying EIS. A resource adapter
              acts as a factory of
              connections. Examples of connections include database connections, JMS (Java Message
              Service) connections, and SAP R/3 connections. Note that the support for pluggability
              of JMS providers into an application server will be added in the future versions
              of the specification."
              And i think weblogic7.0 supports connector specifications 1.0 only. please someone(may
              be from BEA) can tell that what is the truth. Can i develope a JMS connector and
              deploy/run on weblogic7.0.
              Regards
              Akhil Nagpal
              

    I'm going to get a bit carried away with my answer:
              I'm not aware of any work going on in the area of JMS connectors, and I
              don't think they are supported in 7.0. I'm really not conversant
              - you will likely get a better answer from the
              weblogic.developer.interest.connector newsgroup.
              Note that MDBs and the messaging bridge already cache their
              underlying connections efficiently -- so
              there is no need for a connector there. Also most J2EE applications
              can programmitically cache their JMS resources somewhere handy
              in an EJB. (There is no performance hit for an unused
              JMS object, except for memory usage.)
              But if you need to pool JMS resources, consider writing your own
              pool - there isn't much to it. Check the sample code at the end of
              the "JMS Performance Guide" white-paper on dev2dev.bea.com.
              If you can wait, Weblogic 8.1 (beta out soon) has a simple way
              to automatically pool JMS connections via ejb resource references.
              Hope this helps,
              Tom
              Akhil Nagpal wrote:
              > HI,
              > I am not sure about this. please someone gives some insights..
              > As in the connector specifications 1.0 IN chapter 5 (Connection Management) it
              > is written
              > "An application component uses a connection factory to access a connection instance,
              > which the component then uses to connect to the underlying EIS. A resource adapter
              > acts as a factory of
              > connections. Examples of connections include database connections, JMS (Java Message
              > Service) connections, and SAP R/3 connections. Note that the support for pluggability
              > of JMS providers into an application server will be added in the future versions
              > of the specification."
              >
              >
              > And i think weblogic7.0 supports connector specifications 1.0 only. please someone(may
              > be from BEA) can tell that what is the truth. Can i develope a JMS connector and
              > deploy/run on weblogic7.0.
              >
              > Regards
              > Akhil Nagpal
              >
              >
              >
              

  • XA transactions with JMS connector (with BEA WLS)

    Hello,
    are XA transactions supported by JMS connector when communicating with BEA WLS (version 8.1)?
    Thanks
    Tomas

    Hi
    Yes
    Check this JMS FAQ
    http://www.google.com/url?sa=t&ct=res&cd=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fsdn%2Fgo%2Fportal%2Fprtroot%2Fdocs%2Flibrary%2Fuuid%2F604e2b64-e689-2910-64b3-ffd650f83756&ei=LcmERubLL4fgsALL6snWDw&usg=AFQjCNHbiooj-7G5g6w4tVVZQiRuQ5XQ_A&sig2=tpxbhUpIKR5oSe3aab8h4w
    regards
    krishna

  • How to Configure and Use Oracle's JMS Connector with Tibco Enterprise

    Following the advice here: http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-connect-to-tibco/doc/how-to-connect-to-tibco.html
    I believe I need to provide a username and password for the Tibco JMS provider, and would like to know the correct way. Is this right, in orion-application.xml
        <resource-provider class="com.evermind.server.deployment.ContextScanningResourceProvider" name="TibcoJMSReference">
            <property
                name="java.naming.factory.initial"
                value="com.tibco.tibjms.naming.TibjmsInitialContextFactory">
            </property>
            <property
                name="java.naming.provider.url"
                value="tibjmsnaming://jleinawe-sun:7222">
            </property>
      <property name="java.naming.security.principal" value="user" />
      <property name="java.naming.security.credentials" value="password" />
        </resource-provider>

    This is kind of up to Tibco...
    When you add properties to the resource-provider element, you are just adding entries to a Map which gets passed to the initial context factory, which in this case is implemented by Tibco (TibjmsInitialContextFactory), so you may want to check their docs.
    It's possible they only use that for username/password for JNDI access purposes and not for JMS. If so, you can explicitly set username/password for outbound connections in the oc4j-ra.xml file, and using ResUser/ResPassword in the MDB's activation-spec to set username/password for inbound connections.
    -Jeff

  • Unable to Save more than 1 Business-object-provider for the Connector.

    I m using MEP 1.0 Platform.
    My Ecbo Connector "BankDb" had initially "Account" Object Provider which i was able to save successfully via the MEP console.Later on i added the "Statement" Object Provider to the same connector. But i get this Exception
    java.lang.IllegalArgumentException: Object:
    {[[email protected]f,
    [email protected]55,
    [email protected]f,
    [email protected]c,
    [email protected]2,
    [email protected]d,
    [email protected]9]} is not a known entity type.
    I shut down my Server & then restarted it.i removed the AccountObject Provider & Added StatementObject Provider instead & clicked save & it saved my Connector Successfully But when i tried to add the AccountProvider too i get the same exception.In short i am unable to save both providers at the same time in the console.
    I googled later on & found something Similar on java.net
    https://glassfish.dev.java.net/issues/show_bug.cgi?id=3235
    I am not sure about all of this as i am just a beginner.
    Please Help
    Thx in Advance
    Alex.

    Hello, thanks for your interest in the GlassFish Mobility Platform. The ECBO architecture supports exactly one business-object-provider per connector. You could combine your account and statement data into a single composite business object. You could also upgrade to MEP 1.1 and use the dynamic data feature (JerseyME) on the client to retrieve dynamic data such as the statement report and use the business-object-provider for the synchronized data, ie. the account activity. For more information see the [Sun GlassFish Mobility Platform 1.1 Developer's Guide for Enterprise Connectors|http://docs.sun.com/app/docs/doc/820-7207] .
    regards,
    Hans

  • How to integrate Websphere MQ as an external JMS Provider?

    Hello to all!
    I'm trying to integrate Websphere MQ in SAP Web AS 6.40 as an external JMS provider and I'm having some problems. As the use of SAP XI is impossible for me, I started using the built-in JMS Connector.
    I've already read (and tried to follow) the documentation in http://help.sap.com/saphelp_nw04/helpdata/en/cd/4d4941abbb4c0de10000000a1550b0/frameset.htm, but unfortunately, it didn't help me that much.
    It told me that the JMS Connector is the right place to start, and I already managed to deploy and define the Websphere MQ JMS implementation as a library. And from various examples I'm quite sure that Websphere MQ is an JNDI based JMS provider. But now the problems start.
    According to the SAP library mentioned above, I have to enter the JNDI name to the ConnectionFactory in the "New ConnectionFactory" dialogue in the "Provider" tab. As an example there is the (existing) JNDI name "jmsfactory/default/TopicConnection". For doing the same with my Websphere MQ, I expect to need something alike.
    Hoping that I'm getting the SAP library right at this point, I'm expecting to need a JNDI entry, like, let's say, "jmsfactory/WebsphereMQ/QueueConnection" connected to the class "com.ibm.mq.jms.MQConnectionFactory" (MQConnectionFactory is the class in the MQ JMS implementation that implements the JMS interface "Connection Factory"). How can I put those Websphere MQ classes, that are implementing the JMS interfaces like Connection Factory, QueueConnectionFactory and so on
    in my JNDI tree? The point is, obviously, no JNDI entry was made during deploying Websphere MQ as a library.
    Or am I totally wrong an misunderstood the SAP library completely? Any help on this topic would be highly appreciated.
    Best greetings!
    Bärbel

    Integrating WebSphereMQ with SAP Web Application Server
    Prerequisites
    The native libraries of WebSphereMQ must be added to the environment variables of the host or hosts where the SAP Web AS is running. Typically, if MQ is installed on the same host, the required entries are added to the environment at installation. However, we recommend that you check the MQ documentation for details about the directory where the libraries are located, and make sure it is added to the environment on all hosts with SAP Web AS.
    For example, for Windows OS the following libraries are required:
    -     amqmtmgr.dll
    -     amqvwaa2.dll
    -     amqxcs2.dll
    -     amqxcsn.dll
    -     amqzc.dll
    -     amqzsai.dll
    -     amqzst.dll
    -     amqztm.dll
    -     mqjbdf02.dll
    -     mqjbnd05.dll
    -     mqm.dll
    -     mqmvxd.dll
    -     mqmxa.dll
    -     MQXAi02.dll
    Procedure
    1)     If the version of the SAP Web AS is SP 7 or lower, you must apply a patch for the JMS Connector Service. The required SDA is attached to this e-mail (jmsconnector.sda). To apply it:
    a.     Run the SDM Remote GUI tool. It is located in <SAP_install_dir>\SAPSID\<Instance_ID>\SDM\program.
    b.     In the Deployment tab, add the jmsconnector.sda to the deployment list. Choose   Show Deployment Configuration. Select Update deployed SDAs/SCAs that have any version (this ensures that you will have the SDA deployed even if for some reason its timestamp is older than the one of the SP7 SDA that you already have deployed.)
    c.     Deploy the SDA following the standard deployment procedure. If prompted to choose if you want to delegate the control to the SDM server, choose Yes. The SDM shuts down the cluster, deploys the SDA, and then restarts the cluster.
    2)     Create the IBM MQ library. You can do it using either Visual Administrator or SAP NetWeaver Developer Studio.
    a.     Visual Administrator:
    i.     Go to Services -> JMS Connector.
    ii.     Select JMS Libraries, and choose New.
    iii.     Enter a name for the library, such as MQJMSLIB.
    iv.     Browse to select the following JAR files:
    - com.ibm.mq.jar
    - com.ibm.mqbind.jar
    - com.ibm.mqjms.jar
    - fscontext.jar
    - ldap.jar
    - postcard.jar
    - provider.xml
    - providerutil.jar
    v.     Deploy the library.
    vi.     Go to Services -> Configuration Adapter. In the configuration tree on the right-hand side of the screen browse to cluster_data -> server -> cfg -> ext -> MQJMSLIB-provider.xml. Switch to edit mode using  . Open the XML for editing using  . Add the following entry (after the reference entry for jms):
    <reference type="library" strength="weak">j2eeca</reference>
    Choose OK and restart the cluster to apply the changes.
    b.     SAP NetWeaver Developer Studio:
    i.     Create a J2EE Library project.
    ii.     Select the project and choose File -> Import -> File System. Browse to the MQ folder, which contains the JAR files listed above, and select to import them.
    iii.     Extend the tree of your library project and open server/provider.xml. Go to the Jars tab.
    iv.     Select Jars, and choose Add. Choose to add the JAR files that you have imported in the previous step.
    v.     Go to the References tab. Select References, and choose Add. Choose Select library/interface/service. In the list select jms and j2eeca.
    vi.     Save and close provider.xml. From the context menu of the library project choose Build Library Archive.
    vii.     Select the SDA in the project tree, open its context menu, and choose Deploy to J2EE Engine.
    3)     Create a JMS Connector Factory in Visual Administrator.
    You can either enter the required values directly in the Visual Administrator (Services -> JMS Connector), or you can edit the following sample deployment descriptors and import them in Visual Administrator using  .
    a.     Using JNDI:
    This is example of factories.xml using JNDI based JMS provider.
    <?xml version="1.0" encoding="UTF-8" ?>
      <jms-factories>
        <application-name>
          IBM_Test_App
        </application-name>
        <connection-factory>
          <library-name>
            MQJMSLIB
          </library-name>
          <factory-name>
            IBM_Queue_Factory
          </factory-name>
          <context-factory-type>
    <!—This factory should already exist on WebSphereMQ.-->
            <link-factory-name>
              QCF_1
            </link-factory-name>
            <initial-context-factory>
              com.sun.jndi.fscontext.RefFSContextFactory
            </initial-context-factory>
            <provider-url>
              file:/C:/JNDI-Directory
            </provider-url>
            <security-principal>
            </security-principal>
            <security-credentials>
            </security-credentials>
          </context-factory-type>
        </connection-factory>
      </jms-factories>
    b.     Using object factory JMS provider
    <?xml version="1.0" encoding="UTF-8" ?>
      <jms-factories>
        <application-name>
          IBM_Test_App
        </application-name>
        <connection-factory>
          <library-name>
            MQJMSLIB
          </library-name>
          <factory-name>
            IBM_Queue_Factory
          </factory-name>
          <object-factory-type>
            <object-factory-name>
              com.ibm.mq.jms.MQXAQueueConnectionFactoryFactory
            </object-factory-name>
            <class-name>
              com.ibm.mq.jms.MQXAQueueConnectionFactory
            </class-name>
            <properties>
              <property>
                <property-name>
                  HOST
                </property-name>
    <!-- JMS Provider host name -->
                <property-value>
                  localhost
                </property-value>
              </property>
              <property>
                <property-name>
                  QMGR
                </property-name>
    <!-- Queue Manager -->
                <property-value>
                  MQ_default
                </property-value>
              </property>
              <property>
                <property-name>
                  PORT
                </property-name>
    <!-- JMS Provider port number -->
                <property-value>
                  1414               
                </property-value>
              </property>
              <property>
                <property-name>
                  TRAN
                </property-name>
    <!-- Transport type -->
                <property-value>
                  1                    
                </property-value>
              </property>
            </properties>
          </object-factory-type>
        </connection-factory>
      </jms-factories>
    4)     Use the connection factory in an application:
    Code:
    Context ctx = new InitialContext();
    Object ref = ctx.lookup("java:comp/env/IBM_Queue_Factory");
    QueueConnectionFactory f = (QueueConnectionFactory)ref;
    QueueConnection connection = f.createQueueConnection();
    Resource references:
                     <resource-ref>
              <res-ref-name>
                IBM_Queue_Factory
              </res-ref-name>
              <res-type>
                javax.jms.QueueConnectionFactory
              </res-type>
              <res-auth>
                Container
              </res-auth>
            </resource-ref>
    If you are using 6.40 SP7 or below let me know to send you a patch.
    Regards Nikola

  • Using external JMS  provider

    I am trying to use Tibco EMS as an external jms provider.
    I created new factory (named TibcoFN) in JMSConnector service using visual administrator
    Then I deployed and started it without any visible problem.
    Then I created reference in a web.xml file of web application.
    When I am calling lookup of initial context I always get naming exception.
    What steps am I missing?
    Piya

    I am trying to use ActiveMQ as my external JMS provider and having a hard time doing so.  I've deployed the activemq jar file in the JMS Connector service > library, and defined jms-factories.xml like:
    <?xml version="1.0" encoding="UTF-8" ?>
    <jms-factories>
      <connection-factory>
        <factory-name>jms/ConnectionFactory</factory-name>
        <library-name>activemq</library-name>
        <context-factory-type>
          <link-factory-name>jmsfactory/default/QueueConnectionFactory</link-factory-name>
          <initial-context-factory>com.sap.engine.services.jndi.InitialContextFactoryImpl</initial-context-factory>
          <provider-url>sapvm-vc:61616</provider-url>
          <security-principal></security-principal>
          <security-credentials></security-credentials>
        </context-factory-type>
      </connection-factory>
    </jms-factories>
    But I am getting the following error:
      Application error occurred during request processing.
      Details:   org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'exampleManagerContainer' defined in class path resource [integrationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.jms.ConnectionFactory.createConnection()Ljavax/jms/Connection;
    Exception id: [005056AB07A0005B0000004100000614000449BF8461CFBE]
    Any ideas, please???
    thanks,

  • Help Needed in JMS Provider

    Hi,
       In a document for JMS Connector it is given as we need to register the JMSConnectionFactory using Non-JNDI Provider, if our JMS Provider does not provide a naming system.
    Does WebSphere MQ(non JMS) provides a naming system? If not should i register it using Non-JNDI procedure? When i register, its asking me to fill the Object Factory class and JMS Factory class? I am not able to find out the class implementing the javax.jms.QueueConnectionFactory and javax.naming.spi.objectFactory  interface.
    Please help me out.
    Regards
    Rahul

    Thanks Amol. Right now we are on SP9 and we are facing the error
          Error: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for '<my_jms_host>:<my_jms_qm>'
    at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:434)
    at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:998)
    at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:707)
    at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:206)
    at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:76)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:143)
    at com.sap.aii.messaging.adapter.ModuleTransport2JMS.init(ModuleTransport2JMS.java:343)
    at com.sap.aii.messaging.adapter.ModuleHandlerImpl.run(ModuleHandlerImpl.java:555)
    at java.lang.Thread.run(Thread.java:479)
    There is a OSS Note(749743) for this error. Its been specified as error occurs in SP5 and solution is we need to upgrade it. But we are facing it with SP9. Thats why i was trying to look into these parameters. If i upgrade it to SP15, will it be solved?

  • How to insert message in OC4J JMS from standalone java client.

    Hi,
    I have been following available examples for creating standalone java clients to insert messages in JMS queues.
    I am able to insert using java client when the SOA suite and the standalone java code are on same machine.
    package producerconsumerinjava;
    import javax.jms.*;
    import javax.naming.*;
    import java.util.Hashtable;
    public class QueueProducer
    public static void main(String[] args)
    String queueName = "jms/demoQueue";
    String queueConnectionFactoryName = "jms/QueueConnectionFactory";
    Context jndiContext = null;
    QueueConnectionFactory queueConnectionFactory = null;
    QueueConnection queueConnection = null;
    QueueSession queueSession = null;
    Queue queue = null;
    QueueSender queueSender = null;
    TextMessage message = null;
    int noMessages = 5;
    * Set the environment for a connection to the OC4J instance
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put(Context.SECURITY_PRINCIPAL, "oc4jadmin");
    env.put(Context.SECURITY_CREDENTIALS, "mypass");
    env.put(Context.PROVIDER_URL,"ormi://myserver.company.com:12402"); //12402 is the rmi port
    * Set the Context Object.
    * Lookup the Queue Connection Factory.
    * Lookup the JMS Destination.
    try
    jndiContext = new InitialContext(env);
    queueConnectionFactory =
    (QueueConnectionFactory) jndiContext.lookup(queueConnectionFactoryName);
    queue = (Queue) jndiContext.lookup(queueName);
    catch (NamingException e)
    System.out.println("JNDI lookup failed: " + e.toString());
    System.exit(1);
    * Create connection.
    * Create session from connection.
    * Create sender.
    * Create text message.
    * Send messages.
    * Send non text message to end text messages.
    * Close connection.
    try
    queueConnection = queueConnectionFactory.createQueueConnection();
    queueSession =
    queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    queueSender = queueSession.createSender(queue);
    message = queueSession.createTextMessage();
    for (int i = 0; i < noMessages; i++)
    message.setText("Message " + (i + 1));
    System.out.println("Producing message: " + message.getText());
    queueSender.send(message);
    queueSender.send(queueSession.createBytesMessage());
    catch (JMSException e)
    System.out.println("Exception occurred: " + e.toString());
    finally
    if (queueConnection != null)
    try
    queueConnection.close();
    catch (JMSException e)
    System.out.println("Closing error: " + e.toString());
    But when the SOA Suite is remote, I am struggling to get the settings correct
    Till now, here is what I have figured out from looking at blogs/tars etc on the Net:
    1. I need to use ApplicationClientInitialContextFactory instead of RMIInitialContextFactory (http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/jndi.htm)
    2. The project should have a META-INF/application-client.xml file, which may be dummy (http://www.wever.org/java/space/Oracle/JmsTar1). Question is, my code is there in a single absolutely standalone code..how I can use this application-client.xml and where it has to be placed.
    Errors:
    When trying to run exact same code on local server that tries to enqueue JMS on remotee serverer
    Exception occurred: javax.jms.JMSException: Unable to create a connection to "xxxxxxx.yyyyyy01.dev.com/10.42.456.11:12,602" as user "null".
    Any help is greatly welcome.
    As an exercise, I copied this complete code on the server and then ran locally using a telnet client...it worked. So the problem is coming when accessing the server remotely.
    Rgds,
    Amit

    1. I need to use ApplicationClientInitialContextFactory instead of RMIInitialContextFactoryNot necessarily.
    2. The project should have a META-INF/application-client.xml fileThat's only necessary if going the ApplicationClientInitialContextFactory route.
    There are two types of JMS client applications you can write -- a pure/plain Java app, and an "AppClient". That first is your everyday run-of-the-mill Java application, nothing special. That latter is a special, complicated beast that tries to act as a part of the whole client/server/J2EE architecture which provides you with a semi-managed environment. Either can be made to work, but if all you need is JMS access (using plain OC4J JMS factory/queue names and not JMS Connector names), then the first is easier to get working (and performs a tiny bit better as well due to being a lighter-weight solution).
    I think the problem you are having might be: When you use the plain Java client solution, you do not have any type of management, and that includes user management. With no user management (and if the JMS server is not configured to allow anonymous connections) you need to include the username and password in the call to createConnection. (I think it may be that this is actually true in the AppClient case as well -- I avoid using the AppClient model as much as possible so my memory there is weaker.)
    If you prefer to go the AppClient route, I would point you to a demo I wrote which had a functioning example, but Oracle seems to have removed it (and all of the 10.1.3 demos?) from OTN. :-(
    Hmm, it seems to still be available on the wayback machine:
    http://web.archive.org/web/20061021064014/www.oracle.com/technology/tech/java/oc4j/1013/how_to/index.html
    (Just look down the page for "With OEMS JMS (In-Memory and File-Based)" -- there is an .html document with info, and there is a .zip file with source code.)
    Question is, my code is there in a single absolutely standalone code..how I can use this application-client.xml and where it has to be placed.The app client in my demo had the following directory structure:
    myjavaclient.class
    jndi.properties
    META-INF\MANIFEST.MF
    META-INF\application-client.xml
    META-INF\orion-application-client.xml
    When you use ApplicationClientInitialContextFactory I think it just looks under .\META-INF for the .xml files.
    -Jeff

  • JMS-send operation not working in a SessionBean [OC4J10.1.3.1.0-standalone]

    Salut,
    i am envisaged with a nasty problem calling a message-send operation from
    a method (transaction-type="required") inside a session bean (transaction-type="container").
    This problem occured in OC4J 10.1.3.1 and may fail also in 10.1.3.0. The same
    code run under OC4J 10.1.2.x without any problems.
    The adressed JMS type is a OEMS JMS and fails to work regardless if the JMS ressource
    is using a file-persistence or is running in-memory. Anyway the factory is a
    jms/XAQueueConnectionFactory, so the created queue must support XA transactions.
    Another test with an advanced-queue JMS provider succeeded.
    As a consequence of this, i believe that the OEMS provider shall cause the problem.
    The original code is quite unspectaculary:
    * The non-surprising thing is, that the QueueConnectionFactory
    * is a XAQueueConnectionFactory.
    QueueConnectionFactory qcf = (QueueConnectionFactory) (jndiContext.lookup(MY_QFAC));
    Queue q = (Queue) (new InitialContext().lookup(MY_QUE));
    c = qcf.createQueueConnection() ;
    QueueSession s = c.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    [... create a message ]
    QueueSender qs = s.createSender(q)
    qs.send(m);
    qs.close()
    s.close();
    c.close()
    The funny thing is, that the queue-session behaves as it is working outside
    of a transaction context. Inside the JMX-Console you will notice the
    arrival of a message and ... a cancellation of it. This would not surprise
    me, if this code sequence would have been called outside of
    a Session bean, cause the absence of a queue-session.commit does not
    fix the send message in the jms ressource.
    As a matter of fact the code is executed inside a Session bean and
    the connection.createQueueSession will notice this and forget both
    given parameters, and let the covering transaction take over of the
    JMS ressource. But this does not happen (completly).
    The acknowledge-mode has been modified (SESSION_TRANSACTED)
    but the code still does not work!
    After i recognized that the enlist-ment did not work, i
    decided to enfore the use of XA transaction by using the
    XA classes and methods of JMS.
    I startet to cast the jndi-references and:
    XAQueueConnectionFactory qcf = (XAQueueConnectionFactory) (jndiContext.lookup(MY_QFAC));
    Queue q = (Queue) (new InitialContext().lookup(MY_QUE));
    XAQueueConnection c = qcf.createXAQueueConnection() ;
    XAQueueSession s = c.createXAQueueSession();
    [... create a message ]
    QueueSender qs = s.createSender(q)
    qs.send(m);
    qs.close()
    s.close();
    c.close()
    The funny thing is ... the code worked without any problem until
    the send operation, where i received an JMSException, containing
    the text:
    Oc4jJMS.Session.hpcl057.4e9c06e4:1112674930d:-7fff.41,true,SESSION_TRANSACTED]: An attempt was made to perform work in a XA-backed session without being enlisted. Either the session must be enlisted (using the JMS Connector or JMS Adapter) to participate in the global transaction, or a non-XA connection and a non-XA session should be used to not participate in the global transaction.
    How bizarre, i thought the enlistment has been taken place by invoking
    the c.createXAQueueSession or c.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    How bizarre how bizarre
    any clues ????

    OC4J JMS was changed to not auto-enlist in XA transactions.
    In releases prior to 10.1.3 XA usage was not actually supported. (It did not meet all of the XA requirements when used with OC4J.)
    Auto-enlisting by the JMS provider was also a spec violation, which was causing trouble for people who needed to do out-of-transaction work and had no way to do it.
    In 10.1.3 XA usage is fully supported, but only when you use the JMS Connector. You can find the JMS Connector ("Oracle's Generic JMS Resource Adapter") demos here:
    http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/index.html#JMS
    The JMS Connector is documented in the OC4J Services Guide, OEMS/JMS chapter.
    -Jeff

  • Javax.jms.JMSException: Not supported in XA-backed session outside globaltx

    I am trying to setup OracleOJMS provider and tries to access queue and post to queue from a normal jsp for testing.
    I am getting the following
    code:
    javax.jms.JMSException: Not supported in XA-backed session outside global transaction
         at oracle.j2ee.ra.jms.generic.RAUtils.make(RAUtils.java:525)
         at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:199)
         at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:210)
         at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.prepareForSend(CommonProducerWrapper.java:350)
         at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.send(CommonProducerWrapper.java:159)
         at ResourceProvider.jspService(_ResourceProvider.java:112)
         at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.1.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:453)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:591)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:515)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:711)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:368)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:216)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)
         at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
         at java.lang.Thread.run(Thread.java:595)
    Steps i have done
    ResourceProvider.jsp
    code:
    <!-- JSP Imports -->
    <%@ page import="javax.jms.QueueConnectionFactory "%>
    <%@ page import="javax.jms.XAQueueConnectionFactory "%>
    <%@ page import="javax.jms.QueueConnection "%>
    <%@ page import="javax.jms.QueueSession "%>
    <%@ page import="javax.jms.Queue "%>
    <%@ page import="javax.jms.QueueSender "%>
    <%@ page import="javax.jms.Message "%>
    <%@ page import="javax.jms.Session "%>
    <%@ page import="javax.naming.Context "%>
    <%@ page import="javax.naming.InitialContext "%>
    <html>
    <head>
    <title>
    Configuration of ResourceProvider for Advanced Queueing
    </title>
    </head>
    <body>
    <form name="TestResourceProvider" method="GET">
    <%
    // Check if the message has to be enqueued
    if (request.getParameter("Message") != null){
    Context jndiContext = new InitialContext();
    XAQueueConnectionFactory queueCF = (XAQueueConnectionFactory)jndiContext.lookup
    ("java:comp/env/jms/InQueueCF");
    Queue queue = (Queue)jndiContext.lookup("java:comp/env/jms/InQueue");
    QueueConnection queueConnection = queueCF.createQueueConnection();
    // Start the Connection
    queueConnection.start();
    QueueSender sender = queueSession.createSender(queue);
    Message msg = queueSession.createTextMessage(request.getParameter("Message"));
    sender.send(msg);
    queueSession.commit();
    sender.close();
    queueSession.close();
    queueConnection.close();
    %>
    <%
    }else{
    // User can enter the message to be enqueued through here
    %>
    Enter the message to be enqueued
    <INPUT type="text" name="Message">
    <br><br>
    <input type="Submit" value="Enqueue Message">
    <%
    %>
    </form>
    </body>
    </html>
    My Steps for OJMS PRovider
    1. Creating AQ queue in DB
    2. configuration of resource adapter and provider
    3. configuration of connection factories for resourceadapter[jmsconnector]
    code:
    1. Created the Queue table in DB using the sql
    DROP USER jmsuser CASCADE;
    GRANT connect, resource,AQ_ADMINISTRATOR_ROLE TO jmsuser IDENTIFIED BY jmsuser;
    GRANT execute ON sys.dbms_aqadm TO jmsuser;
    GRANT execute ON sys.dbms_aq TO jmsuser;
    GRANT execute ON sys.dbms_aqin TO jmsuser;
    GRANT execute ON sys.dbms_aqjms TO jmsuser;
    connect jmsuser/jmsuser;
    -- Create table to hold the queue, then create queue.
    -- For topics multiple_consumers must be true
    BEGIN
    DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table => 'SMSCP_INQTBL', Queue_payload_type => 'SYS.AQ$_JMS_MESSAGE',
    sort_list => 'PRIORITY,ENQ_TIME', multiple_consumers => false, compatible => '8.1.5');
    DBMS_AQADM.CREATE_QUEUE( Queue_name => 'SMSCP_INQ', Queue_table => 'SMSCP_INQTBL');
    DBMS_AQADM.START_QUEUE(queue_name => 'SMSCP_INQ');
    END;
    quit;
    Now our queue Name is queue Name : SMSCP_INQ table Name: SMSCP_INQTBL
    2. Creating the Cp and datasource for the db [jmsuser] to make java to access queue
    Creating ConnectionPool jmsDBPool
    Creating DataSource jmsDBDataSource
    Jndi jdbc jdbc/JMSDBDS
    After creating, i got the following data-sources.xml
    DATASOURCES.XML
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd" schema-major-version="10" schema-minor-version="1">
    <!-- default one comes with oracle shipping -->
    <managed-data-source connection-pool-name="Example Connection Pool" jndi-name="jdbc/OracleDS" name="OracleDS"/>
    <!-- New one Created -->
         <managed-data-source connection-pool-name="jmsDBPool" jndi-name="jdbc/JMSDBDS" name="jmsDBDataSource"/>
    <!-- default one comes with oracle shipping -->
    <connection-pool name="Example Connection Pool">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="scott" password="tiger" url="jdbc racle:thin:@//localhost:1521/ORCL"/>
    </connection-pool>
    <!-- New one Created -->
    <connection-pool name="jmsDBPool">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="jmsuser" password="jmsuser" url="jdbc racle:thin:@//localhost:1521/xe"/>
    </connection-pool>
    </data-sources>
    3. JMS Connector Task. Customising the ra.xml
    ra.xml
    <!-- resourceadapter -->
    <resourceadapter>
    <resourceadapter-class>oracle.j2ee.ra.jms.generic.JMSResourceAdapter</resourceadapter-class>
    <config-property>
    <config-property-name>lookupMethod</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>resourceProvider</config-property-value>
    </config-property>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    <!-- adminobject configuration -->
              <adminobject>
    <adminobject-interface>javax.jms.Queue</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectQueueImpl</adminobject-class>
    <config-property>
    <config-property-name>jndiName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>Queues/MY_QUEUE</config-property-value>
    </config-property>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    <!--
    <adminobject>
    <adminobject-interface>javax.jms.Topic</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl</adminobject-class>
    <config-property>
    <config-property-name>jndiName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>Topics/MY_TOPIC</config-property-value>
    </config-property>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    -->
    <adminobject>
    <adminobject-interface>javax.jms.Queue</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectQueueImpl</adminobject-class>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    <adminobject>
    <adminobject-interface>javax.jms.Topic</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl</adminobject-class>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    </resourceadapter>
    4. Create a JMS Connector INstance
    oc4j-connectors.xml
         <connector name="testResourceAdapter" path="testResourceAdapter.rar">
              <config-property name="lookupMethod" value="resourceProvider"/>
              <config-property name="resourceProviderName" value="testResourceProvider"/>
              <!-- Default element generated by OC4J. Please uncomment and modify to suit your configuration needs.
              <adminobject-config location="">
                   <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectQueueImpl</adminobject-class>
                   <config-property name="jndiName" value="Queues/MY_QUEUE"/>
                   <config-property name="resourceProviderName" value="ojmsRP"/>
              </adminobject-config>
              -->
              <!-- Default element generated by OC4J. Please uncomment and modify to suit your configuration needs.
              <adminobject-config location="">
                   <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl</adminobject-class>
                   <config-property name="jndiName" value="Topics/MY_TOPIC"/>
                   <config-property name="resourceProviderName" value="ojmsRP"/>
              </adminobject-config>
              -->
         </connector>
    5. RA Connection Factories
    <?xml version="1.0" encoding="UTF-8"?>
    <oc4j-connector-factories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/oc4j-connector-factories-10_0.xsd"
    schema-major-version="10"
    schema-minor-version="0">
    <connector-factory location="resourceAdapterXAQCF/MYXAQCF" connector-name="testResourceAdapter">
    <config-property name="jndiLocation" value="XAQueueConnectionFactories/XAQCF"/>
    <connection-pooling use="private">
    <property name="waitTimeout" value="300" />
    <property name="scheme" value="fixed_wait" />
    <property name="maxConnections" value="50" />
    <property name="minConnections" value="0" />
    </connection-pooling>
    <connectionfactory-interface>javax.jms.XAQueueConnectionFactory</connectionfactory-interface>
    </connector-factory>
    </oc4j-connector-factories>
    orion-web.xml
    <?xml version="1.0"?>
    <orion-web-app
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-web-10_0.xsd"      deployment-version="10.1.3.1.0"
         deployment-time="1218369811921"
         jsp-cache-directory="./persistence"
         jsp-cache-tlds="standard"
         temporary-directory="./temp"
         context-root="/smscpReceiver"
    schema-major-version="10" schema-minor-version="0" >
         <!-- Uncomment this element to control web application class loader behavior.
              <web-app-class-loader search-local-classes-first="true" include-war-manifest-class-path="true" />
         -->
         <resource-ref-mapping name="jms/InQueueCF" location="resourceAdapterXAQCF/MYXAQCF" />
         <message-destination-ref-mapping location="resourceAdapterInQ/MYINQ" name="jms/InQueue">
              </message-destination-ref-mapping>
         <web-app>
         </web-app>
    </orion-web-app>
    web.xml
    <resource-ref>
         <res-ref-name>jms/InQueueCF</res-ref-name>
         <res-type>javax.jms.XAQueueConnectionFactory</res-type>
         <res-auth>Container</res-auth>
    </resource-ref>
    <message-destination-ref>
         <message-destination-ref-name>jms/InQueue</message-destination-ref-name>
         <message-destination-type>javax.jms.Queue</message-destination-type>
         <message-destination-usage>Produces</message-destination-usage>
         <message-destination-link>jms/InQueue</message-destination-link>
    </message-destination-ref>
    <message-destination>
    <message-destination-name>jms/InQueue</message-destination-name>
    </message-destination>

    Sorry for the jammed one
    Neat one.
    am trying to setup OracleOJMS provider and tries to access queue and post to queue from a normal jsp for testing.
    I am getting the following
    javax.jms.JMSException: Not supported in XA-backed session outside global transaction
    at oracle.j2ee.ra.jms.generic.RAUtils.make(RAUtils.java:525)
    at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:199)
    at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:210)
    at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.prepareForS
    INVOCATION
    <form name="TestResourceProvider" method="GET">
    <%
    // Check if the message has to be enqueued
    if (request.getParameter("Message") != null){
    Context jndiContext = new InitialContext();
    XAQueueConnectionFactory queueCF = (XAQueueConnectionFactory)jndiContext.lookup
    ("java:comp/env/jms/InQueueCF");
    Queue queue = (Queue)jndiContext.lookup("java:comp/env/jms/InQueue");
    QueueConnection queueConnection = queueCF.createQueueConnection();
    // Start the Connection
    queueConnection.start();
    QueueSender sender = queueSession.createSender(queue);
    Message msg = queueSession.createTextMessage(request.getParameter("Message"));
    sender.send(msg);
    queueSession.commit();
    sender.close();
    queueSession.close();
    queueConnection.close();
    %>
    <%
    }else{
    // User can enter the message to be enqueued through here
    %>
    Enter the message to be enqueued
    <INPUT type="text" name="Message">
    <br><br>
    <input type="Submit" value="Enqueue Message">
    <%
    %>
    </form>
    </body>
    </html>
    ---------------------

  • File to JMS Scenario - Error is Receiver JMS Adapter

    Hi,
    I am working on File to JMS scenario. I have deployed all required jars for MQ 6.0.2 in SDM. Create all MQ related objects. I am getting following error for Receiver JMS adapter in CC Monitoring.
    Please let me know if I have missed anything. Is there anything to do in Visiual Administrator->JMS Provider or JMS Connector for these kind of Scenarios?
    Thanks in Advance...
    Error during channel initialization; exception trace: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'sap:QM_APPLE'
    at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:586)
    at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2110)
    at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1532)
    com.ibm.mq.MQException: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
    MQJE016: MQ queue manager closed channel immediately during connect
    Closure reason = 2009
    at com.ibm.mq.MQManagedConnectionJ11.(MQManagedConnectionJ11.java:212)
    at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:318)

    Hi,
    I have made my Qmanager as default Qmgr. Now the error is :- Socket connection attempt refused
    Recv JMS Communication Channel Error:-
    Error during channel initialization; exception trace: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'sap:QM_APPLE'
    at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:586)
    at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2110)
    at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1532)
    com.ibm.mq.MQException: MQJE001: An MQException occurred: Completion Code 2, Reason 2059
    MQJE011: Socket connection attempt refused
    at com.ibm.mq.MQManagedConnectionJ11.(MQManagedConnectionJ11.java:212)
    at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:318)

Maybe you are looking for

  • Buyer beware: HP deliberately broke my daughters laptop

    Unbelievable I know, I can hardly believe that I am typing this. My daughters HP G62 laptop which I bought her 9 months ago for doing so well in her exams at school developed a fault which resulted in a white screen and no boot up. I took it down to

  • Office Web Apps Redundancy

    I have Office web apps running on my SharePoint installation. The question i have is this If my OWA server goes down how do i configure SharePoint to use the client automatically instead of falling over when handling documents. the libraries are set

  • H264(Youtube/Vimeo Preset) export looks flat and desaturated- H264 Gamma?

    All my h264 output both quickitme and mp4 looks flat and desaturated after export compared to to the program window.This happends with both cs5.5 and cs6. I know there is some h264 bug with Quicktime but  its flat on Youtube also( in Safari) I though

  • Batch characterstics

    In SAP 4.6C Cable Solution there was functionality of CS Bins which was an additional field on the batch details which allowed identification of specific bin location and also keep track of changes in the CS Bin over time.  This functionality is no l

  • CS3: InDesign heap corruption & InsertCmd

    Hello,    could you please advise me how to fix the following problem with heap corruption: HEAP[InDesign.exe]: Invalid address specified to RtlFreeHeap( 04010000, 1AC71010 ) Windows has triggered a breakpoint in InDesign.exe. This may be due to a co