[EMAIL PROTECTED] wrote:

>Hi Marcel,
>
>I use XmlBlaster to send PtP messages from XmlBlaster client A to client B.
>The messages are volatile and don't use the forcequeuing feature.
>
>Client B uses a callback that implements the update method like  :
>      private messageCount = 0;
>
>      public String[] update(String cbSessionId, MessageUnit[] msgUnitArr)
>{
>            if (messageCount == 10) {
>                  System.exit(0);
>            } else {
>                  /* handle message */
>            }
>            messageCount++;
>      }
>
>During the crash (simulated by the System.exit(0)), XmlBlaster server gets
>an org.omg.CORBA.COMM_FAILURE and then throws the following :
>      [Aug 20, 2002 5:27:50 PM ERROR MsgQueue.java:294-MsgQueue:subject:B]
>The queue is shutdown, putMsgs() of 1 messages failed, starting error
>handling ...
>      java.lang.Exception: Stack trace
>              at java.lang.Thread.dumpStack(Thread.java:992)
>              at
>org.xmlBlaster.engine.queue.MsgQueue.putMsgs(MsgQueue.java:295)
>              at
>org.xmlBlaster.engine.queue.MsgQueue.putMsg(MsgQueue.java:274)
>              at
>org.xmlBlaster.authentication.SubjectInfo.queueMessage(SubjectInfo.java:205)
>              at
>org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1009)
>              at
>org.xmlBlaster.engine.XmlBlasterImpl.publish(XmlBlasterImpl.java:136)
>              at
>org.xmlBlaster.protocol.corba.ServerImpl.publish(ServerImpl.java:107)
>              at org.xmlBlaster.protocol.corba.serverIdl.ServerPOA.
>_invoke(ServerPOA.java:80)
>              at
>org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:207)
>              at
>org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:404)
>              at
>org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:513)
>      [Aug 20, 2002 5:27:51 PM INFO  RequestBroker] Publishing 1 volatile
>dead letters
>
>After the crash of client B, I restart that client (login with the same
>name and password) and XmlBlaster server still throws the above mentioned
>exceptions for all new sended messages.
>
>
>What is wrong ?
>
No idea, i have made two clients (they are attached) trying
to reproduce this behaviour, but on my machine all is fine:

 java org.xmlBlaster.Main
 java PtpReceive
 java PtpSend

(they have some options to play with - see code).

Could you please send me your code?

Which version do you use? (you should stay with
the newest cvs).

thanks for reporting,

Marcel

// xmlBlaster/demo/javaclients/PtpReceive.java import org.jutils.log.LogChannel; import org.xmlBlaster.util.*; import org.xmlBlaster.client.*; import org.xmlBlaster.client.protocol.XmlBlasterConnection; import org.xmlBlaster.engine.helper.MessageUnit; import org.xmlBlaster.engine.helper.Destination; /** * Connects to xmlBlaster with name 'receiver' and waits for updates. *

* After the third update (abortCount) it does a System.exit and aborts (without logout) *

* Use this client as a partner for PtpSend.java to play with xmlBlaster *

* Invoke: *

 *  java PtpReceive
 *
 *  java PtpReceive  -abortCount 3
 *  
* @see xmlBlaster interface */ public class PtpReceive { private final String ME = "PtpReceive"; private XmlBlasterConnection receiver = null; private final String receiverName = "receiver"; private int counter = 0; private int abortCount = 3; public PtpReceive(final Global glob) { final LogChannel log = glob.getLog(null); abortCount = glob.getProperty().get("abortCount", 3); try { // setup the receiver client ... receiver = new XmlBlasterConnection(glob); ConnectQos qos = new ConnectQos(glob, receiverName, "secret"); ConnectReturnQos conRetQos = receiver.connect(qos, new I_Callback() { public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos) { log.info(receiverName, "Receiving asynchronous message '" + updateKey.getOid() + "' in default handler"); counter++; if (counter == abortCount) System.exit(-1); return ""; } }); // Login to xmlBlaster, default handler for updates log.info(receiverName, "Receiver connected to xmlBlaster."); } catch (XmlBlasterException e) { log.error(ME, "Houston, we have a problem: " + e.toString()); } finally { // Wait a second for messages to arrive before we logout try { Thread.currentThread().sleep(1000); } catch( InterruptedException i) {} log.info(ME, "Waiting on messages, aborting after " + abortCount + " messages, or hit a key to exit"); try { System.in.read(); } catch(java.io.IOException e) {} if (receiver != null) { receiver.disconnect(new DisconnectQos()); } } } /** * Try *
    *   java PtpReceive -help
    * 
* for usage help */ public static void main(String args[]) { Global glob = new Global(); if (glob.init(args) != 0) { // Get help with -help XmlBlasterConnection.usage(); glob.getLog(null).info("PtpReceive", "Example: java PtpReceive -abortCount 3\n"); System.exit(1); } new PtpReceive(glob); } } // xmlBlaster/demo/javaclients/PtpSend.java import org.jutils.log.LogChannel; import org.xmlBlaster.util.*; import org.xmlBlaster.client.*; import org.xmlBlaster.client.protocol.XmlBlasterConnection; import org.xmlBlaster.engine.helper.MessageUnit; import org.xmlBlaster.engine.helper.Destination; /** * A sender client connect to xmlBlaster, * the sender sends PtP (point to point) messages to the client "receiver" *

* Use this client as a partner for PtpReceive.java to play with xmlBlaster *

* Invoke: *

 * Start this sender:
 *
 *  java PtpSend
 *     (get exception if message is not delivered)
 *
 *  java PtpSend -numSend 1000 -delay 2000
 *     (send 1000 messages, sleep 2 sec in between)
 *
 *  java PtpSend -forceQueuing true
 *     (message is queued if user 'receiver' is offline)
 *
 * Start a receiver:
 *
 *  java PtpReceive
 *
 * 
* @see xmlBlaster interface */ public class PtpSend { private final String ME = "PtpSend"; private XmlBlasterConnection sender = null; private final String senderName = "sender"; private final String receiverName = "receiver"; public PtpSend(final Global glob) { final LogChannel log = glob.getLog(null); try { // setup the sender client ... sender = new XmlBlasterConnection(glob); ConnectQos qos = new ConnectQos(glob, senderName, "secret"); ConnectReturnQos conRetQos = sender.connect(qos, new I_Callback() { public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos) { log.info(senderName, "Receiving asynchronous message '" + updateKey.getOid() + "' in default handler"); return ""; } }); // Login to xmlBlaster, default handler for updates log.info(senderName, "Sender connected to xmlBlaster."); int numSend = glob.getProperty().get("numSend", 100); long delay = glob.getProperty().get("delay", 2000); log.info(ME, "Send " + numSend + " messages to '" + receiverName + "' sleeping " + delay + " millis inbetween"); for (int ii=0; ii * java PtpSend -help * * for usage help */ public static void main(String args[]) { Global glob = new Global(); if (glob.init(args) != 0) { // Get help with -help XmlBlasterConnection.usage(); glob.getLog(null).info("PtpSend", "Example: java PtpSend -forceQueuing true\n"); System.exit(1); } new PtpSend(glob); } }

Reply via email to