Error in JMS Message ?

Hi all,
I am using Netbeans 5.5 but in JMS i got the error. Do you have any idea for this error?
Error:
Could not verify successfully.
java.lang.IllegalArgumentException: This ejb has no message destination reference by the name topic
     at com.sun.enterprise.deployment.EjbDescriptor.getMessageDestinationReferenceByName(EjbDescriptor.java:1379)
     at com.sun.enterprise.deployment.node.runtime.MessageDestinationRefNode.setElementValue(MessageDestinationRefNode.java:86)
     at com.sun.enterprise.deployment.node.SaxParserHandler.endElement(SaxParserHandler.java:408)
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
     at com.sun.org.apache.xerces.internal.impl.dtd.XMLNSDTDValidator.endNamespaceScope(XMLNSDTDValidator.java:260)
     at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2059)
     at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:932)
     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
     at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
     at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:279)
     at com.sun.enterprise.deployment.archivist.Archivist.readRuntimeDeploymentDescriptor(Archivist.java:514)
     at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:309)
     at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:200)
     at com.sun.enterprise.deployment.archivist.ApplicationArchivist.readModulesDescriptors(ApplicationArchivist.java:308)
     at com.sun.enterprise.tools.verifier.VerificationHandler.createApplicationDescriptor0(VerificationHandler.java:442)
     at com.sun.enterprise.tools.verifier.VerificationHandler.createApplicationDescriptor(VerificationHandler.java:252)
     at com.sun.enterprise.tools.verifier.VerificationHandler.initStandalone(VerificationHandler.java:203)
     at com.sun.enterprise.tools.verifier.VerificationHandler.<init>(VerificationHandler.java:96)
     at com.sun.enterprise.tools.verifier.Verifier.verify(Verifier.java:127)
     at com.sun.enterprise.tools.verifier.Verifier.main(Verifier.java:101)
