JMS Support

Hello,
I have a few questions about JMS Support in OC4J 9.0.3. Does the JMS implementation support clustering (load balancing and failover)? Is HTTP tunneling supported for client access to JMS? Is using AQ preferred over using the built in JMS implementation?
Len Takeuchi
Salescentrix.com

Hi John,
Thank you for your reply. Your reply and pointer to other info is extremely helpful. I was afraid that the questions were so general that no one would answer them.
Regards,
Len
Hi Len,
In 9iAS v9.0.3, OJMS (AQ/JMS) is the J2EE 1.3 compatible JMS provider. See the Oracle Metalink posting for more information
on OC4J/JMS and OJMS at http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=205305.1
Regarding JMS clustering, you need to look both at the JMS client and JMS provider. The JMS client, a servlet or MDB, is contained
within OC4J. The client then has all the high availabilty and load balancing features as does OC4J. I won't go into detail
here on those features since they're well documented on OTN and in the 9iAS documentation.
As for the JMS provider, which in OJMS's case is Oracle's Advanced Queuing, since AQ is in the 9iDB you have all the high availabity (RAC)
and load balancing available that you would normally get with 9iDB.
The closest thing to HTTP tunneling is the use of IDAP with OJMS. Take a look at the Advanced Queuing Developer's Guide for more
information on IDAP.
Hope this helps...
John

