JMS Destination persistent to database

Hi,
I am developing a messaging application which uses JMS. I want to make my JMS destinations (Topics) persistent to the database. I am using MDBs in my application. I know that you can do this using entity beans. Is there are any other way of doing this instead of entity beans? I don't want the extra overhead of creating entity beans to do this. As, Weblogic has a way of doing this through the xml file while configuring for jms destination.
Does Oracle 10g also has this? Please reply ASAP.
Thanks,
Rohini

You can use MDB with OracleJMS that stores QUEUES and Topics in Oracle Advanced Queuing database.
Here is a smaple how to use MDB with OracleJMS
http://otn.oracle.com/sample_code/tech/java/ejb_corba/index.html
Also this is documented in the EJB and Services Guide for 10g (9.0.4)
- Debu

Similar Messages

  • [svn:bz-trunk] 19866: Set delivery mode to PERSISTENT for JMS destinations that have durable set to true .

    Revision: 19866
    Revision: 19866
    Author:   [email protected]
    Date:     2011-01-21 10:05:44 -0800 (Fri, 21 Jan 2011)
    Log Message:
    Set delivery mode to PERSISTENT for JMS destinations that have durable set to true. If messages aren't persistent they won't be saved by the JMS server. This is kind of important when you want the messages to be durable.
    Modified Paths:
        blazeds/trunk/qa/apps/qa-regress/WEB-INF/flex/messaging-config.mods.xml

    According to Bea Customer Support this is the normal behavior. If you kill a durable topic subscriber and reconnect it with the same id to another node, the old subscription is deleted and all messages still waiting to be delivered are gone.
              Lesson learned: If you need failover for the server AND client use JMS queues.
              Peter

  • JMS Exception - unable to connect to the JMS destination

    Hi,
    I've configured WebLogic10R3 Cluster with one Admin Server and 2 Managed Servers.
    I deployed the application to the Cluster. (Ie. both Managed 1 and Managed Server 2.)
    I am geeting the following JMS destination not found exception while starting the Second Managed Server.
    There are no errors occurred in the First Managed Server.
    {color:#ff0000}<Warning> <EJB> <BEA-010061>
    <The Message-Driven EJB: SysAuditLogger is unable to connect to the JMS destination: topic/efpAuditTopic.
    The Error was: weblogic.jms.common.JMSException: could not find Server efpserver_man2
    Nested exception: weblogic.jms.common.JMSException: could not find Server efpserver_man2
    Nested exception: weblogic.jms.common.JMSException: could not find Server efpserver_man2
    Nested exception: weblogic.jms.common.JMSException: could not find Server efpserver_man2
    Nested exception: weblogic.messaging.dispatcher.DispatcherException: could not find Server efpserver_man2
    Nested exception: javax.naming.NameNotFoundException: Unable to resolve 'weblogic.messaging.dispatcher.S:efpserver_man2.
    Resolved 'weblogic .messaging.dispatcher'; remaining name 'S:efpserver_man2>{color}
    Configuration Details:
    ##config.xml:
    <?xml version='1.0' encoding='UTF-8'?>
    <domain xmlns="http://www.bea.com/ns/weblogic/920/domain" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90/security/wls [http://www.bea.com/ns/weblogic/90/security/wls.xsd] [http://www.bea.com/ns/weblogic/920/domain] [http://www.bea.com/ns/weblogic/920/domain.xsd] [http://www.bea.com/ns/weblogic/90/security/xacml] [http://www.bea.com/ns/weblogic/90/security/xacml.xsd] [http://www.bea.com/ns/weblogic/90/security] [http://www.bea.com/ns/weblogic/90/security.xsd]">
    <name>efpdomain</name>
    <domain-version>10.3.0.0</domain-version>
    <security-configuration>
    <name>efpdomain</name>
    <realm>
    <sec:authentication-provider xsi:type="wls:default-authenticatorType"></sec:authentication-provider>
    <sec:authentication-provider xsi:type="wls:default-identity-asserterType">
    <sec:active-type>AuthenticatedUser</sec:active-type>
    </sec:authentication-provider>
    <sec:role-mapper xmlns:xac="http://www.bea.com/ns/weblogic/90/security/xacml" xsi:type="xac:xacml-role-mapperType"></sec:role-mapper>
    <sec:authorizer xmlns:xac="http://www.bea.com/ns/weblogic/90/security/xacml" xsi:type="xac:xacml-authorizerType"></sec:authorizer>
    <sec:adjudicator xsi:type="wls:default-adjudicatorType"></sec:adjudicator>
    <sec:credential-mapper xsi:type="wls:default-credential-mapperType"></sec:credential-mapper>
    <sec:cert-path-provider xsi:type="wls:web-logic-cert-path-providerType"></sec:cert-path-provider>
    <sec:cert-path-builder>WebLogicCertPathProvider</sec:cert-path-builder>
    <sec:name>myrealm</sec:name>
    </realm>
    <default-realm>myrealm</default-realm>
    <credential-encrypted>{3DES}hcdd+yZGXk5DHgRKqCM7E86l4+VxPcZ9Ut7rB6WaXqMyvbtDjDUKNCKbMQdCN/BEYCv5E0N4Hms9kntfqhaduDO1WGMtbmJL</credential-encrypted>
    <node-manager-username>weblogic</node-manager-username>
    <node-manager-password-encrypted>{3DES}Q2xO0EiChbay/HkRiorTjg==</node-manager-password-encrypted>
    </security-configuration>
    <server>
    <name>AdminServer</name>
    <listen-address>192.168.12.240</listen-address>
    </server>
    <server>
    <name>efpserver_man1</name>
    <listen-port>8011</listen-port>
    <cluster>efpcluster</cluster>
    <listen-address>192.168.12.240</listen-address>
    <xml-registry>XMLEFP</xml-registry>
    <jta-migratable-target>
    <user-preferred-server>efpserver_man1</user-preferred-server>
    <cluster>efpcluster</cluster>
    </jta-migratable-target>
    </server>
    <server>
    <name>efpserver_man2</name>
    <listen-port>8012</listen-port>
    <cluster>efpcluster</cluster>
    <listen-address>192.168.12.240</listen-address>
    <xml-registry>XMLEFP</xml-registry>
    <jta-migratable-target>
    <user-preferred-server>efpserver_man2</user-preferred-server>
    <cluster>efpcluster</cluster>
    </jta-migratable-target>
    </server>
    <cluster>
    <name>efpcluster</name>
    <cluster-address>192.168.12.240:8011,192.168.12.240:8012</cluster-address>
    <multicast-address>239.192.0.0</multicast-address>
    </cluster>
    <embedded-ldap>
    <name>efpdomain</name>
    <credential-encrypted>{3DES}q/XQGirHcAcgi4iwPiXIkRHP8xte4xVBgJwjM+qMwbk=</credential-encrypted>
    </embedded-ldap>
    <configuration-version>10.3.0.0</configuration-version>
    <app-deployment>
    <name>efp</name>
    <target>efpcluster</target>
    <module-type>ear</module-type>
    <source-path>applications\efp.ear</source-path>
    <security-dd-model>DDOnly</security-dd-model>
    </app-deployment>
    <xml-registry>
    <name>XMLEFP</name>
    <document-builder-factory>weblogic.apache.xerces.jaxp.DocumentBuilderFactoryImpl</document-builder-factory>
    <sax-parser-factory>weblogic.apache.xerces.jaxp.SAXParserFactoryImpl</sax-parser-factory>
    <transformer-factory>weblogic.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
    </xml-registry>
    <jms-server>
    <name>eFpJMSServer</name>
    <target>efpserver_man1 (migratable)</target>
    <persistent-store>eFpJMSJDBCStore</persistent-store>
    </jms-server>
    <jms-server>
    <name>eFpJMSServer2</name>
    <target>efpserver_man2 (migratable)</target>
    <persistent-store>eFpJMSJDBCStore2</persistent-store>
    </jms-server>
    <migratable-target>
    <name>efpserver_man1 (migratable)</name>
    <notes>繧キ繧ケ繝・Β逕滓・縺ォ繧医k繝・ヵ繧ゥ繝ォ繝医・繧オ繝シ繝千畑遘サ陦悟庄閭ス蟇セ雎。縺ァ縺吶€よ焔蜍輔〒蜑企勁縺励↑縺・〒縺上□縺輔>縲・/notes>
    <user-preferred-server>efpserver_man1</user-preferred-server>
    <cluster>efpcluster</cluster>
    </migratable-target>
    <migratable-target>
    <name>efpserver_man2 (migratable)</name>
    <notes>繧キ繧ケ繝・Β逕滓・縺ォ繧医k繝・ヵ繧ゥ繝ォ繝医・繧オ繝シ繝千畑遘サ陦悟庄閭ス蟇セ雎。縺ァ縺吶€よ焔蜍輔〒蜑企勁縺励↑縺・〒縺上□縺輔>縲・/notes>
    <user-preferred-server>efpserver_man2</user-preferred-server>
    <cluster>efpcluster</cluster>
    </migratable-target>
    <jdbc-store>
    <name>eFpJMSJDBCStore</name>
    <prefix-name>WLJMS_</prefix-name>
    <data-source>eFpNonXADataSource</data-source>
    <target>efpserver_man1 (migratable)</target>
    </jdbc-store>
    <jdbc-store>
    <name>eFpJMSJDBCStore2</name>
    <prefix-name>WLJMS2_</prefix-name>
    <data-source>eFpNonXADataSource</data-source>
    <target>efpserver_man2 (migratable)</target>
    </jdbc-store>
    <jms-system-resource>
    <name>eFPJMS</name>
    <target>efpcluster</target>
    <sub-deployment>
    <name>eFPServer</name>
    <target>eFpJMSServer</target>
    </sub-deployment>
    <sub-deployment>
    <name>eFPServer2</name>
    <target>eFpJMSServer2</target>
    </sub-deployment>
    <descriptor-file-name>jms/efpjms-jms.xml\JMS Description-jms.xml</descriptor-file-name>
    </jms-system-resource>
    <admin-server-name>AdminServer</admin-server-name>
    <jdbc-system-resource>
    <name>eFpDataSource</name>
    <target>efpcluster</target>
    <descriptor-file-name>jdbc/eFpDataSource-2004-jdbc.xml</descriptor-file-name>
    </jdbc-system-resource>
    <jdbc-system-resource>
    <name>eFpNonXADataSource</name>
    <target>efpcluster</target>
    <descriptor-file-name>jdbc/eFpNonXADataSource-6172-jdbc.xml</descriptor-file-name>
    </jdbc-system-resource>
    </domain>
    ##JMS Description-jms.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://www.bea.com/ns/weblogic/weblogic-jms" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-jms [http://www.bea.com/ns/weblogic/weblogic-jms/1.0/weblogic-jms.xsd]">
    <connection-factory name="ConnectionFactory">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>jms/ConnectionFactory</jndi-name>
    <security-params>
    <attach-jmsx-user-id>false</attach-jmsx-user-id>
    </security-params>
    </connection-factory>
    <connection-factory name="XAConnectionFactory">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>jms/XAConnectionFactory</jndi-name>
    <transaction-params>
    <transaction-timeout>3600</transaction-timeout>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    <security-params>
    <attach-jmsx-user-id>false</attach-jmsx-user-id>
    </security-params>
    </connection-factory>
    <uniform-distributed-queue name="ActiveActivityQueue">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>queue/efpActiveActivityQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>-1</forward-delay>
    <reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>
    </uniform-distributed-queue>
    <uniform-distributed-topic name="AdminTopic">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>topic/efpAdminTopic</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-topic>
    <uniform-distributed-topic name="AuditTopic">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>topic/efpAuditTopic</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-topic>
    <uniform-distributed-topic name="ErrorTopic">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>topic/efpErrorTopic</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-topic>
    <uniform-distributed-topic name="FreeTextTopic">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>topic/efpFreeTextTopic</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-topic>
    <uniform-distributed-topic name="ReportingTopic">
    <default-targeting-enabled>true</default-targeting-enabled>
    <jndi-name>topic/efpReportingTopic</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-topic>
    </weblogic-jms>
    -----

    Getting the following exception while trying to connect the JMS destination I am using weblogic 10.3.3 connecting to oracle AQ. The config has been done as per the 'Interoperating with Oracle AQ JMS' document from oracle. I could see that while deploying the application the number of connections in the database increasing to 15 and getting the following error message.
    <Jun 15, 2011 4:14:29 PM EDT> <Warning> <EJB> <BEA-010061> <The Message-Driven E
    JB: SampleEJBBean is unable to connect to the JMS destination: jms/propQueue. Th
    e Error was:
    oracle.jms.AQjmsException: Internal error: Cannot obtain XAConnection weblogic.c
    ommon.resourcepool.ResourceLimitException: No resources currently available in p
    ool TestDataSource to allocate to applications, please increase the size of the
    pool and retry..
    at weblogic.common.resourcepool.ResourcePoolImpl.reserveResourceInternal
    (ResourcePoolImpl.java:555)
    at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(Resourc
    ePoolImpl.java:332)
    at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(Resourc
    ePoolImpl.java:322)
    at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.j
    ava:438)
    at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.j
    ava:317)
    at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(Connectio
    nPoolManager.java:93)
    at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(Connectio
    nPoolManager.java:61)
    at weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java:
    1670)
    at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
    468)
    at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:439)
    at weblogic.jdbc.jta.DataSource.connect(DataSource.java:396)
    at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
    ce.java:355)
    at oracle.jms.AQjmsDBConnMgr.getConnection(AQjmsDBConnMgr.java:566)
    at oracle.jms.AQjmsXAConnection.createXAQueueSession(AQjmsXAConnection.j
    ava:214)
    at weblogic.ejb.container.internal.JMSConnectionPoller.setUpQueueSession
    s(JMSConnectionPoller.java:1545)
    at weblogic.ejb.container.internal.JMSConnectionPoller.createJMSConnecti
    on(JMSConnectionPoller.java:2047)
    at weblogic.ejb.container.internal.JMSConnectionPoller.connect(JMSConnec
    tionPoller.java:787)
    at weblogic.ejb.container.internal.MDConnectionManager.startConnectionPo
    lling(MDConnectionManager.java:244)
    at weblogic.ejb.container.manager.MessageDrivenManager.start(MessageDriv
    enManager.java:584)
    at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.mdManagerSt
    art(MessageDrivenBeanInfoImpl.java:1334)
    at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.deployMessa
    geDrivenBeans(MessageDrivenBeanInfoImpl.java:1314)
    at weblogic.ejb.container.deployer.EJBDeployer.deployMessageDrivenBeans(
    EJBDeployer.java:1669)
    at weblogic.ejb.container.deployer.EJBDeployer.start(EJBDeployer.java:14
    93)
    at weblogic.ejb.container.deployer.EJBModule.start(EJBModule.java:614)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(Module
    ListenerInvoker.java:249)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleSta
    teDriver.java:427)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:43)
    at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStat
    eDriver.java:119)
    at weblogic.application.internal.flow.StartModulesFlow.activate(StartMod
    ulesFlow.java:28)
    at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.ja
    va:1269)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:43)
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.
    java:409)
    at weblogic.application.internal.SingleModuleDeployment.activate(SingleM
    oduleDeployment.java:43)
    at weblogic.application.internal.DeploymentStateChecker.activate(Deploym
    entStateChecker.java:161)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(Ap
    pContainerInvoker.java:79)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.ac
    tivate(AbstractOperation.java:569)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.ac
    tivateDeployment(ActivateOperation.java:150)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.do
    Commit(ActivateOperation.java:116)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.co
    mmit(AbstractOperation.java:323)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploym
    entCommit(DeploymentManager.java:844)
    at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeplo
    ymentList(DeploymentManager.java:1253)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(
    DeploymentManager.java:440)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.com
    mit(DeploymentServiceDispatcher.java:164)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallb
    ackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallb
    ackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallb
    ackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:69)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTunin
    gWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

  • OSB : Alert Destination not alerting on the JMS destination Topic

    Hi,
    I am using OSB alert destination to alert on an SLA alert of a proxy service.
    The alert destnation configuration has a JMS destination of Topic type. Syntax which i followed is jms://localhost:8011/weblogic.JmsConnectionFactory/weblogic.ReportingTopic
    I am able to see the alerts on the dashboard but then i cannot get the alert on topic.
    I could see the below exception in log file:
    Alert Rule Name: test.
    com.bea.wli.sb.transports.TransportException: [JMSClientExceptions:055091]Destination JmsModule!ReportingTopic must be a queue
         at com.bea.wli.sb.transports.jms.JmsOutboundMessageContext.send(JmsOutboundMessageContext.java:570)
         at com.bea.wli.sb.transports.jms.JmsTransportProvider.sendMessageAsync(JmsTransportProvider.java:681)
         at sun.reflect.GeneratedMethodAccessor1206.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.bea.wli.sb.transports.Util$1.invoke(Util.java:83)
         at $Proxy123.sendMessageAsync(Unknown Source)
         at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageWithoutService(TransportManagerImpl.java:490)
         at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageAsync(TransportManagerImpl.java:417)
         at com.bea.wli.sb.init.FrameworkStarter$TransportServiceImpl.sendMessageAsync(FrameworkStarter.java:391)
         at com.bea.alsb.alert.action.jms.JmsActionProvider.executeAction(JmsActionProvider.java:346)
         at com.bea.alsb.alert.AlertDestinationHandlerImpl.sendAlertToDestination(AlertDestinationHandlerImpl.java:105)
         at com.bea.alsb.alert.AlertDestinationHandlerImpl.sendAlertToDestination(AlertDestinationHandlerImpl.java:67)
         at com.bea.alsb.alert.sla.SlaAlertManager.generateAlert(SlaAlertManager.java:149)
         at com.bea.alsb.alert.sla.SlaAlertManager.access$100(SlaAlertManager.java:33)
         at com.bea.alsb.alert.sla.SlaAlertManager$RuleListenerForAlertGeneration.onRuleTrue(SlaAlertManager.java:227)
         at com.bea.alsb.rule.RuleEngine$ListenerInvocation.invokeListener(RuleEngine.java:76)
         at com.bea.alsb.rule.RuleEngine$ListenerInvocation.access$000(RuleEngine.java:61)
         at com.bea.alsb.rule.RuleEngine.addFact(RuleEngine.java:115)
         at com.bea.alsb.alert.sla.SlaAlertManager.intervalCompleted(SlaAlertManager.java:202)
         at com.bea.alsb.alert.sla.TaskCollector$RuleEvaluationTask.run(TaskCollector.java:177)
         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
         at java.util.concurrent.FutureTask.run(FutureTask.java:139)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909)
         at java.lang.Thread.run(Thread.java:619)
    In the alert destination i selected the destination type as topic. Is there anything i am missing. I checked the documentation it says that the jms destination in alert destination can be Queue/Topic. Please suggest. Thanks in advance

    A topic wont persist the message, unlike a queue, if there are no subscribers attached to it currently or if there are no durable subscriptions. Create a proxy service to consume the alert from the topic and see whether you are getting it within the proxy's pipeline.

  • Foreign JMS Server Persistance\Retry in case Remote JMS Provider goes down

    Hi All
    I would need more clarity on this. How does the Foreign JMS Server behave in case the remote JMS provider goes down. Does it take the message from the Publishing Proxy Service and retries\persists the JMS Message till the remote provide is up?
    Please let us know. This would effect our design as retrial is very important here. Thanks

    If you want to provide guaranteed delivery with automatic retries when using remote JMS implementations, there are multiple ways to implement it:
    1. While reading from a foreign JMS destination
    Create a Foreign JMS server using transactional drivers (use XA in case of JMS). The messages remain on remote server JMS queue and OSB proxy polls the message directly on remote server. So if Remote Server is down OSB will not be able to read the message. Once remote server is up OSB will pick up the message (as long as foreign JMS server provides persistence and maintains the messages in the queue during a server restart). In case of error in OSB foreign queue can do retry if it provides a retry mechanism.
    2. While writing the message to a foreign JMS destination
    a. Use a foreign JMS server using transactional connection. Put the retry mechanism in OSB Business service which writes to the foreign JMS/MQ queue. In case of failure Business Service can retry based on configuration. If you want to provide guaranteed delivery then create a local JMS queue to store the messages. So when remote destination is down for a long time undelivered messages will be rolled back to the local queue. You can put retry mechanism on the local queue.
    b. Use a messaging bridge which will write the messages to the remote destination. You can configure retry delivery rules in messaging bridge so once busienss service writes the message to the bridge, a SAF agent will ensure the delivery to remote destination whenever it is up.

  • JMS destinations disappear from JNDI after appserv restart

    I am using the PE 8.1 2005Q1 application server. I create a jms resource as jms/myQueue and I can see it using the JNDI browser.
    However, after restarting the application server, my destinations still show up under JMS Destinations & Admin Object Resources, but disappear from the JNDI browser and are unavailable to clients!
    Do I need to perform an addtional step in order to get the appserver to persist these jndi registrations? There appears to be a disconnect between JMS and JNDI. Any help is greatly appreciated.

    JMS has a ForeignJMSProvider config option to do this I believe. 9.0 will also support this more generally.

  • JMS Destination object not found

    Hi everyone,
    I have a weird problem with SunONE Message Queue 3.
    I have a queue and a connection factory defined (using the SunONE Application Server 7 Admin Console) as well as a physical resource.
    I can verify their existance using asadmin....
    asadmin>list-jmsdest -u admin server1
    queue_1 queue {}
    asadmin>list-jms-resources -u admin server1
    jms/newqueue_1
    jms/newQCF_1
    When I attempt to deploy a message driven EJB I get the following error
    SEVERE ( 1484): javax.naming.InvalidNameException: JMS Destination object not found:`jms/newqueue_1`
    This question has already been asked on the App Server board here http://swforum.sun.com/jive/thread.jspa?threadID=15517&tstart=0 (that post is nine months old btw).
    I am posting this here in the hope that someone more familiar with MQ3 may have an idea of how to help us.
    Thanks in advance.

    I have now solved this problem. External JNDI resources are required in the AppServer.
    They can be created with the following commands:
    asadmin>create-jndi-resource jndilookupname jms/newQCF_1 resourcetype javax.jms.QueueConnectionFactory factoryclass com.sun.jndi.fscontext.RefFSContextFactory enabled=true --property java.naming.provider.url=file\:///c\:/java/mqjndi:java.naming.security.authentication=none newQCF_1
    asadmin>create-jndi-resource jndilookupname jms/queue_1 resourcetype javax.jms.Queue factoryclass com.sun.jndi.fscontext.RefFSContextFactory enabled=true --property java.naming.provider.url=file\:///c\:/java/mqjndi newqueue_1
    Both these commands assume that the file system context is being used however the LDAP commands are similar (just more properties).
    This step, which seems vital, is missing from the AppServer documentation (in fact it specifically states that this step is not necessary). The irony is that I found the answer in the IBM MQ documentation!

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

  • Additional JMS Destination Attributes

    How can I associate additional attributes to an Administered Object in
              JNDI? Specifically, I want to add a JMS Destination (Queue) to the
              JNDI context. I want the Queue to also have 2 additional attributes
              for my application to process. The additional attributes I need to
              associate with the Administered Queue Object are: Reply-To-Queue and a
              boolean value (log message or don't log message).
              I went into the JNDI namespace (iPlanet Directory Server in this
              case), and manually added additional attributes in the
              javaReferenceAddress. The JMS API did not choke on this, but I can't
              figure out a way to expose this either.
              

    I found that if I in the JMS receiver queue tick Specify Additional JMS Message Properties (Maximum of 10) and provide the name JMSReplyTo and the value Sting I can collect the ReplyTo queue name via a parameter in the operation mapping and the value of that parameter I can set to the Dynamic Configuration variable DCJMSMessageProperty0 in a UDF like this:
    String x = container.getInputParameters().getString("replyToQueueName");
    DynamicConfiguration conf1 = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION) ;
    DynamicConfigurationKey key1 = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS", "DCJMSMessageProperty0") ;
    conf1.put(key1, x);
    return "";

  • JMS Destinations in a cluster

    I'm having a problem getting managed nodes in a cluster to find JMS Queues
              and Topics.
              The Connection Factory is found, but the destinations are not.
              I have targeted the JMS Server to one node in the cluster.
              I have targeted the Connection Factories to the cluster.
              Is there something else that needs to be done to get the destinations
              available to the cluster?
              When I view the JNDI tree of the slave nodes, the destinations just are not
              there. I wait and wait and they don't show up.
              A.M.
              

    I have a question that relates to this discussion.
              When I deploy a topic on a cluster I am only allowed to deploy it on one
              JMSServer. Trying to deploy it on more than one gives me a JNDI error
              (duplicate name). This works fine, however, and messages are delivered to
              all members of the cluster. But if I kill off the server where the
              destination topic exists, that topic disappears from the cluster and further
              messages cannot be delivered. Weblogic tells me that the topic does not
              exist. My question is - how do I get the topic to survive the failure of
              the server on which it is deployed? Why doesn't replication keep the topic
              alive?
              "Tom Barnes" <[email protected]> wrote in message
              news:[email protected]...
              > Note that the admin server does not participate in the cluster so
              > it doesn't participate in JNDI replication. If JMS destinations
              > exist on the admin server one must use a JNDI context
              > that is pinned to the admin server to find them... Same deal
              > with connection factories that can talk to the admin server.
              >
              > Zach wrote:
              >
              > > Could you please post your config.xml file (the one that doesn't
              > > work where the JMS server is deployed to the admin server).
              > > _sjz.
              > >
              > > "Asynch Messaging" <[email protected]> wrote in message
              > > news:[email protected]...
              > > > I found that we were attempting to deploy the JMS Server to the
              'admin'
              > > > server, rather than a managed server.
              > > > This apparently is not allowed.
              > > >
              > > > A.M.
              > > >
              > > > "Asynch Messaging" <[email protected]> wrote in message
              > > > news:[email protected]...
              > > > > I'm having a problem getting managed nodes in a cluster to find JMS
              > > Queues
              > > > > and Topics.
              > > > > The Connection Factory is found, but the destinations are not.
              > > > >
              > > > > I have targeted the JMS Server to one node in the cluster.
              > > > > I have targeted the Connection Factories to the cluster.
              > > > >
              > > > > Is there something else that needs to be done to get the
              destinations
              > > > > available to the cluster?
              > > > > When I view the JNDI tree of the slave nodes, the destinations just
              are
              > > > not
              > > > > there. I wait and wait and they don't show up.
              > > > >
              > > > > A.M.
              > > > >
              > > > >
              > > > >
              > > >
              > > >
              >
              

  • Changing the archive destination in standby database?

    My DB is running on Oracle 9.2.0.6.0. I have data guard for my primary database.
    Now i wanted to change the archive destination only standby database. What is the process? Any response or any link is appreicated. Thanks

    The standby database wouldn't generate archivelogs until and unless it is opened (eg in a failover). So, although there is a definition for the log archive destination in the standby's init.ora / spfile, it is used only to read archivelogs shipped from the primary.
    If you are talking of the destination that the primary's archivelogs are shipped to on the standby, technically once the archivelogs are applied on the standby, they are not required and can be deleted. You would be able to configure this.

  • [svn] 2692: Bug: BLZ-227 - When using JMS Destination, MessageClient and FlexClient not released from memory when the session times out .

    Revision: 2692
    Author: [email protected]
    Date: 2008-07-31 13:05:35 -0700 (Thu, 31 Jul 2008)
    Log Message:
    Bug: BLZ-227 - When using JMS Destination, MessageClient and FlexClient not released from memory when the session times out.
    QA: Yes
    Doc: No
    Checkintests: Pass
    Details: Fixed a memory leak with JMS adapter. Also a minor tweak to QA build file to not to start the server if the server is already running.
    Ticket Links:
    http://bugs.adobe.com/jira/browse/BLZ-227
    Modified Paths:
    blazeds/branches/3.0.x/modules/core/src/java/flex/messaging/services/messaging/adapters/J MSAdapter.java
    blazeds/branches/3.0.x/qa/build.xml

    Revision: 2692
    Author: [email protected]
    Date: 2008-07-31 13:05:35 -0700 (Thu, 31 Jul 2008)
    Log Message:
    Bug: BLZ-227 - When using JMS Destination, MessageClient and FlexClient not released from memory when the session times out.
    QA: Yes
    Doc: No
    Checkintests: Pass
    Details: Fixed a memory leak with JMS adapter. Also a minor tweak to QA build file to not to start the server if the server is already running.
    Ticket Links:
    http://bugs.adobe.com/jira/browse/BLZ-227
    Modified Paths:
    blazeds/branches/3.0.x/modules/core/src/java/flex/messaging/services/messaging/adapters/J MSAdapter.java
    blazeds/branches/3.0.x/qa/build.xml

  • I want store JMS queue in oracle database..

    Hi all,
    I want store JMS queue in oracle database..
    How can i configure my jboss 3.0.1
    Thanks,
    Thilsen

    Oracle provides this functionality with Advanced Queues
    http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96587/qintro.htm
    Although the API is JMS-compliant, the administration can be quite burdensome.

  • A JMS destination limit was reached.

    Hi,
    I encounter en error when I deploy an application under Application Server 9.
    I got the following error message :
    A JMS destination limit was reached. Too many Subscribers/Receivers for Queue : NewMessage user=guest, broker=localhost:7676(2832)What I need to configure / change / adapt my code ? I use the Click Framework to retrieve a Facade :
        /** Creates a new instance of Hello */
        public Hello() {
            tableToto = new Table();
            if (newsEntityFacade == null) newsEntityFacade = lookupNewEntityFacade();
            tableToto.setClass("simple");
            tableToto.setPageSize(40);
            tableToto.setName("tableToto");
            tableToto.addColumn(new Column("id"));
            tableToto.addColumn(new Column("title"));
            tableToto.addColumn(new Column("body"));
            index = 0;
            max = newsEntityFacade.count();
            rowByPage = tableToto.getPageSize();
            tableToto.setRowCount(max / rowByPage);
      private NewEntityFacadeLocal lookupNewEntityFacade() {
            try {
                Context c = new InitialContext();
                return (NewEntityFacadeLocal) c.lookup("java:comp/env/ejb/NewEntityFacade");
            catch(NamingException ne) {
                Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
                throw new RuntimeException(ne);
        }And my Facade is declared as @Stateless

    I've checked that topic earlier before I have posted mine, but at that time it didn't strike me! Now, I realize the exact problem!
    I need to undeploy my message-driven bean tutorial example, which was using the same queue!
    Thanks.

  • Javax.jms.Destination found at the specified.....

    I am making a Message Driven EJB, but i get this error when i try to run it."javax.jms.Destination found at the specified destination-location (jms/theTopic) for MessageDrivenBean MessageDrivenEJB".I am using JDeveloper 9.0.5
    My ejb-jar
    <enterprise-beans>
    <message-driven>
    <description>Message Driven Bean</description>
    <display-name>MessageDrivenEJB</display-name>
    <ejb-name>MessageDrivenEJB</ejb-name>
    <ejb-class>mypackage1.MessageDrivenEJBBean</ejb-class>
    <transaction-type>Container</transaction-type>
    <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
    <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    <subscription-durability>NonDurable</subscription-durability>
    </message-driven-destination>
    <resource-ref>
    <res-ref-name>TopicFactory</res-ref-name>
    <res-type>javax.jms.TopicConnectionFactory</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </message-driven>
    </enterprise-beans>
    <assembly-descriptor/>
    </ejb-jar>
    My orion-ejb-jar
    <orion-ejb-jar>
    <enterprise-beans>
    <message-driven-deployment name="MessageDrivenEJB" destination-location="jms/theTopic" connection-factory-location="jms/theTopicConnectionFactory">
    <resource-ref-mapping name="The Topic" location=" jms/theTopic"/>
    </message-driven-deployment>
    </enterprise-beans>
    <assembly-descriptor>
    <default-method-access>
    <security-role-mapping/>
    </default-method-access>
    </assembly-descriptor>
    </orion-ejb-jar>
    and my jms.xml
    <topic name="The Topic" location="jms/theTopic">
    <description>A dummy topic</description>
    </topic>
    <topic-connection-factory name="jms/theTopicConnectionFactory" location="jms/theTopicConnectionFactory">
    <description>A dummy topic connection factory</description>
    </topic-connection-factory>
    I hope that there i somebody who can help.. :-)

    The files orion-ejb-jar and jms.xml are not defined in JMS or Java EE, so unless there are any Orion experts on this forum you may need to ask in a forum specific to your application server.
    Nigel

Maybe you are looking for

  • MacBook connection tv

    Please help me: I understand you need a HMDI for the picture and another connection for the sound but I don't know wether I have DVI or not on my MB Intel. The tv is a Panasonic viera TX-26LXD70. Which cables should I buy? Thanks, Roberta

  • How to keep just the selected angles in a multicamera sequence??

    Hello, Is there any way to "uncollapse" ala Final Cut for lack of another word, the multi camera clips?? I just want to keep in the sequence the selected angles and not be in a multi camera nested environment type thing. If I disable the mutlicamera

  • How to disable 'select display' on screen sharing?

    One improvement in Lion is Screen Sharings 'asking' of the current logged in user as to whether or not it is ok to share the screen.  While I understand the need for this in a multi-user environment, this is a unnecessary level of feature for most ho

  • Export Available Important Windows updates to Excel File

    Hi, I want to export List of Important Windows updates available in Windows Updates to excel or csv file by using CMD. I don't have any WSUS server deployed. I want to do this by using CMD command. Anyone can help? Regards, Riaz Javed

  • Servlet error: Renderer failed: java.lang.NoClassDefFoundError

    I receive this error in OEM, hostname:1810 on Linux Server. Servlet error: Renderer failed: java.lang.NoClassDefFoundError Any ideas? Thanks.