But my code is here..
@MessageDriven(mappedName = "jms/SavingsMessage", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destinationName", propertyValue = "jms/Topic"),
@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
@ActivationConfigProperty(propertyName = "clientId", propertyValue = "SavingsMessage"),
@ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "SavingsMessage")
public class SavingsMessage implements MessageListener {
/** Creates a new instance of SavingsMessage */
public SavingsMessage() throws NamingException {
try{
InitialContext ctx = null;
try {
ctx = new InitialContext();
} catch (NamingException ex) {
ex.printStackTrace();
ConnectionFactory factory = null;
try {
factory = (ConnectionFactory) ctx.lookup("jms/SavingsMessage");
} catch (NamingException ex) {
ex.printStackTrace();
Topic topic = (Topic)ctx.lookup("jms/Topic");
Connection connect = factory.createConnection();
Session session = connect.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(this);
connect.start();
}catch(JMSException ex){
public void onMessage(Message message) {
TextMessage msg = (TextMessage)message;
String txtmsg = "";
try {
txtmsg = msg.getText();
} catch (JMSException ex) {
ex.printStackTrace();
System.out.println("Receive message:" + txtmsg.toString());
XML Descriptor:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>SavingsAccountBean</ejb-name>
<jndi-name>jdbc/SavingsAccount</jndi-name>
<message-destination-ref>
<message-destination-ref-name>topic</message-destination-ref-name>
<jndi-name>jms/Topic</jndi-name>
</message-destination-ref>
</ejb>
<ejb>
<ejb-name>SavingsMessage</ejb-name>
<jndi-name>jms/SavingsMessage</jndi-name>
<jms-durable-subscription-name>SavingsMessage</jms-durable-subscription-name>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
Thank you for your reply...
Best Regards,
Chris

Hi,
Thanks a lot for your response. The oc4j-ra.xml is located in C:\product\10.1.3.1\OracleAS_1\j2ee\home\application-deployments\default\JmsAdapter
Entry is :
<connector-factory location="TestRequestQueueJNDI" connector-name="Jms Adapter">
          <config-property name="connectionFactoryLocation" value="TestJMSCF"/>
          <config-property name="factoryProperties" value="java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory; java.naming.provider.url=t3://hostName:port; java.naming.security.principal=weblogic;java.naming.security.credentials=weblogic"/>
          <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
          <config-property name="isTopic" value="false"/>
          <config-property name="isTransacted" value="false"/>
          <config-property name="username" value="weblogic"/>
          <config-property name="password" value="weblogic"/>
          <connection-pooling use="none">
          </connection-pooling>
          <security-config use="none">
          </security-config>
     </connector-factory>
Thanks
Chandra

Similar Messages

  • Error reading jms message from MQ-queue

    Hi,
    To be able to use async-sync bridge in JMS adapter, we recently patched XI 3.0 from SP 15 to SP21. But the jms sender adapter has problem reading the message from the MQ-queue, see detail of error-message at the end of this message.
    I did change the adapter to use modules use RequstResponseBean and ResponseOneWayBean as explaned on help.sap.com.
    The async-sync bridge worked once and the it started failing.
    Detailed error message in communication channel monitoring:
    Error while processing message '3c5a0640-9c03-11dc-82f2-000255d3bbf7';  detailed error description: com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: Could not begin a AF transaction: TxManagerException: Unable to open transaction: com.sap.engine.services.ts.exceptions.BaseSystemException at com.sap.aii.adapter.jms.core.channel.filter.TxManagerFilter.filterSend(TxManagerFilter.java:103) ...
    /Maria Lande

    Hi,
    I fixed it myself. I hade to do a Xi Data Cahe Refresh.
    Navigate to Administration section on the SAP Exchange Infrestructure start page. On the Directory tab page, choose Cache overview under the heading Administration of Locks and Caches. Do a Full Cache Refresh on the adapter engine.
    /Maria Lande

  • Error in JMS message routing

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

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

  • Duplicate JMS Message

    Hello All,
    We are facing an issue with JMS connection - getting the error: 'Duplicate JMS message with JMS Message ID ID: 414************************* detected. Duplicate will be ignored.'
    Cause: Issue has stared when we had a Huge Pile-Up somedays back in PI queue (in SMQ2). During that period, messages didnt reach PI, and hence messages went to JMS-ApplicationTeam's BACKOUT Queue. They have tried to replay the messages from their BackOut queue, and when they try to do so we are getting this error. (and actually failing in SAP PI SXMB_MONI)
    Please find the attached screenshot.
    Regards,
    KarthiSP

    Hi karthi
    You will have to delete the entries from the table or disable the duplicate check in adapter.
    Check the following blogs
    Duplicate message error in JMS adapter
    Disable the duplicate check in SAP PI n sender JMS adapter is it possible?
    Duplicate message id's in IE
    Regards
    Osman

  • Need suggestion on  implementing JMS message error recovery

    Hi,
    Our application has a JMS topic where we publish application events. Now, there can be scenarios where the consumers cannot process the message due to some infrastructure issues and would error out. We need a way so that those messages can be reprocessed again later. we are thinking of the following design for JMS message error recovery
    1. Use a persistent TOPIC (this would ensure guaranteed delivery)
    2. Configure a error destination on JMS topic e.g a jms queue
    3. Have an error handling MDB listening to the Error destination. An error handling MDB would dequeue the errored messages from error destination and persist it to a Data base "error" table..
    4. Provide a mechanism to republish those messages to topic (e.g a scheduler or admin ui or a command line utility) .. The messages would deleted from database "error" table and published to topic again....
    A. Are there any issues with the above design which we need to handle?
    B. Are there any additional steps required in a Cluster environment with a distributed topic and distribute error destination? (our error mdb will have one-copy-per-application setting)
    B. From a performance angle, Is it OK to use persistent TOPIC ? Or will it better to persist the message to the db table and then publish it as a non persistent message ... ? (But i guess the performance should be more or less the same in both of these approaches)
    C. Are there any other recommended design patterns for error recovery of JMS messages
    Please advise.
    Regards,
    Arif

    Thanks Tom !
    We may not be able to go with the approach of delaying/pausing redelivery of the messsage because
    1. Pausing entire MDB approach: Our MDB application consumes messages generated by different producers and our MDB needs to continue processing the messages even if messages corresponding to one producer is erroring out
    2. Redelivery delay : This would only delay the retry of an errored message. But there would still be a problem if the message fails during all retries (i.e redelivery limit count). We don't want to lose this message. In our case, It is possible that a particular message cannot be processed due to unavailability of a third party system for hours or may be a day.
    Basically, i am looking on approaches for a robust and performant error recovery/retry framework for our application (refer details in my first post on this thread) while fully making use of all features provided by middleware (WLS). Please advise.
    Regards,
    Arif

  • Error while Inserting message in JMS

    Version : SOA 11G
    I am getting following error while inserting message in JMS.
    rror Message: {http://schemas.oracle.com/bpel/extension}bindingFault
    Fault ID     default/TestingSOA!2.0*soa_3b8b3493-6062-457c-8213-5dd613c95dd3/TransformData/30014-BpInv0-BpSeq0.3-4
    Fault Time     06-Dec-2010 03:25:10
    Non Recoverable System Fault :
    <bpelFault><faultType>0</faultType><bindingFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'Produce_Message' failed due to: ERRJMS_ERR_CR_QUEUE_PROD. ERRJMS_ERR_CR_QUEUE_PROD. Unable to create Queue producer due to JMSException. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. </summary></part><part name="detail"><detail>[JMSExceptions:045103]While trying to find a topic or a queue we could not find the specific JMSServer requested. The linked exception may contain more information about the reason for failure.</detail></part><part name="code"><code>null</code></part></bindingFault></bpelFault>
    Steps followed while creating JMS
    1. Login to weblogic console
    2. Click Services>Messaging>JMS Module
    3. Select SOAJMSModule
    4. Click new, select Queue and press Next
    5. Give JMS Name and JNDI
    5. Pick Subdepolyment as "SOASUBDeployment" from dropdown and select JMS Server as "SOAJMSServer" and click "Finish"

    Steps followed while creating JMS
    +1. Login to weblogic console+
    +2. Click Services>Messaging>JMS Module+
    +3. Select SOAJMSModule+
    +4. Click new, select Queue and press Next+
    +5. Give JMS Name and JNDI+
    +5. Pick Subdepolyment as "SOASUBDeployment" from dropdown and select JMS Server as "SOAJMSServer" and click "Finish"+
    Next u need to create Connection Factory and u need to update or create(if doesnt exist) a new plan.xml
    Follow the below link:
    http://www.packtpub.com/article/installation-configuration-oracle-soa-suite-11g-2

  • Adapter Status Error :  Error in creating message ID map for JMS message:

    Currently in the SAP XI 3.0 JMS Adapter, I am receiving the following error
    Error in creating message ID map for JMS message:
    ie. Error while processing message 'de8265f6-c864-4479-1137-9bab17b78b3b';  detailed error description: com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: Error in creating message ID map for JMS message: ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 at com.sap.aii.adapter.jms.core.channel.filter.InboundDuplicateCheckFilter.filter(InboundDuplicateCheckFilter.java:103)
    Although I am receivng this error, when I check the details of the message processing, all steps are successful and the message is set to status : DLVD
    Audit Log for Message: de8265f6-c864-4479-1137-9bab17b78b3b
    Time Stamp     Status     Description
    09.06.2009 13:27:24     Success     New JMS message with JMS message ID ID:c3e2d840d8d4d7f14040404040404040c44f8e2213630b01 received. The XI message ID for this message is de8265f6-c864-4479-1137-9bab17b78b3b
    09.06.2009 13:27:24     Success     JMS message converted to XI message format successfully
    09.06.2009 13:27:24     Success     RRB: entering RequestResponseBean
    09.06.2009 13:27:24     Success     RRB: suspending the transaction
    09.06.2009 13:27:24     Success     RRB: passing through ...
    09.06.2009 13:27:24     Success     RRB: leaving RequestResponseBean
    09.06.2009 13:27:24     Success     Transform: using Transform.Class: com.sap.aii.messaging.adapter.Conversion
    09.06.2009 13:27:24     Success     Transform: transforming the payload ...
    09.06.2009 13:27:24     Success     Transform: successfully transformed
    09.06.2009 13:27:24     Success     Application attempting to send an XI message synchronously using connection JMS_http://sap.com/xi/XI/System.
    09.06.2009 13:27:24     Success     Trying to put the message into the call queue.
    09.06.2009 13:27:24     Success     Message successfully put into the queue.
    09.06.2009 13:27:24     Success     The message was successfully retrieved from the call queue.
    09.06.2009 13:27:24     Success     The message status set to DLNG.
    09.06.2009 13:27:25     Success     The application sent the message synchronously using connection JMS_http://sap.com/xi/XI/System. Returning to application.
    09.06.2009 13:27:25     Success     The message was successfully transmitted to endpoint http://sapxia.swets.nl:8000/sap/xi/engine?type=entry using connection JMS_http://sap.com/xi/XI/System.
    09.06.2009 13:27:25     Success     The message status set to DLVD.
    Not sure why this is occurring.......

    No, not using correlation id.
    I was able to resolve the issue on this queue by changing the following setting
    Under the PROCESSING tab, under XI SETTINGS
    Time period for Duplicate Check for EO(IO) (secs) it was set to 86400
    I have changed this to 300 seconds and the adapter has now gone green.
    BUT......
    That said, I have the exact scenario on another sender JMS channel set to 300 seconds and it exhibits the same issue.
    correlation settings:
    Set XI message id  to  = GUID
    Set Xi conversation

  • MQ 6 WLS 9.2 JMS Message Bridge Error

    I tried to set up a JMS message bridge between MQ 9.2 and WLS 9.2 collocated on the same server following the BEA example:
              1.Create local queue on MQ
              2.Bind queue using JMSAdmin
              3.Create JMS bridge betwen a source destination using JNDI name in #2 and a local WLS queue.
              Here is the WLS config:
              <messaging-bridge>
              <name>MQ-WLSBridge</name>
              <target>adminServer</target>
              <source-destination>MQ-WLSSource</source-destination>
              <target-destination>MQ-WLSTarget</target-destination>
              <selector></selector>
              <quality-of-service>Exactly-once</quality-of-service>
              <qos-degradation-allowed>true</qos-degradation-allowed>
              <durability-enabled>true</durability-enabled>
              <idle-time-maximum>60</idle-time-maximum>
              <async-enabled>true</async-enabled>
              <started>true</started>
              <preserve-msg-property>false</preserve-msg-property>
              </messaging-bridge>
              <jms-bridge-destination>
              <name>MQ-WLSTarget</name>
              <adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDINoTX</adapter-jndi-name>
              <classpath></classpath>
              <connection-factory-jndi-name>com.MetaSolv.Security.QueueConnectionFactory</connection-factory-jndi-name>
              <connection-url>t3://localhost:7005</connection-url>
                   <destination-jndi-name>WLSMessageQueue</destination-jndi-name>
              </jms-bridge-destination>
              <jms-bridge-destination>
              <name>MQ-WLSSource</name>
              <adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDINoTX</adapter-jndi-name>
              <classpath></classpath>
              <connection-factory-jndi-name>QCF</connection-factory-jndi-name>
              <initial-context-factory>com.sun.jndi.fscontext.RefFSContextFactory</initial-context-factory>
              <connection-url>file:///usr/mqm/java/jndi</connection-url>
              <destination-jndi-name>MQMessageQueus</destination-jndi-name>
              </jms-bridge-destination>
              I used a standalone JMS client and was able to connect to the MQ queue using the above JNDI name, factory so the MQ side was set up properly.
              When I start up WLS, I saw that
              <The messaging bridge "MQ-WLSBridge" has been successfully deployed.>
              and the exception:
              <MessagingBridge> <BEA-200042> <Bridge MQ-WLSBridge failed to connect to the source destination and will try again in 20 seconds. This could be a temporary condition unless the messages repeat several times. (java.lang.Exception: javax.resource.ResourceException: Failed to start the connection
                   at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1458)
                   at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1438)
                   at weblogic.jms.adapter.JMSBaseConnection.startInternal(JMSBaseConnection.java:403)
                   at weblogic.jms.adapter.JMSBaseConnection.start(JMSBaseConnection.java:242)
                   at weblogic.jms.adapter.JMSManagedConnectionFactory.createManagedConnection(JMSManagedConnectionFactory.java:190)
                   at weblogic.connector.security.layer.AdapterLayer.createManagedConnection(AdapterLayer.java:802)
                   at weblogic.connector.outbound.ConnectionFactory.createResource(ConnectionFactory.java:91)
                   at weblogic.common.resourcepool.ResourcePoolImpl.makeResources(ResourcePoolImpl.java:1057)
                   at weblogic.common.resourcepool.ResourcePoolImpl.reserveResourceInternal(ResourcePoolImpl.java:346)
                   at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:294)
                   at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:277)
                   at weblogic.connector.outbound.ConnectionPool.reserveResource(ConnectionPool.java:606)
                   at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:271)
                   at weblogic.connector.outbound.ConnectionManagerImpl.getConnectionInfo(ConnectionManagerImpl.java:352)
                   at weblogic.connector.outbound.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:307)
                   at weblogic.connector.outbound.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:115)
                   at weblogic.jms.adapter.JMSBaseConnectionFactory.getSourceConnection(JMSBaseConnectionFactory.java:92)
                   at weblogic.jms.bridge.internal.MessagingBridge.getConnections(MessagingBridge.java:809)
                   at weblogic.jms.bridge.internal.MessagingBridge.run(MessagingBridge.java:1042)
                   at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
                   at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
                   at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
              )>
              There is no error in the MQ logs. What is the problem?
              CS