Similar Messages

  • WLS JMS supports the clients developed by using non-java program languages,such as,c++,VB...

              WLS JMS supports the clients developed by using non-java program languages,such
              as,c++,VB?
              

    The short answer is yes. This is a frequently asked question. I
              suggest searching this newsgroup in google using terms like "C++",
              "IIOP", ".NET", "JCOM".
              Note also that WL 8.1 (now out in beta) contains a thin java client
              (something like 0 or 300K without JMS, 700k with. The 0K client comes
              from leveraging WL's IIOP support.)
              Tom, BEA
              jerry8006 wrote:
              > WLS JMS supports the clients developed by using non-java program languages,such
              > as,c++,VB?
              

  • Does JMS support reliable messaging (store-and-forward) for app clients?

    I need to write an enterprise application client (launched with Java web start or packaged with a tool like Sun's package-appclient) that can send messages reliably from Linux to Windows. JMS seems like the obvious solution, so I deployed an EAR file with an MDB and an application client on a Windows machine (running SJSAS 9). I was able to download the client jar file onto Linux and send JMS messages successfully. However, if the Windows machine is not available, the Linux client immediately throws exceptions and fails. Are there any JMS providers that provide a store-and-forward mechanism for enterprise clients, so that if the remote server is not available immediately, messages are delivered later? (Note that the client can't be a servlet or other server-managed component.)
    I'd prefer an open-source solution, but this requirement has an extremely high priority for my customer, so I'll use a commercial product if necessary. And if there's something other than JMS that works, that would be fine. (In my case, the messages on the remote side ultimately go to a .NET service, so WS-ReliableMessaging would be ideal, but it looks WS-RM won't be integrated into .NET until Vista, and the current WS-RM implementation is a beta, etc., etc.)
    Thanks,
    Mike

    You could use Apache ActiveMQ
    http://incubator.apache.org/activemq/
    which supports embedded brokers inside each JVM which can be networked together in a store-forward mechanism so that each application keeps working and store-forwarding messages.
    http://incubator.apache.org/activemq/networks-of-brokers.html
    or you can use failover transport to handle automatic reconnection...
    http://incubator.apache.org/activemq/how-can-i-support-auto-reconnection.html
    If you need to communicate with some .Net you can use the NMS - the .Net Messaging API which has a client for ActiveMQ as well...
    http://incubator.apache.org/activemq/nms.html
    James
    http://logicblaze.com/
    Open Source SOA

  • Does OC4J's built-in JMS support transactions?

    I am using Oracle App Server 10.1.3.4 and OC4J 10.1.3.4, with the built-in OC4J JMS implementation. I have created a simple MDB that receives messages in the onMessage() method, and rolls back the transaction by throwing a runtime exception. (I have also tried rolling back the transaction by calling messageDrivenContext.setRollbackOnly().) In either case, the result is the same. The message is basically lost and never redelivered. If the transaction is rolled back, shouldn't the message be added back to the queue for redelivery? I have waited several minutes, and no redelivery ever occurs.
    My code looks something like this:
    @MessageDriven(activationConfig = {
              @ActivationConfigProperty(propertyName = "ConnectionFactoryJndiName",
                        propertyValue = "jms/QueueConnectionFactory"),
              @ActivationConfigProperty(propertyName = "DestinationName", propertyValue = "jms/MyQueue"),
              @ActivationConfigProperty(propertyName = "DestinationType", propertyValue = "javax.jms.Queue"),
              @ActivationConfigProperty(propertyName = "ReceiverThreads", propertyValue = "5")
    @TransactionManagement(TransactionManagementType.CONTAINER)
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public class BidOptimizeMDB implements MessageListener {
         public final void onMessage(final Message msg) {
              throw new EJBException();
    In jms.xml:
    <queue-connection-factory name="jms/QueueConnectionFactory" location="jms/QueueConnectionFactory" />
    <queue name="MyQueue" location="jms/SEMBidQueue" persistence-file="MyQueue">

    You "care if it is a global transaction" because you use the corresponding annotation .
    @TransactionManagement(TransactionManagementType.CONTAINER)
    @TransactionAttribute(TransactionAttributeType.REQUIRED)This makes OC4J start a global transaction. Your config uses a non-xa connection factory that does not obey the Transaction Manager and setRollbackOnly does not work for this reason.
    There is another problem with your setup.
    "For message-driven beans using the OEMS JMS (in-memory or file-based) message service provider, <Required> is supported only if you access this message service provider using the Oracle JMS Connector. For more information, see [Restrictions When Accessing a Message Service Provider Without a J2CA Resource Adapter|http://download.oracle.com/docs/cd/B32110_01/web.1013/b28221/undejdev010.htm#CCHFAAAH]" .
    You need to use an instance of JMS Connector (predefined or your own) for proper transaction enlistment of OC4J JMS.
    The built-in JMS connector mentioned by you publishes connection factories at the following locations:
    OracleASjms/MyXAQCF     
    OracleASjms/MyQCF
    OracleASjms/MyXATCF     
    OracleASjms/MyTCF
    OracleASjms/MyXACF     
    OracleASjms/MyCF
    For your case you need OracleASjms/MyXACF or OracleASjms/MyXACF . Do not bypass the JMS Connector by using the OC4J JMS connection factories such as jms/XAConnectionFactory directly when you intend to use transactions.
    Hope this helps.
    Gera

  • JMS Support in Applet

    Can JMS be used in Applets send and recieve messages from EJB ?.
    I have read in JMS tutorial that
    Applets, however, are not required to support the JMS APIhttp://java.sun.com/products/jms/tutorial/1_3-fcs/doc/overview.html#1027335

    From what I know applets can indeed be JMS clients but it is not mandatory that they be supported. Its probably vendor specific so check out the JMS provider you intend to use (Looked at Sonic and BEA and both seem to support applets fine).
    cheers,
    mairt

  • Installing jms support in Oracle Workflow 2.6.2

    Hello everybody,
    We are doing a pilot to a client that is looking for a workflow engine. We want to offer him Oracle Workflow 2.6.2.
    The client ask us to do a pilot where he can send event using java through JMS. I have found in OTN a document about this, named wfjmswp.pdf, and some files to create two new queue and the agent in the workflow environment that handle this queue.
    There are three files ended in .pls and four ended in .sql. The first ones, the .pls file, I don't know how I must loaded into the database, they seem to be pl/sql package. The .sql I have tried to execute but they don't work. I must say that I have little experience like oracle administrator.
    ¿Can anybody help us please? It's an important client and a big opportunity to sell him oracle products.
    Thank you very much in advance.

    Hello,
    I finally get the scripts to run, I finally use sqlplus but I change the scripts without the 2 last line (commit and exit) and I do this directly in the sqlplus.

  • JMS and FireWall support

    hi all,
    we have a central server connected to many remote servers over the internet.
    Some of the clients have permanent public IP but some of them are either behind a firewall or are dialuped ones.
    How can my JMS application running on the central server communicate with these servers and send data across.
    Does JMS support data transfer across firewall ?
    suneesh.

    JMS is simply a collection of classes and interfaces defined by Sun that provide a consistent way of publishing and consuming data via topics and queues. JMS does not define how security, firewalls, management and a whole host of other really important stuff should be handled.
    For these important features you need to look at specific implementations. There are free implementations as well as a large group of vendors all providing additional functionality on top of JMS.
    As one of these vendors I would like to introduce you to Nirvana, our messaging solution delivering JMS 1.1 functionality.
    Nirvana (http://www.my-channels.com/products/nirvana.html) has been designed to be deployed externally between an organization, its clients and its partners. It has been designed to accommodate both high and low speed connections ensuring that the lack of performance from one does not impact the other. It has been designed to traverse firewalls and proxy servers.
    Take a look at it in action on http://showcase.my-channels.com/
    Regards,
    Paul Brant
    my-Channels - Technologies working together
    http://www.my-channels.com/

  • JMS Version support in iAS 6.5

    what is the version of JMS supported by iAS 6.5
    thanks in advance,
    desigan

    iAS 6.5 ships with iMQ 2.0 which support JMS 1.0.2. Note, there is no production support for MDBs in iAS 6.5.

  • XML in JMS

    Hi,
    I’ve an AQ with payload of type SYS.XML Type, Can I read messages from this Queue using JMS?
    I know the JMS standard doesn’t support XML, so is it possible to write a JMS listener application that gets notification when there is a message from an AQ of payload SYS.XML Type. Also can I use the standard JMS API (without any Oracle specific JMS implementation APIs) to accomplish it?
    Any pointers to documents/examples will help me.
    Thanks
    -Mani

    Not sure if this is any help to you, but I've been quite happily enqueuing and dequeueing XML messages under JMS, supported by the Oracle AQs.
    Unfortunately, I've found it very difficult to manage with non-Oracle APIs. So I've made heavy use of XMLType from the XDK. Also, though I've used the Oracle JMS implementation, I've found that I've had to cast simple JMS objects into the the Oracle JMS objects that implement them.
    I can't find any Oracle JMS javadoc anywhere, so it's very difficult to find out how to do this stuff in a more orthodox and vendor-neutral fashion.

  • Producing message to temporary JMS destination

    Hi,
    Has anyone managed to produce a message to a temporary JMS destination using the JMS Adapter? I'm trying to get this request/reply-pattern working:
    -Java client connects to a Connection Factory and creates a temporary reply queue (works, CF returns a destination like "TestingJmsServer!TestingJmsServer.TemporaryQueue2")
    -The client produces a message with JMSReplyTo pointing to the temporary reply queue (works)
    -JMS Adapter consumes the message and assigns jca.jms.JMSDestinationName := jca.jms.JMSReplyTo (works)
    -The JMS adapter should now produce the reply message to the provided temporary queue, but it always fails with error BEA-045101:
    The destination name passed to createTopic or createQueue "destName" is invalid. If the destination name does not contain a "/" character then it must be the name of a distributed destination that is available in the cluster to which the client is attached. If it does contain a "/" character then the string before the "/" must be the name of a JMSServer or a ".". The string after the "/" is the name of a the desired destination. If the "./" version of the string is used then any destination with the given name on the local WLS server will be returned.
    The same problem occurs with fixed queues, like "TestingJmsModule!ReplyQueue", but I can make them work by adding a "./" in front of the destination name when performing the jca.jms.JMSDestinationName assign, so that it reads "./TestingJmsModule!ReplyQueue". After that the adapter is able to produce the message correctly to the given JMSDestinationName.
    Is it significant that with fixed queues I get a destination like "JmsModule!FixedQueueName" (note the module) but with temporary destinations it is like "JmsServer!TempQueueName" (note the server)?
    Should the destination name be of some other format? The current value is exactly what the Connection Factory returns, and if the JMS adapter is replaced with another java client, producing the reply message to that destination works just fine.
    regards,
    Ville

    Hi,
    I am trying to send messages to the WLS queue through Camel and facing the same issue, which can be eliminated by using queue name as ./<QUEUE_NAME>.
    However it only eliminates the error and the next one comes is real pain. It is not able to find the JNDI name of the queue, where as I am able to see it in Admin console JNDI tree.
    Exception in thread "Main Thread" org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[Message: Test Message: 0]
         at org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1161)
         at org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:512)
         at org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:441)
         at org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:437)
         at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:125)
         at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:130)
         at org.apache.camel.example.jmstofile.PublishMessage.main(PublishMessage.java:63)
    Caused by: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is weblogic.jms.common.JMSException: [JMSExceptions:045102]A destination of name "WLtestQueue" was not found on WLS server "AdminServer".
         at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)
         at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
         at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)
         at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:172)
         at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:347)
         at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:303)
         at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:101)
         at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:102)
         at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:104)
         at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)
         at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:63)
         at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:345)
         at org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:317)
         at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:222)
         at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:317)
         at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:168)
         at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:110)
         at org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:123)
         ... 2 more
    Caused by: weblogic.jms.common.JMSException: [JMSExceptions:045102]A destination of name "WLtestQueue" was not found on WLS server "AdminServer".
         at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
         at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
         at weblogic.jms.client.JMSSession.createDestination(JMSSession.java:3192)
         at weblogic.jms.client.JMSSession.createQueue(JMSSession.java:2577)
         at weblogic.jms.client.WLSessionImpl.createQueue(WLSessionImpl.java:938)
         at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveQueue(DynamicDestinationResolver.java:101)
         at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveDestinationName(DynamicDestinationResolver.java:66)
         at org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:100)
         at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.access$200(JmsConfiguration.java:141)
         at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate$3.doInJms(JmsConfiguration.java:174)
         at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)
         ... 17 more
    Anyone has got any idea?

  • JMS Sender with ejb3 container managed transaction

    Hi all,
    I refer to the following link http://download.oracle.com/docs/cd/E11035_01/wls100/jms/trans.html#wp1035937
    I found that JTA support JMS.
    But I dont' want to use JTA explicitly, I want to use container manage transaction. eg. inside ejb3 stateless session bean.
    does it support JMS?
    With Regards,
    wp

    Hi,
    Yes, WebLogic JMS supports JTA (a.k.a XA, a.k.a global) transactions such as container managed transactions. There are two requirements for CMTs on SSB:
    (1) use an XML descriptor setting or EJB annotation to enable CMT for the SSB
    (2) use a WebLogic JMS connection factory that is configured to have "global (XA) transactions enabled"
    And I usually also recommend:
    (3) Consider using a JEE "res-ref" for the connection factory to enable pooling of JMS resources. See "Enhanced Support for Using WebLogic JMS with EJBs and Servlets" (http://download.oracle.com/docs/cd/E14571_01/web.1111/e13727/j2ee.htm#g1329180), and the "Integrating Remote JMS Providers" FAQ (http://download.oracle.com/docs/cd/E14571_01/web.1111/e13727/interop.htm#JMSPG553).
    (4) Avoid using SSBs to receive messages. MDBs are specifically designed for processing incoming messages.
    It's also possible to have WebLogic automatically enlist foreign (non-WebLogic) vendors in WebLogic transactions. See the "Integrating Remote JMS Providers" FAQ for details (http://download.oracle.com/docs/cd/E14571_01/web.1111/e13727/interop.htm#JMSPG553).
    Regards,
    tom

  • JMS sender and receiver

    hi
    I am in PI 731 single stack.
    my scenario is JMS to RFC.
    JMS sender will send request to RFC request message.
    RFC response need to be sent to JMS receiver.
    I have link for dual stack -
    http://wiki.scn.sap.com/wiki/display/XI/JMS+Webservice+JMS
    Is it possible now in single stack too ?

    Hi,
    yes, JMS supports asynchronous communication only. However, a request/response model similar to synchronous communication can be implemented using a reply queue mechanism and JMS Correlation ID/JMS Message ID.
    check the below link.
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/904db720-042f-3010-b6ba-e62a4192bd3c?overridelayout=true
    http://help.sap.com/saphelp_nw73ehp1/helpdata/en/a4/abaf04916b45438f436357810a27c8/content.htm?frameset=/en/03/f9286f7b284928b1c41025d4ba1cf4/frameset.htm
    http://scn.sap.com/people/bhavesh.kantilal/blog/2006/07/03/jdbc-receiver-adapter--synchronous-select-step-by-step
    http://wiki.sdn.sap.com/wiki/display/XI/JMS
    http://help.sap.com/saphelp_nw04/helpdata/en/45/20cc5dc2180733e10000000a155369/content.htm
    http://www.stechno.net/sap-notes.html?view=sapnote&id=856346
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/f4/2d6189f0e27a4894ad517961762db7/content.htm
    Regards
    srinivas

  • Does 8.1 sp3 support EJB Specification 2.1?

    More specifically does it support the Enterprise Bean Timer interface?

    John,
    To have timed callbacks in 8.1sp3 you could use JMS and send messages with birth time set, which can be consumed by a MDB, which inturn on reception of message invokes the callback method.
    WLS 8.1, JMS supports message birth times.
    This may not be the best way, but the simplest way to get it done.
    vasanthi ramesh

  • Synchronous sender JMS adapter

    Hi ,
    I need to do a synchronous scenario : JMS - PI - Proxy
    can sender jms adapter be synchronous ?
    Thnx

    Hi,
    can sender jms adapter be synchronous ?
    JMS supports asynchronous communication only. However, a request/response model similar to synchronous communication can be implemented using a reply queue mechanism and JMS Correlation ID/JMS Message ID.
    Search on SDN / SAP Help, there are plenty of documents related to this.
    Regards,
    Neetesh

  • How JMS and MDB works?

    Hi,
    I am writing a portion of a J2EE application and would like to perform asynchronous processing. Im new to JMS. Following are some questions i have:
    - How does JMS process message, queue and MDB? I mean when a message is send to a queue, how does it know which MDB should be receiving the message?
    - Im using JBoss which has JMS support. Under normal circumtances, is it all right to use the default queue that comes with the JMSProvider (i.e. the application server in this case)? Or should we write some other codes for create queue?
    - In terms of design, should one MDB only performs a single function? The reason for this is that a MDB seems to only have a single 'onMessage' method?
    - The following is what my application tries to achieve: Servlet will call a method in a StatelessSessionBean. SessionBean perform first some processing. And since part of the process does not require to be done at the same time, i would like it to happen asynchronously. I actually intend to have that part of the processing happens in an MDB. Is that the correct way to use JMS & MDB? How else could i perform asynchronous processing?
    Thanks much.
    Veny

    - how does it know which MDB should be receiving the message?
    The MDB is configured to consume messages from a specific queue in one of the J2EE xml files (Haven't written them in a while so can't be sure which one).
    - is it all right to use the default queue that comes with the JMSProvider
    I wouldn't, because your queue names won't reflect the job they are doing.
    Create some new queues by updating your jms providers config files.
    - In terms of design, should one MDB only performs a single function
    This is a reasonable approach to take, although it's sometimes OK to have an MDB act like a controller and delegate to handler classes (possibly session beans) based on the message type. The latter approach is suitable only for small apps as it's far less configurable / scalable (e.g. you can't say I want 10 MDB instances to processing message X and 50 MDB instances to process message Y).
    - Is that the correct way to use JMS & MDB
    Yes, that's pretty much it, although I would still delegate the work to a handler class. It will make if easier to test and more portable.

Maybe you are looking for

  • Navigation from ALV

    Hi all, On executing my program i get ALV with names of reports displayed. My requirement is that on clicking on the report name, I should be directed to SE38, where the corresponding report is opened in 'Change' mode. Please suggest how I can achiev

  • How to change the index page of tomcat to a specific page in a  web app.

    hi all i am trying to figure out a way to change default application to a specific web application deployed in tomcat, so that when you type localhost:8080, it will start with the web app. basically i want to get ride of the context or map the contex

  • Version 7 site isn't visible when I post it to my site.

    version 7 of Muse still won't appear on my test site when I upload all the published html files to my server. It was working fine in version 6 when I posted but when I upload all 8 files all I get is a broken icon in the middle of screen. I had this

  • Hyper-V Virtual machine disappeared

    Hello, I am running Windows Server 2008 R2 SP1.  I have the Hyper-V role installed with to virtual machines.  I rebooted yesterday after windows updates loaded and now one of my virtual machine have disappeared.  I have run through hours of technet f

  • Maps app:  find me locator inconsistent

    I have an iphone 3gs -- fairly new -- Just recently, the GPS on the maps app has been working inconsistently. Some times it shows my current location is in the middle of the US (I'm in LA) and yet other times it is accurate. It's not a big deal, but