Send JMS rollbacked message to del letter queue
Hi,
I have one MDB, which calls an EJB Stateless. This EJB belongs to a container
managed transaction and it can make a Rollback (setRollbackOnly()).
My problem is that if the MDB belongs to the container-managed transaction, when
a rollback is sent, the received JMS message is put back in the JMS queue. But,
I want to send it in a del letter queue.
And if the MDB does not belong to the transaction, I could not know that the transaction
is rollbacked!
Do you know how can I resolve this problem?
Thanks
Charles
Charles,
Search the JMS newsgroup with Google and you should find the answer.
There is a setting (I know it exists but I've never used it and don't
know the exact details on how to use it) that you can change and after a
few tries the message is put into another queue.
--dejan
Charles Desmoulins wrote:
>Hi,
>
>I have one MDB, which calls an EJB Stateless. This EJB belongs to a container
>managed transaction and it can make a Rollback (setRollbackOnly()).
>
>My problem is that if the MDB belongs to the container-managed transaction, when
>a rollback is sent, the received JMS message is put back in the JMS queue. But,
>I want to send it in a del letter queue.
>
>And if the MDB does not belong to the transaction, I could not know that the transaction
>is rollbacked!
>
>Do you know how can I resolve this problem?
>
>Thanks
>Charles
>
>
>
Similar Messages
-
Sending a private message on a public Queue
Hi,
I would like to know if it is possible to send a message on a public Queue, after explicitly indicating who is able to extract it, so that any other client (malicious or not) would not be able to read it.
Thank'sJMS does not address security other than providing basic username/password parameters on the ConnectionFactory interface. You would need to consult your JMS vendor's specific security capabilities. Most vendors do support secure destinations using user/name password, LDAP integration for credentials and encrypted mesaging using SSL.
-
JMS has messages pending in the queue
Hi, I created a JMS queue to hold some messages, then two message driven bean each take a message from the queue and use JavaMail API 1.2 to send an email out. But somehow, after a while, say, a couple of weeks, there will be about 20 messages pending the queue causing the queue hanging forever. Does anybody know what cause this JMS queue pending? Or is there anything wrong with this design? Thank you very much.
No, Acknowledgement is sending successfully, no excpeption is raising, in finally it is got acknowledged.
here is code block,
public void sendObject(Serializable message) throws JMSException
try {
HelperMethods.logDebugMessage("begin sendObject " + System.currentTimeMillis(),
this.getClass().getName(), "sendObject");
ObjectMessage objectMessage = getQueueSession().createObjectMessage();
objectMessage.clearBody();
objectMessage.setObject(message);
getQueueSender().send(objectMessage);
HelperMethods.logDebugMessage("sent sendObject " +System.currentTimeMillis(),
this.getClass().getName(), "sendObject");
getQueueSession().commit();
catch (Exception e) {
HelperMethods.logDebugMessage("Exception" + e.getMessage(),
this.getClass().getName(), "sendObject");
throw new JMSException(e.getMessage());
public void onMessage(Message message) {
ObjectMessage objectMessage = (ObjectMessage) message;
AttachmentFileUtil attachUtil = new AttachmentFileUtil();
try {
HelperMethods.logDebugMessage("received write sendObject msg " +
System.currentTimeMillis(),
this.getClass().getName(), "onMessage");
if (message instanceof ObjectMessage) {
HelperMethods.logDebugMessage("about to process write sendObject msg " +
System.currentTimeMillis(),
this.getClass().getName(), "onMessage");
AttachmentInfoBean attachment = (AttachmentInfoBean)
objectMessage.getObject();
HelperMethods.logDebugMessage("processed the write sendObject msg " +
System.currentTimeMillis(),
this.getClass().getName(), "onMessage");
HelperMethods.logDebugMessage("writing the sendObject msg to disk " +
System.currentTimeMillis(),
this.getClass().getName(), "onMessage");
// Here we are calling attachment bean, which uploads the file into file server
attachUtil.writeContents(attachment);
HelperMethods.logDebugMessage("After writing the sendObject msg to disk ",
this.getClass().getName(), "onMessage");
HelperMethods.logDebugMessage("After Commiting Session " +
System.currentTimeMillis(),
this.getClass().getName(), "onMessage");
HelperMethods.logDebugMessage(
"finished writing the sendObject msg to disk " +
System.currentTimeMillis(), this.getClass().getName(), "onMessage");
else {
HelperMethods.logDebugMessage(
"oops! no ObjectMessage was received" +
message.getClass(), this.getClass().getName(), "onMessage");
throw new NowException("not an ObjectMessage was received" +
message.getClass());
catch (Exception ex) {
ex.printStackTrace();
HelperMethods.logDebugMessage("Exception" + ex.getMessage(),
this.getClass().getName(), "onMessage");
finally {
try {
HelperMethods.logDebugMessage("acknowledging the message",
this.getClass().getName(), "onMessage");
objectMessage.acknowledge();
catch (JMSException ex) {
ex.printStackTrace();
HelperMethods.logDebugMessage("JMSException" + ex.getMessage(),
this.getClass().getName(), "onMessage");
This is my production problem, please suggest me ASAP.
Regards,
Murthy Patnaik -
I cannot send a picture message to non apple devices
I have an iPhone 5s. The issue with messaging is that I can send iPhone users pic messages, and them to me (with wifi or data on) but non iPhone users can send me a pic, which I receive, but I cannot send a pic to them. I can text to non iPhone users fine, it's just the image that won't go through.
Obviously I can use Apples service, but obviously not Verizon's? And I don't mean their app.
Be aware that I have done a network reset and have checked to make sure that MMS is turned on and on top of that I have 4 addresses that are stored for sending and receiving.
Thank you!@wastudent
I want to ensure you're able to send and receive, picture messages from non iPhone users as well as iPhone users!
When did this problem begin? Have you been able to send picture messages to other non iPhone users in the past? Do you get an error message when you attempt sending a picture message? Please let me know so that I can further assist. Thanks!
AnthonyTa_VZW
Follow us on Twitter @VZWSupport -
JMS adapter transaction. Rollback message to queue.
Hi all !
A have question about jms adapter transaction. My composite application has 3 steps : JMS adapter (listener), mediator, WS adapter. JMS adapter listen queue push message to mediator, mediator invoke web service. If ws not available (server down), mediator try recovery 5 times. After 5 times, reject message from queue. I wont rollback message to queue. I saw examples with JMS + BPEL, but it not help me. Anybody can help me.Hi,
You don’t need to catch a mediator fault – you can let it rollback to the JMS Queue and let the Queue do the retries.
To get the retries working, log in to the weblogic console and navigate to JMS Modules -> Your Module -> Your Queue -> Configuration -> Delivery Failure
Here you will find options for Redelivery Limit. Set this to the number of retries you need.
Then navigate to the connection factory you want and set the redelivery delay.
This should get your desired behaviour, but once the message has failed it will be discarded. If you prefer to put it on an error queue you can create an error queue, and in the original queue’s, goto Delivery Failure, change the expireation policy and set the Error Destination to be your error queue.
Hope that helps!
Robert -
JMS Messages getting stuck in queues
Hi,
I am facing this peculiar issue with queue messages not getting picked up.
Application Architecture: There is 1 JMS queue ( which resides in WLDomain1 with in a Unix Box) and there are 2 windows boxes having 2 weblogic domains each with 3 instances of MDB deployed on each of the domains. So total of 12 consumers (2 Box * 2 Domain * 3 Instances of MDB) listens to the JMS queue.
Issue: After bringing everything up I am able to see 12 consumer count listening to the queue. But when I run the application which writes total of 13 messages in the queue only 7 of them are getting processed and 6 messages are always getting stuck in the queues. Interestingly this 7 messages are mostly getting processed by consumers with in the same windows box. And the selection of windows box is completely random. To confirm whether both the windows boxes are configured fine I tried to test them individually and it works fine individually, the problem happens only if I bring up both the boxes together.
Another observation is, if I bring down the non working domains, the pending messages start getting processed by the working domains. It gives an impression that the non working domains seem to lock the messages for processing but doesn't actually process it. Only when I bring down the domains it releases this lock.
Below is the JMS Life cycle events I captured from log files :
1. Start domain1 in WIN Box1
####<Nov 24, 2009 7:54:00 PM CST> <> <> <1259114040304> <783400> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session60.consumer62)> <> <>
####<Nov 24, 2009 7:54:00 PM CST> <> <> <1259114040309> <239900> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <> <>
####<Nov 24, 2009 7:54:00 PM CST> <> <> <1259114040313> <2100> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session66.consumer68)> <> <>
2. Start domain2 in WIN Box 1
####<Nov 24, 2009 7:54:55 PM CST> <> <> <1259114095403> <38600> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session70.consumer72)> <> <>
####<Nov 24, 2009 7:54:55 PM CST> <> <> <1259114095407> <335400> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session73.consumer75)> <> <>
####<Nov 24, 2009 7:54:55 PM CST> <> <> <1259114095410> <997700> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session76.consumer78)> <> <>
3. Start domain1 in WIN Box 2
####<Nov 24, 2009 7:56:12 PM CST> <> <> <1259114172061> <316500> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session80.consumer82)> <> <>
####<Nov 24, 2009 7:56:12 PM CST> <> <> <1259114172066> <324300> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session83.consumer85)> <> <>
####<Nov 24, 2009 7:56:12 PM CST> <> <> <1259114172072> <757000> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session86.consumer88)> <> <>
4. Start domain2 in WIN Box 2
####<Nov 24, 2009 7:56:54 PM CST> <> <> <1259114214000> <142800> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session90.consumer92)> <> <>
####<Nov 24, 2009 7:56:54 PM CST> <> <> <1259114214005> <38200> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session93.consumer95)> <> <>
####<Nov 24, 2009 7:56:54 PM CST> <> <> <1259114214009> <22400> <> <> <JMSModule!Queue> <ConsumerCreate> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session96.consumer98)> <> <>
At this point console shows 12 consumers listening the queue which is absolutely fine.
5. Run application
--Message Production
This produces 13 messages ( I have not pasted the complete log)
-- Message Consumption ( Only 7 messages are consumed)
####<Nov 24, 2009 8:00:05 PM CST> <> <> <1259114405953> <576400> <ID:<1047832.1259114392542.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114392542</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410091> <310100> <ID:<1047832.1259114393181.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session66.consumer68)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114393181</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410130> <364600> <ID:<1047832.1259114400626.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400626</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410134> <540700> <ID:<1047832.1259114393125.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session76.consumer78)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114393125</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:00:10 PM CST> <> <> <1259114410137> <632400> <ID:<1047832.1259114393128.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session73.consumer75)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114393128</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:00:12 PM CST> <> <> <1259114412026> <984200> <ID:<1047832.1259114393123.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session60.consumer62)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114393123</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:00:16 PM CST> <> <> <1259114416045> <41800> <ID:<1047832.1259114400005.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session70.consumer72)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400005</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
6. At this point Admin Consol shows 6 messages pending in the queue
and From consumer numbers it is evident that consumers in WIN Box2 domains have not processed any messages
Now if I stop server in WIN Box2 Domain1, WIN Box1 picks up the messages instantely
####<Nov 24, 2009 8:13:22 PM CST> <> <> <1259115202343> <897600> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session80.consumer82)> <> <>
####<Nov 24, 2009 8:13:22 PM CST> <> <> <1259115202346> <421900> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session83.consumer85)> <> <>
####<Nov 24, 2009 8:13:22 PM CST> <> <> <1259115202379> <582300> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection79.session86.consumer88)> <> <>
####<Nov 24, 2009 8:13:24 PM CST> <> <> <1259115204888> <4600> <ID:<1047832.1259114400029.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session76.consumer78)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400029</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:13:32 PM CST> <> <> <1259115212820> <256700> <ID:<1047832.1259114400258.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session66.consumer68)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400258</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:13:43 PM CST> <> <> <1259115223579> <280600> <ID:<1047832.1259114400032.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session60.consumer62)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400032</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
7. At this poing Admin Consol shows 3 messages pending in the queue
Now if I stop server in WIN Box2 Domain2, the remaining 3 gets processed
####<Nov 24, 2009 8:16:08 PM CST> <> <> <1259115368998> <193400> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session90.consumer92)> <> <>
####<Nov 24, 2009 8:16:08 PM CST> <> <> <1259115369000> <885500> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session93.consumer95)> <> <>
####<Nov 24, 2009 8:16:09 PM CST> <> <> <1259115369002> <902500> <> <> <JMSModule!Queue> <ConsumerDestroy> <<anonymous>> <MC:CA(/<IP_BOX2>):OAMI(server.jms.connection89.session96.consumer98)> <> <>
####<Nov 24, 2009 8:16:25 PM CST> <> <> <1259115385151> <123700> <ID:<1047832.1259114400324.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session70.consumer72)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400324</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:16:29 PM CST> <> <> <1259115389660> <836600> <ID:<1047832.1259114400535.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection59.session63.consumer65)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400535</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
####<Nov 24, 2009 8:16:37 PM CST> <> <> <1259115397823> <610200> <ID:<1047832.1259114400432.0>> <> <JMSModule!Queue> <Consumed> <<anonymous>> <MC:CA(/<IP_BOX1>):OAMI(server.jms.connection69.session73.consumer75)> <<?xml version="1.0" encoding="UTF-8"?>
<mes:WLJMSMessage xmlns:mes="http://www.bea.com/WLS/JMS/Message"><mes:Header><mes:JMSTimestamp>1259114400432</mes:JMSTimestamp><mes:Properties/></mes:Header></mes:WLJMSMessage>> <>
Kindly throw some light on this issue. Also do let me know if you need any more specific details about this.
Thanks,
Abhijeet
Edited by: user5240164 on Nov 25, 2009 11:35 AM
Edited by: user5240164 on Nov 28, 2009 1:21 PMHi,
The problem may be conflicting names in your configuration. To ensure proper operation of WL Security, JMS, JTA, and JDBC, make sure that (A) each domain has a unique name, and (B) no two WebLogic servers have the same name (even if in two different domains).
To ensure a more even distribution of messages, either simply send more than a token amount messages (eg, a hundred or so, rather than just 12), or configure a custom connection factory on the domain that hosts the queue, reduce MessagesMaximum on the connection factory to 1, and then modify each MDB to refer to the custom connection factory. The MessagesMaximum setting controls the number of messages that can be pre-pushed (pipelined) to a single asynchronous consumer.
For more information see "Best Practices for JMS Beginners and Advanced Users" in the latest versions of the JMS admin guide, and "JMS Performance & Tuning Check List" in the WebLogic Performance and Tuning guide.
Tom -
Passing the queue name to the sender JMS adapter at run time..
Hello Experts,
I have a scenario where PI is to pick data from MQ queues. The message type coming from queues is same and the procession needs to be done with PI is also the same.That's the reason why we want to have only one interface processing the data for all the queues.
My question here is that is there any way where I do not put the queue name in the sender adapter at design time and based on the data availability in the queue let the sender adapter know the queue name to be processed at run time.
Any suggestions will be greatly appreciated.
- Rajan> My question here is that is there any way where I do not put the queue name in the sender adapter at design time and based on the data availability in the queue let the sender adapter know the queue name to be processed at run time.
Unfortunately for JMS Sender CC it is not possible, but other way around is possible. I.e. you can dynamically choose the receving queue names by using ASMA "JMSReplyTo" in JMS Sender CC.
Regards,
Sarvesh -
XAException during sending JMS message
I'am having following exception during sending JMS message using JMSService to remote OC4J queue:
04/09/15 16:35:02 XAException in errorRollback rollback(c0:a7:9:14:cd:2d:0:0:2a:
0:0:0:0:0:0:0:0:2b:0:ff:2:84:8c:1):
04/09/15 16:35:02 XAException in errorRollback null
04/09/15 16:35:02 XAException in errorRollback rollback(c0:a7:9:14:cd:2d:0:0:2a:
0:0:0:0:0:0:0:0:2b:0:ff:2:84:8c:1):
04/09/15 16:35:02 XAException in errorRollback null
<2004-09-15 16:35:02,717> <ERROR> <default.collaxa.cube.engine.dispatch> <BaseSc
heduledWorker::process> Failed to handle dispatch message ... exception Message
handle error.
An exception occurred while attempting to process the message "com.collaxa.cube.
engine.dispatch.message.invoke.InvokeInstanceMessage"; the exception is: Transac
tion was rolled back: TwoPhase Commit failed; nested exception is: javax.transac
tion.xa.XAException: rollback(c0:a7:9:14:cd:2d:0:0:2a:0:0:0:0:0:0:0:0:2b:0:ff:2:
84:8c:1):
Regards
JarekHi Jarek,
Is it possible to send us a reproducible bpel package or steps to reproduce? you can send the test case to [email protected]
when you send the zip file could you please rename to .zap extension. I haven't seen this problem before. I want to reproduce this on my development env.
-muruga -
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). ??? -
How to hanlde breaked large messages in sender JMS adapter
Hi,
I have been asked like 'how can we handle breaked large messages in sender JMS adapter?'and lets say I am getting some messages as it is and some are breaked into small segements for the mesaages that are large....
do we need to use module,if so is there any standard module that we can use to hanlde this type of scenarios?
thank you in advance.
babuhttp://biemond.blogspot.com/2009/10/jms-request-reply-interaction-pattern.html
if you check the blog of edwin, see his comments at the bottom
there he gives a suggestion how to add the selector properties to filter on
and this one is maybe helpfull
http://blogs.oracle.com/adapters/2010/05/configuring_request-reply_in_jmsadapter.html -
Hi All,
I need to create a web service in Workshop that sends the received SOAP message
body to a queue without mapping it to Java object i.e. the JMS message type is
text message and not Object message. I would very much appreciated if anyone out
there who can advise me on this.
Thanks in advance.
Regards,
Boon KeongHi,
Are you open for other solutions besides Workshop?
WebLogic Server provides another Web Service implementation outside of Workshop.
This web service implentation has a concept of handlers which intercept SOAP
messages. It is a way to gain access to the SOAP message. You could then route
the SOAP message to a JMS queue from the handler.
These URLs will help:
http://e-docs.bea.com/wls/docs70/webserv/index.html
http://e-docs.bea.com/wls/docs70/webserv/design.html#1053805
Also, there is an examples in the WebLogic Server 7.0 installation:
%BEA_HOME%\samples\server\src\examples\webservices\handler
hope this helps,
pat
"Boon Keong" <[email protected]> wrote:
>
Hi All,
I need to create a web service in Workshop that sends the received SOAP
message
body to a queue without mapping it to Java object i.e. the JMS message
type is
text message and not Object message. I would very much appreciated if
anyone out
there who can advise me on this.
Thanks in advance.
Regards,
Boon Keong -
Duplicate Message exception in sender JMS comm channel
Hi,
Can any one please tell me what is stored in MSG_ID1 and MSG_ID2 in table XI_AF_SVC_ID_MAP
I could only find the schema of XI_AF_SVC_ID_MAP table in SDN which is as follows,
MSG_ID1 (varchar),
MSG_ID2 (varchar),
PERSIST_UNTIL (timestamp).
We have an interface in where MQ daily sends 2 files to PI but sometimes one msg is getting discarded by sender JMS adapter giving warning -
A duplicate message was received, it was received earlier and processed with XI Message ID - "xyz". It will be ignored and discarded from the JMS queue.
Also I found that setting option Time Period for Duplicate Check for EO(IO) (secs) to 0 does not always work.
We are getting this problem after upgrading PI from 3.0 to 7.1.
So if any one has solution to this problem please help me.
Thanks & Regards,
ShwetaHi Shweta
Usually this kind of issue happens when the msg ID in the MQ message header is not unique.
Ask the MQ team to ensure that MQ msg ID is always unique.
Regards,
Giuseppe -
How to send JMS Message from a BPM Process
Hi All
I have small query regarding sending JMS Message from a bpm process. Is it possible to send JMS message from one bpm process to another bpm process.
I have a scenario in which I need to send a JMS message to a queue where another process is listening on that queue and as soon as the message is received on the queue the process instance is created.
I know how to listen for the JMS message on the queue, but I don't how to send a JMS message from a process.
Also Can I create process by sending the Notification to the process instead of a JMS message. But the process to be created is not a subprocess i.e. Can notification be send accross different processes.
Any information or example in this regard would be helpful.
Thanks in advance
Edited by: user9945154 on Apr 22, 2009 7:46 PMHi,
Here's one approach to sending JMS messages from an Oracle BPM process. If you're doing this just to send a message into another process, do not take this approach. It's far easier and quicker if you do this using the OOTB "send notification" logic.
These steps describe how to do this using WebLogic. The steps would be different if you're using another ap server / JMS provider.
1. Guessing you've already done this, but first expose the two required WebLogic jar files for JMS messaging as Java components in the External Resources. The two files for WebLogic are weblogic.jar and wljmsclient.jar” (located in the < WebLogic home directory > /weblogic/server/lib” directory).
AquaLogic BPM JMS Queue Listener for WebLogic 8.1
2. You've probably already done this, but add an External Resource to represent the J2EE container:
• Name: “weblogicJ2EE” - this is important and will be used in the next step
• Supported Type: “GENERIC_J2EE”
• Initial Context Factory: “weblogic.jndi.WLInitialContextFactory”
• URL: “t3://localhost:7001”
• Principal: and Credentials: whatever userid and password you defined to access theWebLogic administrative console.
3. Create the External Resource that represents the send queue configuration. In this example, I'm calling it “WebLogic Send Queue”. This is important - remember what you named it because you will use this name in the logic that sends the JMS message. This new External Resource is configured as:
• J2EE: “weblogicJ2EE” (same name as the second External Resource you created)
• Destination Type: “QUEUE”
• Lookup Name: “weblogic.examples.jms.exampleQueue”
• Connection Factory Lookup Name: “weblogic.examples.jms.QueueConnectionFactory”
4. Here's the logic to send a Message to the Queue
<pre class="jive-pre"><p />msg as String = "Hello World"
jmsMsg as Fuego.Msg.JmsMessage
msg = "<?xml version=\"1.0\"?><Msg>" + msg + "</Msg></xml>"
jmsMsg = JmsMessage(type : JmsMessageType.TEXT)
jmsMsg.textValue = msg
sendMessage DynamicJMS
using configuration = "WebLogic Send Queue",
message = jmsMsg</pre>
Note that the “sendMessage” method uses the configuration parameter “WebLogic Send Queue”. You previously created a JMS messaging service External Resource with this name in the third step.
Again, please don't go this route if you're just using it to send notifications between processes,
Dan -
Problem sending jms message from Web page button (JSF 1.2)
SJSAS PE 9.0 running on Windows
Some of the code
//imports:
import javax.jms.ConnectionFactory;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.JMSException;
import javax.annotation.Resource;
//Injection
@Resource(mappedName = "jms/ConnectionFactory")
private ConnectionFactory connectionFactory;
@Resource(mappedName = "jms/Queue")
private Queue queue;
//Button action code
System.out.println("Trying to send message to EJB");
javax.jms.Session jmssession = null;
javax.jms.Connection connection = null;
javax.jms.MessageProducer messageProducer = null;
javax.jms.TextMessage message = null;
final int NUM_MSGS = 1;
try {
// This line is failing, java.lang.NullPointerException
connection = connectionFactory.createConnection();
jmssession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
messageProducer = jmssession.createProducer(queue);
message = jmssession.createTextMessage();
for (int i = 0; i < NUM_MSGS; i++) {
message.setText("PV interface jobid " + (i + 1));
message.setBooleanProperty("Gyldig", true); // Sample on how to use properties; can be used to collect necessary information
System.out.println("Sending message: " + message.getText());
messageProducer.send(message);
} catch (JMSException e) {
System.out.println("Exception occurred: " + e.toString());
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
} // if
} // finally
ERROR MESSAGE
Log Entry Detail
Details
Timestamp:
May 8, 2007 15:24:26.608
Log Level:
SEVERE
Logger:
javax.enterprise.resource.webcontainer.jsf.application
Name-Value Pairs:
ThreadID=12;ThreadName=httpWorkerThread-8080-1;_RequestID=832ea681-575f-4126-9bcf-01dcdf010044;
Record Number:
2513
Message ID:
java.lang.NullPointerException javax.faces.el.EvaluationException
Complete Message
java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:97)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:96)
at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:57)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:450)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:759)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:244)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:113)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
Caused by: java.lang.NullPointerException
at com.company.testinterfaceportal.JmsSending.<init>(JmsSending.java:37)
at com.company.testinterfaceportal.MainApplicationBean.SendBeskjedNaa(MainApplicationBean.java:192)
at com.company.testinterfaceportal.Status.button1_action(Status.java:709)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:151)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
... 34 moreI know the code for the jms-sending is OK (I've
tested in another application, copy of code), but i
dont know why it isn't working in this particual
Visual Web Project. It does seem like the injection
isn't taking place here; and i have no clue to
why.....where does your web.xml schema location points to ?
Injection works only with JEE 5, which means that you have to point to the right version of the servlet spec, i.e version="2.5" and web-app_2_5.xsd. -
BusinessService which sends JMS messages to a JBoss 4.2.x server
Hi,
how do I configure my OSB so that I can send JMS messages to a JBoss server? I have added a Foreign JMS server with the appropriate initial context data and have put the jboss relevant jars into my <domain>/lib directory (javassist.jar, jbossall-client.jar, jboss-aop-jdk50.jar, jboss-messaging-client.jar, trove.jar) but I still get an error in the proxy service when it forwards the message to the business service referencing the imported JMS queues and connectionFactory. The message is:
<18.02.2010 18:00 Uhr MEZ> <Warning> <ALSB Logging> <BEA-000000> < [RouteToJboss, _onErrorHandler-1181696354513531347--39bf6a8e.126dc62f38e.-7e57, Log error, ERROR] Error occurred in flow: BEA-380002[JMSPool:169803]JNDI lookup of the JMS connection factory jboss.connectionFactory failed: javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]RouteToJbossrequest-pipeline>
Am I missing something?
Best regards,
Dimo
PS. I also had to put a newer log4j version in the preclasspath because jboss client seems to require verisons >= 1.2.12 and the one shipped with OSB does not cut itThere is a difference between supported and certified.
ADF was certified (meaning tested) with JBoss 4.0.4.
We didn't test with JBoss 4.2 so we don't know if it works or not.
However it is supported - meaning that if you try to deploy to 4.2 and run into issues you can open bugs with Oracle support.
Maybe you are looking for
-
I can't get mai on the iPad or iphone (and maybe the macbook pro) from Yahoo!. It won't verify the info and has me to authenticate using safari. I hav a PLUS account, have deleted and restarted a new account, but no verif. It used to work, but has qu
-
PMON (ospid: 8143): terminating the instance due to error 472
Hi Friends, My Environment_ OS : oel4u5 Apps Version : R12.1.1 DB Version : *11.1.0.7* When i am trying to start my ebiz 11g database the db started and its automatically going down because of PMON termination. When am looking in to the alert log fi
-
Change in source system client number - how will it affect BI?
Hello, I have the following landscape: R/3 DEV (client 100) connected as a source system to BI DEV R/3 QA (client 100) connected as a source system to BI QA. R/3 PROD (client 100) connected as a source system to BI PROD. there is some problem with th
-
Creative Cloud installs but will not open on windows 7
Creative Cloud installs but will not open on windows 7
-
Itunes and ipad 2 downloading apps very slowly
i've been trying to update and download apps on itunes. But lately the download speed is very slow. A mere 8mb app can take 30mins to dl finish. It used to be faster before. I am using itunes 10.5 and windows 7 OS.