    C S <> wrote:
              > I tried to set up a JMS message bridge between MQ 9.2 and WLS 9.2
              > collocated on the same server following the BEA example: 1.Create local
              > queue on MQ 2.Bind queue using JMSAdmin
              > 3.Create JMS bridge betwen a source destination using JNDI name in #2 and
              > a local WLS queue.
              >
              > Here is the WLS config:
              > <messaging-bridge>
              > <name>MQ-WLSBridge</name>
              > <target>adminServer</target>
              > <source-destination>MQ-WLSSource</source-destination>
              > <target-destination>MQ-WLSTarget</target-destination>
              > <selector></selector>
              > <quality-of-service>Exactly-once</quality-of-service>
              > <qos-degradation-allowed>true</qos-degradation-allowed>
              > <durability-enabled>true</durability-enabled>
              > <idle-time-maximum>60</idle-time-maximum>
              > <async-enabled>true</async-enabled>
              > <started>true</started>
              > <preserve-msg-property>false</preserve-msg-property>
              > </messaging-bridge>
              >
              > <jms-bridge-destination>
              > <name>MQ-WLSTarget</name>
              >
              <adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDINoTX</adapter-jndi-name>
              > <classpath></classpath>
              >
              <connection-factory-jndi-name>com.MetaSolv.Security.QueueConnectionFactory</connection-factory-jndi-name>
              > <connection-url>t3://localhost:7005</connection-url>
              > <destination-jndi-name>WLSMessageQueue</destination-jndi-name>
              > </jms-bridge-destination>
              > <jms-bridge-destination>
              > <name>MQ-WLSSource</name>
              >
              Hello,
              First of all, your classpath doesn't seem to be correct. You need to add the
              MQ jars in the bridge classpath. (DONT use the server classpath for
              this!!!)
              Secondly, enable debugging in Weblogic, which will give you some
              information: -Dweblogic.Debug.DebugMessagingBridgeStartup=true -Dweblogic.Debug.DebugMessagingBridgeRuntime=true -Dweblogic.Debug.DebugMessagingBridgeRuntimeVerbose=true
              IF you have more questions, pls reply also be mail.
              Bart
              Schelstraete Bart
              [email protected]
              http://www.schelstraete.org
              http://www.linkedin.com/in/bschelst

