Asynchronous consumer doesn't consume?
Can anyone tell my why my message consumer doesn't consume a TextMessage put in a Queue by a MessageDrivenBean?
Another part of my client successfully sent a message to the MDB, and the MDB put a TextMessage in another Queue (queue\goAdminOut) with this property set on the message:
key="Selector"
value="ADCD"
I know the TextMessage is waiting on the Queue, because I can see it using the servers web-consloe.
Its just that the message does not trigger the onMessage () method of the Listener I set on the MessageConsumer in my client.
The MessageConsumer was created with:
Session.createConsumer(Destination destination, java.lang.String messageSelector)
Here is a list of the relevant code included below.
1. Two classes the mimic my client.
TestConsumerView
-- A JFrame that stays alive till it is closed.
TestConsumer
-- An object that is instantiated as a field in TestConsumerView
-- It establishes the connection, session and message consumer
2. The screen print when I run TestConsumerView
3. A screen print from the JBoss JMX web console confirming that the message is in the queue
TestConsumerView Codeimport javax.swing.JFrame;
class TestConsumerView extends JFrame {
// members
private static final long serialVersionUID = 1L;
private TestConsumer consumer;
// main ()
public static void main(String args[]) {
System.out.println ("** BEGIN: TestConsumerView.main ()");
System.out.println ("** instantiate TestConsumerView");
new TestConsumerView();
System.out.println ("\n** TestConsumerView instantiated");
System.out.println ("** END: TestConsumerView.main ()");
// constructor
private TestConsumerView () {
super ();
System.out.println ("\n**** BEGIN: TestConsumerView.constructor");
consumer = new TestConsumer ();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible (true);
System.out.println ("\n**** END: TestConsumerView.constructor");
} TestConsumer Code import javax.swing.JFrame;
class TestConsumerView extends JFrame {
// members
private static final long serialVersionUID = 1L;
private TestConsumer consumer;
// main ()
public static void main(String args[]) {
System.out.println ("** BEGIN: TestConsumerView.main ()");
System.out.println ("** instantiate TestConsumerView");
new TestConsumerView();
System.out.println ("\n** TestConsumerView instantiated");
System.out.println ("** END: TestConsumerView.main ()");
// constructor
private TestConsumerView () {
super ();
System.out.println ("\n**** BEGIN: TestConsumerView.constructor");
consumer = new TestConsumer ();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible (true);
System.out.println ("\n**** END: TestConsumerView.constructor");
}Screen Output ** BEGIN: TestConsumerView.main ()
** instantiate TestConsumerView
**** BEGIN: TestConsumerView.constructor
****** BEGIN: TestConsumer.constructor
****** calling connect ()
******** BEGIN: TestConsumer.connect ()
******** InitialContext Returned
******** Connection instantiated
******** Session instantiated
******** MessageConsumer instantiated with the selector phrase = Selector='ABCD'
******** add a MessageListener to consumer
********** TCListener.constructor called
******** MessageListener added
******** Connection started
******** END: TestConsumer.connect ()
****** call to connnect () completed
****** END: TestConsumer.constructor
**** END: TestConsumerView.constructor
** TestConsumerView instantiated
** END: TestConsumerView.main () WEB CONSOLE OUTPUT [SpyTextMessage {
Header {
jmsDestination : QUEUE.goAdminOut
jmsDeliveryMode : 2
jmsExpiration : 0
jmsPriority : 4
jmsMessageID : ID:9-11218101942431
jmsTimeStamp : 1121810194243
jmsCorrelationID: null
jmsReplyTo : null
jmsType : null
jmsRedelivered : false
jmsProperties : {Selector='ABCD'}
jmsPropReadWrite: false
msgReadOnly : true
producerClientId: ID:9
Body {
text :The DialogPack was received
Sorry,
I guess I screwed up and put TestConsumerView code twice.
Anyway, the missing TestConsumer code is below.
I am not sure I understand your comment about MDB and a Java GUI client.
Right now I am testing my app on a local server.
Ultimately I intend to use a remote server that mediates between two WebStart downloaded Java GUI clients running on independent PCs.
Kind of a game model with two players.
Both clients can send ObjectMessages to a server side Queue that is listened to by an MDB (i.e. the object would contain all the data needed to enroll a new player, or to describe a new play by one client to the other).
The MDB would process the data in the object attached to the Object Message using Entity Beans and any other server side components required, i.e. to add the new member to the database or update the copy ot the game history.
When done, the MDB would send messages to one or two Queues.
Queue-1 would be listend to by the client that sent the origianl ObjectMessage letting it know if the object was processed correctly.
That is why I want to use a selector. There could be multiple pairs of clients being served by the MDB, so I need to attach a selector to the original Object message that the MDB then sets on its response message so the original client can find the MDB response in Queue-1.
Queue-2 would be listened to by the other client (i.e. to let it know a play has been made). Same concept.
Right now I am just trying to test the original client cycle, i.e. the original client listening to Queue-1 to see if the MDB succeeded.
The Object message to MDB and the MDB message to Queue-1 works because I can use the JBoss web-consloe to see the TextMessaage waiing with the correct selector in the correct Queue.
I just can't seem to write code for an asynchromous consumer in the original client that continuously listens to Queue-1.
Anyway here is the code.
TestConsumer CODEimport java.util.Hashtable;
import javax.jms.JMSException;
import javax.jms.ConnectionFactory;
import javax.jms.Connection;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Destination;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class TestConsumer {
// constructor
public TestConsumer () {
super ();
System.out.println ("\n****** BEGIN: TestConsumer.constructor");
System.out.println ("****** calling connect ()");
connect ();
System.out.println ("\n****** call to connnect () completed");
System.out.println ("****** END: TestConsumer.constructor");
// members
private final String selector = "Selector='ABCD'";
private Session session;
// members - inner class
private class TCListener implements MessageListener {
TCListener () {
super ();
System.out.println ("\n********** TCListener.constructor called\n");
public void onMessage (Message msg) {
try {
System.out.println (" ** BEGIN: TestConsumer.Listen.onMessage ()");
System.out.println (" Msg property 'Selector'=" + "\"" + msg.getStringProperty ("Selector") + "\"");
} catch (JMSException e) {
System.out.println (" JMSException");
System.out.println (" ** END: TestConsumer.Listen.onMessage ()");
// methods
private void connect () {
System.out.println ("\n******** BEGIN: TestConsumer.connect ()");
try {
Hashtable<String, String> env =
new Hashtable<String, String> ();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jboss.naming.HttpNamingContextFactory");
env.put(Context.PROVIDER_URL,
"http://localhost:8080/invoker/JNDIFactory");
env.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
Context jndiContext = new InitialContext(env);
System.out.println ("******** InitialContext Returned\n");
ConnectionFactory factory = (ConnectionFactory)
jndiContext.lookup("HTTPConnectionFactory");
Connection connection = factory.createConnection();
System.out.println ("\n******** Connection instantiated");
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
System.out.println ("******** Session instantiated");
Destination destination = (Destination) jndiContext.lookup("queue/goAdminOut");
MessageConsumer consumer = session.createConsumer(destination, selector);
System.out.println ("******** MessageConsumer instantiated with the selector phrase = " + selector);
System.out.println ("******** add a MessageListener to consumer");
consumer.setMessageListener (new TCListener ());
System.out.println ("******** MessageListener added");
connection.start ();
System.out.println ("******** Connection started");
} catch (NamingException e) {
System.out.println ("******** Naming Exception");
} catch (JMSException e) {
System.out.println ("******** JMS Execption");
System.out.println ("******** END: TestConsumer.connect ()");
}
Similar Messages
-
Asynchronous Consumer Message Size Limitation?
Hello,
We are currently evaluating the Sun Message Queue 3.5. We are able to successfully send and asynchronously receive messages that are less than 1K. However, when we increased the size of the message to 2K or more, the asynchronous consumer does not return the message and messages that we send subsequently (large or small) do not get received. Seems like the destination is blocked at that point. We are able to retrieve the message synchronously though using the receive(1000) method.
Is there maybe a setting that we must check out for this?
Also, is it possible to support both synchronous and asynchronous messaging at the same time?
ie. Creating MessageListeners and also using the receive method for the same set of destinations?
We were planning to use this as a workaround so that if the message is greater that 1K, we'll just receive it synchronously. However, synchronous receiving doesn't seem to work if there is a listener listening to a destination that contains a large message.
Thanks for your time.Outside of specific configurable parameters, nothing in
the system really cares about the size of the message.
A few possible reasons:
1. if you are using receive(timeout), the receive time may
be too short to complete processing the message (since
larger messages take longer to send over the network)
2. if you are setting an expiration time, the larger messages
could be expiring during the routing stage (since the
messages take longer)
3. The larger messages could be exceeding a configured
size limit on either the destination or broker
To check:
imqcmd query dst -n <name> -t t
or
imqcmd query bkr
And look at the size limits
If the size limits are exceeded, the messages will be rejected.
Additionally, if -
Reconnection for asynchronous consumer
Hello,
I have a connection with only an asynchronous consumer and a JMS ExceptionListener on it. When I pull out the network cable on the client for 10 minutes or so (long enough for the server to close the connection), then plug it back in, my consumer never receives a message again. There is no exception received by the listener. It doesn't seem to matter if my reconnect settings are infinite or not.
If I put producers on the connection, the connection is re-established (or the JMSExceptionListener receives an exception) and everything is fine.
I need to be able to detect the fact that there is a problem. Should I be making synchronous receive calls instead? What about a dummy producer on the connection?
Thanks,
AaronAron,
I guess, you are facing here 'half open connection' problem.
There is already bug filed regarding this and the fix will be available within MQ3.6 timeline.
Bug description is,
"We're doing some reliability/stress testing that involves periodically disabling/re-enabling network interfaces. Every once in a while we end up with a half open connection between the MQ client and broker--the client thinks the connection is up, but the broker has closed it. The client detects that the connection is down when it tries to publish, but if it's only a subscriber, then
it never knows the connection went away. The broker has a mechanism that pings the client-side periodically to prevent this situation, but there doesn't appear to a similar mechanism on the client side.
Ideally, the client's ExceptionListener.onException method should be called when the connection is detected to be (half-)closed."
Workaround suggested is,
" To generate traffic between the client and the broker by creating a session and closing it or creating a temporary destination and deleting it. This will trigger the Exception."
Hope this helps.
Thanks.
Sagar
http://wwws.sun.com/software/products/message_queue -
Several Onmessage and asynchronous process doesn't function
Hi,
I'm using the BPM suite v10.1.2.0.2.
A process instantiated by a pick with two onMessage, each receiving a distinct message from two different invoke from another process, doesn't function.
I have the following error :
<remoteFault>
<part name="summary" >
<summary>when invoking endpointAddress 'http://set.by.caller', exception during AXIS invoke: java.net.UnknownHostException: set.by.caller; nested exception is: javax.xml.rpc.JAXRPCException: java.net.UnknownHostException: set.by.caller</summary>
</part>
<part name="detail" >
<detail>javax.xml.rpc.JAXRPCException: java.net.UnknownHostException: set.by.caller</detail>
</part>
</remoteFault>
More clearly, when I Introspect the data entries to instantiate only the process beginning with the pick, It works with one operation, but not for the other.
I can see that the error is the following : the server always looks after the same portType, and therefore generates the following error : operation cannot be found in the portType.
I assume the code is correct describing the two operations.
Has anyone already faced such a bug ?
Thank you by advance,
mlamarqueHi,
I've been working on it these past days. I Never found the problem.
You can find here the useful bpel code :
<partnerLink myRole="BPELProcess1Provider" name="PartnerLink_1" partnerLinkType="client:BPELProcess1"/>
<partnerLink myRole="BPELProcess1Provider2" name="PartnerLink_2" partnerLinkType="client:BPELProcess2"/>
<variable name="variable1" messageType="client:BPELProcess1RequestMessage"/>
<variable name="variable2" messageType="client:BPELProcess1RequestMessage2"/>
<pick name="Pick_1" createInstance="yes">
<onMessage portType="client:BPELProcess11" operation="initiate1" variable="variable1" partnerLink="PartnerLink_1">
<wait name="Wait_1" for="'PT5S'"/>
</onMessage>
<onMessage portType="client:BPELProcess12" operation="initiate2" variable="variable2" partnerLink="PartnerLink_2">
<wait name="Wait_2" for="'PT5S'"/>
</onMessage>
</pick>
and here is the WSDL code :
<portType name="BPELProcess11">
<operation name="initiate1">
<input message="client:BPELProcess1RequestMessage"/>
</operation>
</portType>
<portType name="BPELProcess12">
<operation name="initiate2">
<input message="client:BPELProcess1RequestMessage2"/>
</operation>
</portType>
<plnk:partnerLinkType name="BPELProcess1">
<plnk:role name="BPELProcess1Provider">
<plnk:portType name="client:BPELProcess11"/>
</plnk:role>
</plnk:partnerLinkType>
<plnk:partnerLinkType name="BPELProcess2">
<plnk:role name="BPELProcess1Provider2">
<plnk:portType name="client:BPELProcess12"/>
</plnk:role>
</plnk:partnerLinkType>
If I Try to introspect the call of 'intiate1' with a HTML form on the BPM server, I get the following error message :
Unfound operation in the portType. The operation "initiate1" cannot be found in the portType "{http://xmlns.oracle.com/BPELProcess1}BPELProcess12". Check if the "initiate1" operation exists.
The other branch is working fine.
I can't help thinking that this is an Oracle Bug : the server always looks after the same branch.
Anyway, thank you by advance
Mathieu Lamarque -
Two consumers (asynchronous) on two JVM's ( urgent )
Hi All,
Is it possible to have two consumer process's on two JVM's to receive the message's published by a single publisher process ?
The mode of transfer is asynchronous
consumer 1 on cpu1
consumer 2 on cpu2
publisher on cpu0
thanx in advanceYes
-
What is Asynchronous call?
Hi,
What is asynchronous? When we say AJAX is asynchronous, it doesn't wait for te server response and will reload only the particular part of the page
with the server response content immediately rather tan reloading the whole page.I have doubt here, if AJAX calls not does not wait for the server response
how can it fetch the server data to be displayed in the view?
Whether that will be stored in an AJAX engine which acts as an interface between user browser and the server?
Which does have its own internal cache to cache the server response from where the details will be served back to the user?
Please clarify.Any example with asynchronous and synchronous are highly appreciated.
Thanks.When we say AJAX is asynchronousIt seems to me that when we say 'AJAX is asynchronous' we are just misusing standard terminology. It isn't asynchronous at all. It engages in a request/response protocol. What it is is partial: it doesn't have to submit the entire form, and it doesn't have to process the entire page as a response; it can also pipeline, i.e. submit several requests before it processes any responses. None of this satisfies any definition of 'asynchronous' that I'm aware of.
-
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 -
Bridge already registered when using two managed servers
I have defined a messaging bridge with a target of my cluster in Weblogic 9.0 (upgraded from 7.0). My cluster has two managed servers. The bridge and resource adapter also have targets of the cluster. When I start the first managed server, everything works fine. The bridge works. When I bring up the second managed server, I repeatedly get the following:
javax.jms.JMSException: SJMSBridge is already registered
Is there something new that I need to define in the config to make this work?Here is the full error. I can understand what you are saying about the cluster, but I get this message even when only one server of the cluster is running. That doesn't make sense to me.
####<Nov 15, 2005 2:30:36 PM PST> <Info> <MessagingBridge> <PFRIMER> <ManagedServer2> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1132093836274> <BEA-200030> <Bridge "SJMSBridge" is configured to work in "Exactly-once" mode, and it is actually working in "Duplicate-okay" mode.>
####<Nov 15, 2005 2:30:36 PM PST> <Info> <MessagingBridge> <PFRIMER> <ManagedServer2> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1132093836805> <BEA-200028> <The bridge "SJMSBridge" has started transferring messages.>
####<Nov 15, 2005 2:30:38 PM PST> <Warning> <MessagingBridge> <PFRIMER> <ManagedServer2> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1132093838008> <BEA-200026> <Bridge "SJMSBridge" encountered some problems in one of its adapters or underlying systems. It stopped transferring messages and will try to reconnect to the adapters shortly. (The exception caught was java.lang.Exception: javax.resource.ResourceException: Error setting message listener
at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1457)
at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1437)
at weblogic.jms.adapter.JMSBaseConnection.setMessageListener(JMSBaseConnection.java:1201)
at weblogic.jms.adapter.JMSConnectionHandle.setMessageListener(JMSConnectionHandle.java:134)
at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:951)
at weblogic.jms.bridge.internal.MessagingBridge.run(MessagingBridge.java:1038)
at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
-------------- Linked Exception ------------
javax.resource.ResourceException: Error creating asynchronous consumer
at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1457)
at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1437)
at weblogic.jms.adapter.JMSBaseConnection.createConsumer(JMSBaseConnection.java:1299)
at weblogic.jms.adapter.JMSBaseConnection.access$400(JMSBaseConnection.java:84)
at weblogic.jms.adapter.JMSBaseConnection$11.run(JMSBaseConnection.java:1183)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
at weblogic.jms.adapter.JMSBaseConnection.setMessageListener(JMSBaseConnection.java:1180)
at weblogic.jms.adapter.JMSConnectionHandle.setMessageListener(JMSConnectionHandle.java:134)
at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:951)
at weblogic.jms.bridge.internal.MessagingBridge.run(MessagingBridge.java:1038)
at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
-------------- Linked Exception 2 ------------
javax.jms.JMSException: SJMSBridge is already registered
at org.exolab.jms.messagemgr.ConsumerManager.createDurableConsumerEndpoint(ConsumerManager.java:404)
at org.exolab.jms.server.JmsServerSession.createSubscriber(JmsServerSession.java:771)
at org.exolab.jms.server.mipc.IpcJmsSessionConnection.createSubscriber(IpcJmsSessionConnection.java:588)
at org.exolab.jms.server.mipc.IpcJmsSessionConnection.notify(IpcJmsSessionConnection.java:165)
at org.exolab.jms.server.mipc.IpcJmsReceiver.notify(IpcJmsReceiver.java:100)
at org.exolab.jms.server.mipc.IpcServerChannel.run(IpcServerChannel.java:161)
.)> -
How to use IBM MQ as a JMS Provider?
Chapter 8.2 on session pools in the 1.0.2 spec seems to make no real mention
of transansactions. If not could you point exactly where? What steps would
one use to cause a foreign messaging-server to infect an async message
with a JTA transaction using Chapter 8.2 session pools?
Chapter 8.3 describes the XA libraries, which are not related to session pools.
The general community feeling on Chapter 8.2 SessionPools is that in almost all
cases they are
inferior to MDBs. To make it worse, they are not a required part of the J2EE
spec. Their
only real advantage is that they can pool access to a single topic subscription.
Nice, but hardly
worth the trouble. Just brainstorming here, but the elegant solution here
seems simple: extend
the JMS spec to allow multiple consumers on a single subscription. This would
also nicely solve
one MDB/topic problem, as even with SessionPools, there is no way to have MDBs
on multiple
servers share a single subscription...
I don't think the spec states that SessionPools should run on a client. I'm
fairly sure
that SessionPools were intended to be a server-side entity. The numerous
repetitions stating
that the MessageListener runs on the app server and that the app server controls
the threads seems to support
this. It is an extension past Chapter 8.2 to get them to work off-server.
(Albeit potentially a nice one, if
one is absolutely determined to use these things instead of MDBs.)
Maciej Szefler wrote:
> I've noticed that BEA maintains that this is a shortcoming in the JMS
> spec -- particularly that there is no way to integrate XA messages from
> other JMS implementations into Weblogic without the vendor implementing
> propriatary Weblogic interfaces, I quote your FAQ:
>
> "The only reason this works for WebLogic Server JMS is that we have defined
> a WebLogic Server extension interface that has a method to associate a
> message with a transaction. This interface, MDBTransaction, is defined in
> news://newsgroups.bea.com/[email protected]. It has one method,
> associateTransaction(), that takes a javax.jms.Message parameter. This
> message must be associated with the transaction. We are hoping that other
> JMS vendors interested in integrating with WebLogic Server will implement
> this interface. "
>
> "Another approach called source managed transactions, would be for there to
> be an API to tell the JMS provider to start a transaction on your behalf
> before delivering the message to an asynchronous consumer. This API doesn't
> exist in J2EE either. Even if there were such a provision, few non-WLS JMS
> providers can begin and drive such a transaction by themselves."
>
> I would like to know where it is that you guys came up with this novel (and
> incorrect) position. The JMS API to do this exists, it is called ASF (JMS
> spec chapter 8) and if WebLogic implemented it correctly then there would be
> no problem driving XA MDBs using MQseries. The fact of the matter is that
> Weblogic 6.1 server is simply not JMS compliant in this respect. The 6.1 JMS
> implementation does not expose the ASF correctly (it relies on the client
> using a special ServerSesisonPool implementation), nor does the MDB
> container use the ASF (which I guess is understandable since it isn't
> implemented correctly). The question is, is Weblogic 7.0 Server going to use
> ASF to drive MDBs and is the Weblogic 7.0 JMS implemetation going to
> correctly expose the ASF to advanced clients that may wish to use it?
>
> -Maciej Szefler
> FiveSight Technologies Inc.
>
> "Tom Barnes" <[email protected]> wrote in message
> news:[email protected]...
> > Clarification. See in-line.
> >
> > Tom Barnes wrote:
> >
> > > Hi Steve,
> > >
> > > This request comes up numerous times in this newsgroup. Since
> > > the FAQ isn't quite up to date, here is the cut-and-paste response:
> > >
> > > Resources:
> > > Resource Library/White-Papers/WebLogic Server section on dev2dev site:
> > >
> http://dev2dev.bea.com/resourcelibrary/whitepapers.jsp?highlight=whitepapers
> > > jmsproviders.doc, jmsmdb.doc, jmsjta.doc
> > >
> > > Code Library/Code Samples/WebLogic Server section on dev2dev site:
> > > "WebLogic MQSeries JMS Support"
> > > wlsmqseries.zip
> > >
> > > Code Library/Alpha Code/WebLogic Server section on dev2dev site:
> > > "Sample JMSBridge For WebLogic 6.0"
> > > JMSBridge60.zip
> > >
> >
> > The above is 6.0 sample code that has nothing to do the below 6.1 alpha
> bridge, and
> > was not developed by anyone on the JMS team. The location for the 6.1
> information is:
> >
> > Resource Library/Guides and Tutorials
> > "Introducing WebLogic Messaging Bridge"
> > MessagingBridge61.zip
> >
> > (see
> >
> http://dev2dev.bea.com/resourcelibrary/guidestutorials/technicalguides.jsp?h
> ighlight=guidestutorials)
> >
> >
> >
> > >
> > > The 6.1 MDB can be driven directly by standard JMS implementations -
> but
> > > not transactionally by vendors that do not implement the
> > > weblogic.jms.extensions.MDBTransaction interface. Such vendors
> > > (including MQSeries) can be made transactional by using a messaging
> bridge
> > > to synchronously forward MQSeries messages into WL queues that in turn
> > > drive the MDB. The 7.0 MDB will be able to be driven transactionally
> > > by non-WL vendors.
> > >
> > > The messaging bridge works with JMS implementations that implement
> > > the standard J2EE JMS API. This bridge is available as alpha code
> > > for 6.1, will be fully supported in 6.1SP3 (due out in June?), and is
> also
> > > part of 7.0 (currently released in beta).
> > >
> > > Tom
> > >
> > > steve chen wrote:
> > >
> > > > We like to use IBM MQ as our message provider, use Message Driven
> Bean (Weblogic
> > > > 6.1) as the consumer. How do we configure WLS so it uses IBM MQ
> instead of WLS
> > > > built in JMS as the provider?
> > > >
> > > > Thanks
> >
-
Problem JMS-c api for message Acknowledgement
Hi,
I am working in a project that uses bea-JMS C api for
Communictions.In my project i am using topic messaging for message reciving and sending..Here i am using durablesubscriber for receiving and client Acknowledgement to Acknowledge the message.
In receiving function I store the message in another JmsMessage for Client-Acknowledgement.
Here comes one problem that, while i Acknowledge on the receive function each and every message Acknowledge correctly.But while i Acknowledge that message from some other function it return -1 as , that it cannot Acknowledge.The other function is working in another thread.
Wheather the seprate thread will make the problem for confirmation.Similar to JDBC connections, JMS sessions and their related child producers and consumers are not thread-safe (with the one exception of the session.close() method).
For example, without added application level locking, its not safe to acknowledge a message from one thread while another thread receives or produces a message. This has special implications for asynchronous consumers, as once the asynchronous consumer is created, access to the session and objects is limited to code within the "onMessage()" and "onException()" callbacks.
This behavior is detailed in the JMS specification.
Tom -
Message sitting in Queues for 30 minutes before MDB picks them up
We're seeing a situation where we place messages on a queue and a small percentage of them will sit on the queue for 30 minutes before being picked up by the MDB to process. Anyone see this before?
Here is the background. We're running 3 distributed queues on a cluster of 4 Weblogic 8.1 sp3 servers. The 30 minute issue happens on all 3 queues on all 4 servers. Currently we do not see a pattern. It can happen at a busy hour and in the middle of the night with nothing going on. During a busy timeframe, we can get up to 50 msg that hangup over a few minutes; less than 5 minutes.
Our Service is an enterprise email service where various clients send email request to us via EJB. The EJB puts an entry into the database and puts a request msg into the queue. The MDB pulls it off the queue sends it to an email subsystem and updates the database.
We added log msgs in both the EJB and MDB to track messages and narrowed it down to the requests just sitting in the JMS queue. We DO NOT set a delivery time via setJMSDeliveryTime().
As mentioned is happens anytime during the day (busy or idle), may go for days without occuring, on any of the 3 JMS queues, on any of the 4 cluster servers, and for any of the clients. It's consistantly 30 minutes. This occurs on a small number of requests, but is enough to concern our business owner.
Any thoughts on possible problems or any thoughts on monitoring or tracking down the issue is greatly appreciated.
Thanks. Later...
- WayneOne possibility is that the messages have already been pushed to an MDB instance in the JMS asynchronous consumer pipeline, but the MDB instance has stalled during message processing - which delays processing of the following messages. The waiting messages count as "pending" in the JMS statistics.
You can reduce the number of messages in a JMS asynchronous consumer's pipeline via the "MessagesMaximum" connection factory setting (default is 10). First: create a custom connection factory with transactions enabled (to support transactional MDBs), and ack-mode set to "previous" (to support pub/sub MDBs), and MessagesMaximum set to its lowest possible value. Second: specify this connection factory's JNDI name in the MDB's weblogic descriptor.
Tom, BEA -
Hello,
I got two rather unrelated questions regarding the JMS implementation:
- Is there any guarantee on when messages become available to consumers?
Suppose my producer is a session bean which posts a message on a
queue. Is there any guarantee on whether a QueueBrowser who starts right
after the transaction is committed will see the message I posted ? Or is
it possible that some delay causes the message to become visible only some
time later ?
- Can QueueBrowsers see messages with a scheduled delivery time that hasn't
arrived yet ?
Thanks & Regards,
Francois Staes.
Francois Staes
NetConsult BVBA
[email protected]
Tel: +32/3/353.44.22
Mobile: +32/475/73.74.48
Fax: +32/3/353.44.06
Hi Francois,
Since you must process messages in order, then the MDB is the
only consumer, so why not just cache state in the MDB that
contains the message-id of the last message processed? If
a newly received message's message-id matches the stored
message-id from the previous message, then treat the newly
received message as an error message.
This seems much simpler than queue-browser/error-queue.
Tom, BEA
P.S. Note that an MDB is destroyed and recreated if the
onMessage throws a Runtime exception or Error. So you will need to
put in a "try/catch() {ejbctx.setRollbackOnly(); cacheMessageId(msg);}"
to prevent the destroy in order to preserve the cached message id
value...
Francois Staes wrote:
> Greg Brail wrote:
>
>
>>>- Is there any guarantee on when messages become available to consumers?
>>> Suppose my producer is a session bean which posts a message on a
>>> queue. Is there any guarantee on whether a QueueBrowser who starts
>>> right after the transaction is committed will see the message I posted
>>> ? Or is it possible that some delay causes the message to become
>>> visible only
>>
>>some
>>
>>> time later ?
>>
>>Well, theoretically, there's always going to be "some delay" ;-) In
>>practice, you should see the message right away. However, if the queue has
>>a consumer on it, we push messages to that consumer in batches (that's one
>>of the things that the "messages pending" statistic in the console tells
>>you about). So, it's possible that the message has already been pushed out
>>to a consumer, which is why you don't see it.
>>
>
>
> Thanks for the answer.
>
> Let me clarify what I want to achieve: I have an MDB receiving messages
> about customers. These messages need to be handled in the correct order.
> But it can happen that some message cannot be processed. Those messages need
> to be pushed onto a seperate queue (an administrative utility can be used
> afterwards to requeue them on the default queue so they get re-processed).
>
> As soon as there is a message about a certain customer on this error queue,
> no further messages about that customer should be processed. Hence, from
> within the MDB we peek on the error queue using a QueueBrowser. If we find
> anything on there for the same customer as the current message, we
> immediately stop the processing, and enqueue it on the error queue too.
>
> Originally, we tried implementing this using the error-queue feature of WLS.
> However, moving the messages on the error queue is an asynchronous activity
> in that case. This means that if a message cannot be processed, and another
> message arrives right afterwards for the same customer, it might be that
> the first message isn't yet visible on the error queue....
>
> That's why I was thinking about moving them to some kind of error queue
> manually, and I needed some kind of guarantee that they would be visible
> immediately.
>
> If I understand correctly what you're saying, I think there is no problem
> because a QueueBrowser is not an asynchronous consumer on the error queue.
>
> Thanks for your help,
>
> Francois Staes.
>
-
File download code works without error, but no file is downloaded
Hello,
I have a very strange problem -- I am trying to download a
simple file from a server, using virtually identical code to what
is in the FileReference.download() examples. My code executes
flawlessly, I get the browse window to select the location to save
and name of the file, as expected. I click "Save" in the file
dialog, and the window disappears -- but no file. I know my URL is
right, because I can test the URL from the browser, and I get the
file back. But here's the even weirder thing: I threw TCPMon in
between Flex and the server, and discovered that the
FileReference.download() method isn't even sending a request to the
server. If I try the exact same URL through a browser, TCPMon shows
both the request and response. But Flex never registers a request
at all.
Help! I have 100% error free code that follows the
documentation examples but doesn't request or download the file.
Your help is appreciated!
Thanks,
BradI found the answer to my problem, but now I want to know WHY
this is, and if it is considered a bug by Adobe -- if anyone out
there has an explanation, that would be great.
I implemented the full set of event handlers, and guess what
-- not only was I not getting any HTTP request being made, but I
also didn't get any event callbacks. Bottom line, I think I found
an Actionscript bug.
The answer to the $64,000 question is this: when the
FileReference object goes out of scope (I had it declared locally),
because the download() call is asynchronous, it doesn't call event
handlers or make a request. It must be garbage collecting it. So
you have to have your variable as a member, not a local variable.
Weird. I find no other objects in Actionscript work like that. I
wonder if it has something to do with the fact that the call
crosses the native boundary (because it is leaving the Flash
sandbox, and interacting with the browser/native OS.
To me, that's like prematurely killing a thread before it has
completed processing just because it has no parent object with a
reference to it. In general, most rules for garbage collection I've
seen in various platforms require either a parent object or thread
of processing to prevent cleanup.
If anyone has an explanation, I'm all ears!
Thanks,
Brad -
Hi,
In short I have two datasets plotted in tables underneath
each other (different spry regions). When I select a row in table 1
it updates table 2, this all works just fine. In region 2 I have a
form with which I can add values to table 2 (PHP MySQL backend)
also works fine. However when I submit the form (using Spry Ajax
call) I want to see the result of INSERT statement right away, so I
refresh the dataset in Region 1 in the response function of
onSubmit like this:
function updateResponseDiv(req){
curRowID = dsAllParts.getCurrentRowID();
dsAllParts.loadData();
dsAllParts.setCurrentRow(curRowID);
Spry.Utils.setInnerHTML('statusbar',
req.xhRequest.responseText);
Syntax looks fine I guess (I also tried
setCurrentRowNumber(curRowID), but the effect is also negative.
My only guess right now is that because the loadData is
asynchronous, this doesn't work. But I would still like a solution.
Who's got an idea ??
Regards,
LeonOk, I'd assumed there would be a "next" link to take them to the next slide so they can advance through at their own pace. In that instance, changing the "next" link to "return" wouldn't throw off the look of the presentation that much.
Keynote can only transition to the next slide, but what you want to do can be faked by making multiple "first" slides.
start slide
section 1-1
section 1-2
copy of start slide
section 2-1
section 2-2
copy of start slide
section 3-1
section 3-2
copy of start slide
At the end of each section, the user would see the start slide again. Each copy would have all the same links and, to the user, it would look like they're advancing through the presentation automatically and always returning to the start slide. -
WebDynpro Application issue consuming asynchronous webservice from SAP PI
Hello experts i ask you for help thie following issue:
i am developing a webdynpro application which is supposed to
send some data from inputfields, and a file, in order to achieve it, that dynpro application is consuming an asyncrhronous webservice , this service is running in SAP Process integration .it uses only a component.
Iam having serious problems at mapping the asynchronous PI web service model -->to -->controller >and then to->view
since when i deploy the application into the SAP portal´s application server, it runs , but inputfields cannot be written.i dont mean unabled, what i mean, is. cannot write anything on them.ECXEPT the file upload UI element.
I have reviewed sap help page, 3 sappress books, about dynpro, and the procedure i am performind is agree with them.
endpoint test answers the folloiwng:
Message Servlet is in Status OK
Status information:
Servlet com.sap.aii.af.mp.soap.web.MessageServlet (Version $Id: //tc/xi/NW04S_20_REL/src/_adapters/_soap/java/com/sap/aii/af/mp/soap/web/MessageServlet.java#1 $) bound to /MessageServlet
Classname ModuleProcessor: null
Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean
Lookupname for remoteModuleProcessorLookupName: null
ModuleProcessorClass not instantiated
ModuleProcessorLocal is Instance of com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0_0
ModuleProcessorRemote not instantiated
what i did is the same as before(in another projects weh i used to import rfc models):
1.- import webservice model,and add it to component
2.-map web service model to controller context
3.-map controller´s context to view context
4.-create actions and methods
5.-binding context controller to ui elements
Dear experts, my questions are:
What am i doing wrong?
should i permorm another steps because the web service is in another application server (SAP PI)?
Should i create a stand alone proxy and then access it from webdynpro?
when i call the web service model excution it seems does not run, neverthless the invocation does not have any syntax error , what coul it be?
Thanx in advance!!just for the sake of other who may hit this thread , the solution is to add sap-client=<clientno> in the url for wsdl
Maybe you are looking for
-
PO is not getting create in ECC
Hi , I am in SRM 7.0 SP 3.0 and ECC.. I have developed the custom BRF for Category approver and activated Standard Role Resolver 'RR_SPENDING_LIMIT_APPROVER' for SLAPPROVER which is working fine. . But i am facing an issue that once SC has been f
-
Problem: add a picture to a header in Pages 5.2
Hello! Does anyone know how to add a picrure to header in Pages 5.2? It was easy do do it in previous Pages 4.2 - just Paste and Edit: Now it pastes only picture's name: Apple Support says that Pages 4.2 doesn't work on Maverics so I can't work in pr
-
BPM messages stuck In Process - never get sent
Hi all, We have had a number of BPM processes running successfully in our XI 3.0 DEV SP17 system for weeks now but suddenly, none are now working. Our BPMs wait a specified amount of time before creating a bundled outbound message. In SXMB_MONI, the
-
Hi, Can anyone help me how to find the condition records for output. We have for the pick, pack and stage different printing options. How can I check it on the system that they have been configured
-
Can't delete or resume print jobs - Epson C60 (shared) on Jaguar
Epson C60 running as a Shared printer on G3 iMac 700 OS X10.2.x Print job sent from AppleWorks on G4 iBook, 10.4.4, wireless connection. Problem: If there's any interruption to a print job while running, it is not possible to resume the job where it