Hi. 

I use a simple NotificationListener to test slide with tomcat. I
subscribe to "Update", "Update/newmember" and "Delete" to a file and a
collection . I mess a little bit with DAVExplorer and then I
unsubscribe ( getting the error of my previous post ) . I then restart
the test code (the server was still running) and get

Mar 23, 2005 12:12:55 PM org.apache.webdav.lib.NotificationListener subscribe
SEVERE: Subscription for uri='' failed. State: 500

I can't register or subscribe anything else untill I restart the server . 
I use jakarta-slide-2.1-tomcat-5.0.28 bundled . Any help would be appreciated 


==============================================
Here's the code I use to produce the error :
==============================================
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;

import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.webdav.lib.NotificationListener;
import org.apache.webdav.lib.Subscriber;
import org.apache.webdav.lib.methods.DepthSupport;

import com.terma.webdav.Utils;

public class Test {

        public static void main(String args[]) {
                Test test = new Test();
                test.testNotify();
        }

        public static void testConnect() {
                try {
                        Utils util = new Utils("127.0.0.1", "8080");
                        util.connect("root", "root");

                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

        public void testNotify() {
                String testDossier = "testNotify";
                Utils help = new Utils("127.0.0.1", "8080");

                Test test = new Test();
                mySubscriber subscriber;
                mySubscriber subscriber1;
                myFrame fr = test.new myFrame();
                try {

                        subscriber = test.new mySubscriber(fr);
                        subscriber1 = test.new mySubscriber(fr);

                        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                        help.connect("root", "root");

                        File f1 = new File("/home/marco/install.log");
                        File f2 = new File("/home/marco/tmp/tmp.xpi");

                        help
                                        .uploadFile(new FileInputStream(f1), 
f1.getName(), null,
                                                        "DAV:");
                        help
                                        .uploadFile(new FileInputStream(f2), 
f2.getName(), null,
                                                        "DAV:");

                        System.out.println("subscribing to " + f1.getName());
                        NotificationListener listener = subscribe("root", 
"root", "test",
                                        subscriber1);

                        fr.setSize(400, 400);
                        fr.show();
                        UsernamePasswordCredentials credentials = new 
UsernamePasswordCredentials(
                                        "root", "root");

                        boolean success = listener.unsubscribe(help
                                        .normalize(Utils.DEFAULT_ROOT_PATH + 
"test"), subscriber,
                                        credentials);

                        System.exit(0);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

        public NotificationListener subscribe(String username, String password,
                        String path, Subscriber subscriber) throws IOException {
                try {
                        NotificationListener listener = null;
                        int pollInterval = 10000; //10 seconds
                        boolean success = true;
                        UsernamePasswordCredentials credentials = new 
UsernamePasswordCredentials(
                                        username, password);

                        listener = new NotificationListener("", 0, "127.0.0.1", 
8080,
                                        Protocol.getProtocol("http"), 
credentials, "/slide/files",
                                        pollInterval, false);

                        success = listener.subscribe("Update", "",
                                        DepthSupport.DEPTH_INFINITY, 
pollInterval, 100, subscriber,
                                        credentials);
                        success = listener.subscribe("Update/newmember", "",
                                        DepthSupport.DEPTH_INFINITY, 
pollInterval, 100, subscriber,
                                        credentials);
                        success = success ? listener.subscribe("Delete", "",
                                        DepthSupport.DEPTH_INFINITY, 
pollInterval, 100, subscriber,
                                        credentials) : false;

                        return listener;
                } catch (Exception e) {
                        e.printStackTrace();
                        return null;
                } finally {
                }
        }

        class mySubscriber implements Subscriber {
                myFrame fr;

                public mySubscriber(myFrame fr) {
                        this.fr = fr;
                }

                /* (non-Javadoc)
                 * @see 
org.apache.webdav.lib.Subscriber#notify(java.lang.String,
java.util.Map)
                 */
                public void notify(String uri, Map information) {
                        StringBuffer message = new StringBuffer("Notification : 
");
                        String corpo = "The resource(s) \n";
                        if (!information.isEmpty()) {
                                Set keys = information.keySet();
                                Iterator it = keys.iterator();
                                Object key = null;
                                Object msg = null;
                                while (it.hasNext()) {
                                        key = it.next();
                                        msg = information.get(key);
                                        if (message != null)
                                                message.append("\n");
                                        else
                                                message = new StringBuffer();

                                        message.append(key.toString());
                                        message.append(" = ");
                                        message.append(msg.toString());
                                        corpo += msg.toString();
                                }
                        }
                        fr.addMessage(message.toString());
                }
        }

        class myFrame extends JDialog {

                /**
                 * Comment for <code>serialVersionUID</code>
                 */
                private static final long serialVersionUID = 
3760558698267096374L;

                JTextField text = new JTextField();

                public myFrame() {
                        getContentPane().add(text);
                        JButton btn = new JButton(new AbstractAction("close") {
                                public void actionPerformed(ActionEvent e) {
                                        myFrame.this.dispose();
                                }
                        });
                        getContentPane().add(btn, BorderLayout.SOUTH);
                }

                public void addMessage(String txt) {
                        StringBuffer msg = new StringBuffer(text.getText());
                        msg.append("\n");
                        msg.append(txt);
                        text.setText(msg.toString());
                }

                public void show() {
                        super.setModal(true);
                        super.show();
                }

        }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to