  • Lost (and found) JMS - messages

              Using WLS 6.1 and have experienced that JMS messages has not been delivered to
              its consumer correctly. We are interested in any suggestions to what has happend,
              what can be done to avoid the problem in the future, or perhaps how we can find
              out more about the problem.
              We have a message driven bean A which sends messages to the queue Q, of which
              the message driven bean B is the only consumer.
              What we recently have experienced is that some of the messages delivered by A
              to Q never are delivered to B. But the messages seems to be persisted correctly,
              because after a restart they reappear!
              Following is a more detailed description of the scenario:
              1. A message is sendt with DeliveryMode=PERSISTENT and TimeToLive=0. QueueSender.send
              is invoked and returns normally.
              2. The consumers never gets the message (B.onMessage i never invoked with this
              message).
              3. Point 1-2 is repeated for 13 different messages over a period when ~100 similar
              messages are delivered normally.
              4. The server is then restarted.
              5. In the starup log it is indicated that 44 records are found in the JMSStore.
              6. When the server restarts, the "lost" messages gets delivered to B.
              After the server restart we have not experienced the problem again.
              Logs does not show anything unusual about the previous restart.
              Other details:
              There is always exatly 1 instance of A running, and 5-20 instances of B. A implements
              and uses a pool of javax.jms.XAQueueSession instances, which shares a single instance
              of javax.jms.XAQueueConnection. The aknowledge-mode for B is "Auto-aknowledge".
              We're using Weblogic Server 6.1.3.0 / Red Hat Linux 7.3.
              Any help on this problem is appreciated!
              

              I believe we've seen just the behaviour you describe on 6.1 SP2, but only on a
              multi-cpu box (Solaris), and only under load. We can't reproduce the problem reliably,
              and get no error messages/warnings anywhere, so very little to send to customer
              support; by the time we notice this, the problem's long passed, so a thread dump's
              of no use.
              We're going to try and see how SP5 (which has loads of JMS fixes) pans out.
              But if you find anything out, could you post here?
              simon.
              "Harald Stendal" <[email protected]> wrote:
              >
              >Using WLS 6.1 and have experienced that JMS messages has not been delivered
              >to
              >its consumer correctly. We are interested in any suggestions to what
              >has happend,
              >what can be done to avoid the problem in the future, or perhaps how we
              >can find
              >out more about the problem.
              >
              >We have a message driven bean A which sends messages to the queue Q,
              >of which
              >the message driven bean B is the only consumer.
              >What we recently have experienced is that some of the messages delivered
              >by A
              >to Q never are delivered to B. But the messages seems to be persisted
              >correctly,
              >because after a restart they reappear!
              >
              >Following is a more detailed description of the scenario:
              >
              >1. A message is sendt with DeliveryMode=PERSISTENT and TimeToLive=0.
              >QueueSender.send
              >is invoked and returns normally.
              >2. The consumers never gets the message (B.onMessage i never invoked
              >with this
              >message).
              >3. Point 1-2 is repeated for 13 different messages over a period when
              >~100 similar
              >messages are delivered normally.
              >4. The server is then restarted.
              >5. In the starup log it is indicated that 44 records are found in the
              >JMSStore.
              >6. When the server restarts, the "lost" messages gets delivered to B.
              >
              >After the server restart we have not experienced the problem again.
              >
              >Logs does not show anything unusual about the previous restart.
              >
              >Other details:
              >There is always exatly 1 instance of A running, and 5-20 instances of
              >B. A implements
              >and uses a pool of javax.jms.XAQueueSession instances, which shares a
              >single instance
              >of javax.jms.XAQueueConnection. The aknowledge-mode for B is "Auto-aknowledge".
              >
              >We're using Weblogic Server 6.1.3.0 / Red Hat Linux 7.3.
              >
              >Any help on this problem is appreciated!
              >
              

  • Problem in sending JMS message on remote OC4J

    I have two OC4J standalone (10.1.3.0.0 build 041119.0001.2385)
    The containers work on Windows2000 in different machines connected by the LAN.
    The First container has deployed application from example http://www.oracle.com/technology/tech/java/oc4j/1013/howtos/how-to-jca-intro/doc/how-to-jca-intro.html
    The second container has j2ee application (Servlet) that sending JMS messages in the queue of the first container.
    Code Servlet in second OC4J:
    package mypackage2;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    import javax.jms. *;
    import javax.naming. *;
    import java.util. *;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = "text/html;charset=windows-1251";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    String QUEUE_NAME = "OracleASjms/MyQueue1";
    String QUEUE_CONNECTION_FACTORY = "OracleASjms/MyQCF";
    public void doGet (HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    try
    Hashtable env = new Hashtable ();
    env.put (Context. INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put (Context. PROVIDER_URL, "ormi://host_OC4J_1:23791/jcamdb");
    env.put ("dedicated.rmicontext", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)ic.lookup (QUEUE_CONNECTION_FACTORY);
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    QueueSession queueSession =
    connection.createQueueSession (false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (QUEUE_NAME);
    ic.close ();
    System.out.println (" Queue: " + queue);
    QueueSender sender = queueSession.createSender (queue);
    System.out.println (" creating Message: " + queue);
    Message message = queueSession.createMessage ();
    System.out.println (" Message created ");
    message.setJMSType ("theMessage");
    message.setLongProperty ("time", System.currentTimeMillis ());
    message.setStringProperty ("id", "11111");
    message.setStringProperty ("oamount", "55555");
    message.setStringProperty ("message", "77777");
    message.setStringProperty ("RECIPIENT", "MDB");
    System.out.println (" Sending message... ");
    sender.send (message);
    System.out.println (" Message sent ");
    sender.close ();
    queueSession.close ();
    connection.close ();
    catch (Exception e)
    System.out.println (" ** TEST FAILED ** < br > Exception: " + e);
    out.println (e.toString ());
    e.printStackTrace ();
    out.println (" < p > The servlet has received a GET. This is the reply. < /p
    ");out.println (" < /body > < /html > ");
    out.close ();
    Error: This code send message in The First container, and should send in the second OC4J !!!!
    Please answer :
    As configure (what code it is necessary to write) servlet (any J2EE the application in OC4J) to use a path to OC4J JMS (remote OC4J JMS) through the Resource Adapter (using OracleASjms.rar). ???

    I have two OC4J standalone (10.1.3.0.0 build 041119.0001.2385)
    The containers work on Windows2000 in different machines connected by the LAN.
    The First container has deployed application from example http://www.oracle.com/technology/tech/java/oc4j/1013/howtos/how-to-jca-intro/doc/how-to-jca-intro.html
    The second container has j2ee application (Servlet) that sending JMS messages in the queue of the first container.
    Code Servlet in second OC4J:
    package mypackage2;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    import javax.jms. *;
    import javax.naming. *;
    import java.util. *;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = "text/html;charset=windows-1251";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    String QUEUE_NAME = "OracleASjms/MyQueue1";
    String QUEUE_CONNECTION_FACTORY = "OracleASjms/MyQCF";
    public void doGet (HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    try
    Hashtable env = new Hashtable ();
    env.put (Context. INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put (Context. PROVIDER_URL, "ormi://host_OC4J_1:23791/jcamdb");
    env.put ("dedicated.rmicontext", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)ic.lookup (QUEUE_CONNECTION_FACTORY);
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    QueueSession queueSession =
    connection.createQueueSession (false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (QUEUE_NAME);
    ic.close ();
    System.out.println (" Queue: " + queue);
    QueueSender sender = queueSession.createSender (queue);
    System.out.println (" creating Message: " + queue);
    Message message = queueSession.createMessage ();
    System.out.println (" Message created ");
    message.setJMSType ("theMessage");
    message.setLongProperty ("time", System.currentTimeMillis ());
    message.setStringProperty ("id", "11111");
    message.setStringProperty ("oamount", "55555");
    message.setStringProperty ("message", "77777");
    message.setStringProperty ("RECIPIENT", "MDB");
    System.out.println (" Sending message... ");
    sender.send (message);
    System.out.println (" Message sent ");
    sender.close ();
    queueSession.close ();
    connection.close ();
    catch (Exception e)
    System.out.println (" ** TEST FAILED ** < br > Exception: " + e);
    out.println (e.toString ());
    e.printStackTrace ();
    out.println (" < p > The servlet has received a GET. This is the reply. < /p
    ");out.println (" < /body > < /html > ");
    out.close ();
    Error: This code send message in The First container, and should send in the second OC4J !!!!
    Please answer :
    As configure (what code it is necessary to write) servlet (any J2EE the application in OC4J) to use a path to OC4J JMS (remote OC4J JMS) through the Resource Adapter (using OracleASjms.rar). ???

  • JMS message not getting delivered

    I'm trying to create a simple MDB with JDeveloper 10.1.3.2.
    I've tried to configure the sender and receiver to use the embedded OC4J message service.
    The code compiles and runs without any errors but the message doesn't seem to get delivered to the MDB.
    How could I debug message delivery in this case?
    What could be causing the message delivery to fail?
    Here's the code from a session bean that sends the message:
    @Resource(mappedName="jms/Topic/testTCF") private ConnectionFactory connectionFactory;
    @Resource(mappedName="jms/Topic/testTopic") private Topic topic;
    public void sendMessage() {
    try {
    Connection con = connectionFactory.createConnection();
    Session session = con.createSession(true, 0);
    MessageProducer producer = session.createProducer(topic);
    TextMessage msg = session.createTextMessage();
    msg.setText("hello");
    producer.send(msg);
    con.close();
    } catch (JMSException e) { }
    MDB:
    @MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName="connectionFactoryJndiName", propertyValue="jms/Topic/testTCF"),
    @ActivationConfigProperty(propertyName="destinationName", propertyValue="jms/Topic/testTopic"),
    @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic")
    public class MessageReceiver1Bean implements MessageListener {
    public void onMessage(Message message) {
    System.out.println("hello");
    Message service configuration:
    <jms-server port="9227">
    <queue location="jms/Queue/testQueue" name="queue"/>
    <queue-connection-factory location="jms/Queue/testQCF"/>
    <topic location="jms/Topic/testTopic" name="topic"/>
    <topic-connection-factory location="jms/Topic/testTCF"/>
    <log><file path="../log/jms.log"/></log>
    </jms-server>

              A few questions to better understand your case,
              1) are you using pub/sub (topics) or ptp (queues) ?
              2) are you producing inside a transaction (either use JTA or jms transacted session)
              3) do you use/set TimeToDeliver parameter ?
              4) when you monitor, do you see your messages under pending count ?
              "Rajiv Kadayam" <[email protected]> wrote:
              >
              >I'm having trouble with the 6.1sp5 version of weblogic specifically with
              >the JMS
              >server not quite notifying my message listeners whenever a new message
              >is received
              >in the queue. I can see the messages via the console by way of clicking
              >"monitor
              >all desitinations". I don't see any exceptions at all. This piece of
              >code does
              >work in Weblogic 7 and it did work on weblogic 6.1sp4. I'm not quite
              >using MDBs
              >and my publishers are CORBA services and there are no EJB components
              >involved.
              >
              >The trouble is there are no exceptions and my message listeners are just
              >waiting.
              >any tips or ideas would be greatly appreciated.
              >
              >thanks
              >rajiv
              

  • How to stop and start MDBs to listen for JMS messages

    Hello! This might be more of an architecture question rather than a technical questing, but I post it here, in the lack of a better place...
    For several years I have been using Webster and Webster MQ to send messages back and forth to clients. The architecture for the middleware platform has been designed around the functionality of ListenerPorts. Listenerports is a Webster functionality that let you "stop" and start to listen to JMS messages for a given MDB either by admin console, or by JMX.
    The arhitecture we used was something like this :
    1.Client sends a persistent message to a queue. (order)
    2. An MDB pics up the order message, calls a SessionBean that "fronts" the IIOP back end system.
    This is quite "out of the box" architecture, but we used the Listenerports to solve a stability problem for our back end system.
    The backEnd system was quite unstable, so the EJB threw an exception (typically because of timeout or connection refused) back to the MDB.
    The Listenerport was "defined" to handle 3 errors before stopping, so the MDB resent the message twice before the listenerport automatically stopped. The nice thing about this feature was that the client could continue to send orders, and was not bothered when the back end system was down.
    When the backEnd system was up and running, we could start the listenerport and it was all back to normal state. We even had a start script that checked the state of the listenerport every 30 minute, and started it automatically if it was stopped, making the admin task of starting the MDB unnecessary..
    Now.. Why am I telling this story..
    I would like to know how this could be done using "clean" J2EE technologies..That is..Not using any technology that is not portable..
    I`m playing with glassfish at home, and it struck me that there is nothing in the J2EE spec that defines the functionality described above ? Am i missing something ?
    I Do not want to stop My application because the back end system is down? That is the only way (i know of) that i can "stop" to listen for messages..
    I can put all the messages on an error queue when the backbend system is down, but that would lead to more code just to handle the error messages. Maybe the easiest way to solve this is to "move" (programmatically) all messages from the error queue over to the "standard" queue every XX minute, but somehow that sounds "wrong"
    Can anyone give me some advice to how this problem situation should be solved ? I`m interested in the solution both from an architectural perspective and from a more technical perspective..
    Best regards
    Hans-Jacob Melby

    Breakpoints, whether normal or conditional, are just meant for debugging of your code.  I had the sense from your question that the pausing you want to do is a part of normal operation of your code.  I would NOT recommend using a breakpoint for that situation.  It would bring up the block diagram showing the breakpoint when it occurs.  A user besides the programmer would not know what to do in that case.
     Yes, both the inner and outer loops would have shift registers.
    Putting a case structure with a small while loop inside the "Pausing Case" is doable.  It just depends on what you are doing or waiting for while the program operation is "paused".

  • What is the recommended way for persisting JMS messages?

    What is the recommended way for persisting JMS messages?. As per the IMQ admin documentation , using the default built-in persistence type which is through unix flat files is much efficient and faster, compared to the database persistence .
    Tried setting up the jdbc stuff for database persistence on iAS 6.5 . I am getting the following
    error .
    [24/Apr/2002:16:09:20 PDT] [B1060]: Loading persistent data...
    [24/Apr/2002:16:09:21 PDT] Using plugged in persistent store: database connection
    url=jdbc:oracle:thin:@dbatool.mygazoo.com:1521:qa1 brokerid=ias01
    [24/Apr/2002:16:09:23 PDT] [B1039]: Broker "jmqbroker" ready.
    [24/Apr/2002:16:11:56 PDT] ERROR [B4012]: Failed to persist interest
    SystemManager%3ASystemManagerEngine%2BiMQ+Destination%0AgetName%28%29%3A%09%09SM_Response%0AClass%3A%09%09%09com.sun.messaging.Topic%0AgetVERSION%28%29%3A%09%092.0%0AisReadonly%28%29%3A%09%09false%0AgetProperties%28%29%3A%09%7BJMQDestinationName%3DSM_Response%2C+JMQDestinationDescription%3DA+Description+for+the+Destination+Object%7D:
    java.sql.SQLException: ORA-01401: inserted value too large for column
    [24/Apr/2002:16:11:56 PDT] WARNING [B2009]: Creation of consumer SM_Response to destination 1
    failed:com.sun.messaging.jmq.jmsserver.util.BrokerException: Failed to persist interest
    SystemManager%3ASystemManagerEngine%2BiMQ+Destination%0AgetName%28%29%3A%09%09SM_Response%0AClass%3A%09%09%09com.sun.messaging.Topic%0AgetVERSION%28%29%3A%09%092.0%0AisReadonly%28%29%3A%09%09false%0AgetProperties%28%29%3A%09%7BJMQDestinationName%3DSM_Response%2C+JMQDestinationDescription%3DA+Description+for+the+Destination+Object%7D:
    java.sql.SQLException: ORA-01401: inserted value too large for column
    Any thoughts?

    From the output, you are using imq 2.0. In that release
    the key used to persist a durable subscriber in the database
    table has a limit of 100 characters. The output shows that
    your value is:
    SystemManager%3ASystemManagerEngine%2BiMQ+Destination%0AgetName%28%29%3A%09%09SM_Res
    ponse%0AClass%3A%09%09%09com.sun.messaging.Topic%0AgetVERSION%28%29%3A%09%092.0%0Ais
    Readonly%28%29%3A%09%09false%0AgetProperties%28%29%3A%09%7BJMQDestinationName%3DSM_R
    esponse%2C+JMQDestinationDescription%3DA+Description+for+the+Destination+Object%7D:
    which is much longer than 100 characters.
    You might want to shorten the string you use for the
    durable name.
    And yes, the default file-based persistence store is
    more efficient when compared to the plugged-in persistence
    through a database.

  • Error in JMS Communication Channel not raising alert

    Processing Errors in JMS Communication Channel are not raising alerts.
    The settings on the communication channel retires are set at 3 and 5min interval.
    In RWB the JMS communication channel shows processing errors but an alert is not raised.
    The alert are configured in our system and we even have a catch all alert rule with * (wildcard). Errors in PI message processing are raising alerts but errors in Comm Channel are not raising alerts.
    The message in SXI_MONITOR shows as processed successfully but when we check the RWB and Comm. Channel Monitoring we see processing errors "Channel error occured; detailed error description: JMS error: Connection to the server has been terminated; Linked error: Connection reset, Error Code:null"
    Are we missing any configuration? How do we get alerts/notifications if there are errors in Comm. Channel without having to login into RWB and watch it periodically?
    Any help is greatly appreciated.
    RM

    Hi,
    What is the staus of Communication channel in RWB when it fails, RED ??if yes then it should genarate alert.
    create one more alert for specific to JMS interface and check it out.
    Regards,
    Raj

  • JMS messages stuck in queue in weblogic v923 cluster

    Hi all,
    Enviornment details:
    In our pre-production weblogic v923 cluster enviornment with Oracle 10g database, there are 10 server boxes with 2 managed nodes running on each server box in linux enviornment.
    There are 3 JMS queues and 1 error queue per managed node.
    All the queues are durable and the persitence store is a database table. There is a single database table per single managed node.
    High loads of JMS messages from client applications coming on each of the 3 JMS queue are processed by the cluster on daily basis.
    The JMS messages that failed to be processed the very first time due to the application logic exceptions are put on error queue since the retry is set to zero on the non-error queue.
    The application exceptions are logged to a database table for futher reference.
    The falied messages from the error queue are read by spring based MDP and resent to the application for reprocessing.
    If no application exceptions, the message will be persisted in a relational database; in the case of failures, MDP code puts the failed message back on to the error queue.
    The auto_ack is true on the JMS message.
    It is observed about less than 1% of the messages fail the original processing and are in error queue on daily basis.
    99.9% of the time, the reprocessing of the messages from the error queue is a success.
    Currently due to some obvious reasons, the system administrator stops a managed node when the disk is full and start a different managed node on the same server box. This approach will be stopped in the very near future so that all nodes on all servers are running at any point of time by making few enviornment changes.
    Problem:
    1a) Occasionally, it is observed that 1 - 4 JMS messages are stuck in the error queue. There are no signs of reprocessing as there are no application exceptions or the corresponing insert into the database. The JMS persistence store table still has the JMS message.
    1b) It is observed that over time, the same JMS messages that were originally stuck on server 1's managed node A are no longer there but are found in a different node (say node B) on a different server box.
    As far as I understand the JMS, a message could be in a Pending state if MDP (in my case) does not automatically send ACKNOWLEGMENT back due to an issue in the Spring Defaultlisternercontainer before calling MDP's onMessage(). I am not sure as what happens to that status over time).
    It is also observed that the stuck messages content is not much different than the other messages that are processed fine.
    Any pointers/input is highly appreciated.
    Thanks in advance for your valuable input and time.

    Off the top of my head, I can only think of two reasons why a message might move from node to node:
    (A) An application is dequeueing them and enquening them elsewhere.
    (B) The application is using distributed queues, and the distributed queue has been configured to enable "queue forwarding". The forwarding feature automatically moves messages from distributed queue members that have no consumers to members that do have consumers. Queue forwarding is sometimes enabled as a work-around to better enable MDP support of WL distributed destinations, unlike WebLogic MDBs, MDPs have no container logic to ensure that all members of a distributed destination are serviced by a consumer under all circumstances...
    Regards,
    Tom

Maybe you are looking for

  • How to include the quote in a quoted statement?

    Dear friends, I have a question as mentioned in title. What I have written is as below: IF :ctl_blk.zone = 'ALL' THEN vWhere := ' and rownum > 0'; ELSIF :ctl_blk.zone ='OTHER' THEN vWhere := ' and a.use_unit NOT IN (SELECT DISTINCT store FROM str_sto

  • J_security_check 404 error Please please help me

    I am new to this forum although I have been lurking around for while:) I have a question about j_security_check. I am working in Apache Tomcat server and I want to set up form based authentication. So I used j_security_check and I get an error 404 j_

  • 60 GB music Ipod Vs 60GB video Ipod

    Hi everibody, I am planning to buy a video Ipod and I already own a 60 GB music only Ipod. I have a doubt about the possibility of synchronysing of the two Ipods. I will be using the same computer and the same data base to do so. Will I experience pr

  • Tethering to a MacBook Pro

    Hi Everyone, A quick question: is anyone aware whether it is possible to tether a Verizon blackberry/treo to a MacBook Pro? Thanks very much. AHY

  • Cannot vertify my account through email as no link to click on. Help!

    Cannot vertify my account through email as no link to click on. Help! I have emaild iTunes support but have not come back to me yet (over 24hrs)