You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Matthias Altmann <al...@wi-kassel.de> on 2011/02/18 18:40:57 UTC

[daemon]

Hi @all,

I'm trying to run a daemon for JXTA, a Java Framework for P2P
networks. Here I used the Java Implementation with the following code
integrating JSVC:

package privatenet;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import java.net.URI;
import java.net.URISyntaxException;

import java.util.Properties;

import net.jxta.discovery.DiscoveryService;

import net.jxta.document.MimeMediaType;
import net.jxta.document.StructuredDocumentFactory;
import net.jxta.document.XMLElement;

import net.jxta.exception.PeerGroupException;

import net.jxta.id.IDFactory;

import net.jxta.peergroup.NetPeerGroupFactory;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupID;

import net.jxta.platform.ModuleSpecID;
import net.jxta.platform.NetworkConfigurator;

import net.jxta.protocol.ConfigParams;
import net.jxta.protocol.ModuleImplAdvertisement;
import net.jxta.protocol.PeerGroupAdvertisement;

import net.jxta.rendezvous.RendezvousEvent;
import net.jxta.rendezvous.RendezVousService;
import net.jxta.rendezvous.RendezvousListener;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;


public class Rendezvous implements RendezvousListener,Daemon {
   RendezVousService     netpgRendezvous;
   RendezVousService     apppgRendezvous;
   private static        Logger               logger;
   private               String               jxtaHome;
   private               PeerGroup            netPeerGroup;
   private               PeerGroup            newGroup;
   private               DiscoveryService     discovery;
   private               NetworkConfigurator  configurator;

   // our chosen peer ID
   private               String               peerID =
"urn:jxta:uuid-79B6A084D3264DF8B641867D926C48D9F8BA10F44BA74475ABE2BB568892B0DC03";

   // parameters that define our private JXTA NetPeerGroup
   String NetPeerGroupID="urn:jxta:uuid-8B33E028B054497B8BF9A446A224B1FF02";
   String NetPeerGroupName="My NetPG";
   String NetPeerGroupDesc="A Private Net Peer Group";

   // ---------------------------------------------------------------------------------

    public void initRdv() {
      jxtaHome = System.getProperty("JXTA_HOME");
      if( null == jxtaHome ) {
         logger.info("JXTA_HOME null.  Exiting.");
         System.out.println("JXTA_HOME null.  Exiting.");
         System.exit(1);
      }
      logger = initLogger();

      clearCache(new File(jxtaHome,"cm"));
      logger.info("Private " + this.getClass().getName() + " Starting");
   }

   // --------------------------------------------------------------------------------

   /**
    * Load everything that is basically needed to start the Rendezvous.
    * Open configuration files, init the logger, create the
ServerSockets, the Threads, etc ...
    *
    * @see org.apache.commons.daemon.Daemon#init(org.apache.commons.daemon.DaemonContext)
    */
    public void init(DaemonContext dc) throws Exception {

	// initialize the RDV
	this.initRdv();

	// configure JXTA
	this.configurator = this.configureJXTA();

    }

   public  void start() throws Exception {
      try {
         startJXTA();
         createPeerGroup();
         waitForQuit();
      }
      catch (PeerGroupException e) {
         e.printStackTrace();
         logger.warn("Exiting.");
         System.exit(0);
      }
      catch (Exception e) {
         logger.warn("Unable to start JXTA platform.  Exiting.");
         e.printStackTrace();
         System.exit(0);
      }
   }

    /**
     * Stop the  Rendezvous/Relay.
     *
     * @see org.apache.commons.daemon.Daemon#stop()
     */
    public void stop() throws Exception {

       logger.info("Stop Rdv ...");

       // stop JXTA
       this.stopJXTA();

    }

    /**
     * Destroy any object created in init().
     *
     * @see org.apache.commons.daemon.Daemon#destroy()
     */
    public void destroy() {

	logger.info("Destroy Rdv ...");

	// only reset the logger
	logger = null;

    }

   // -----------------------------------------------------------------------------------------

   private void startJXTA() throws PeerGroupException, Exception {
      logger.info("Starting JXTA platform");

      NetPeerGroupFactory factory;
      try {
         factory = new NetPeerGroupFactory(
            (ConfigParams)configurator.getPlatformConfig(),
            new File(jxtaHome).toURI(),
            IDFactory.fromURI(new URI(NetPeerGroupID)),
            NetPeerGroupName,
            (XMLElement)
StructuredDocumentFactory.newStructuredDocument(MimeMediaType.XMLUTF8,
                "desc", NetPeerGroupName)
         );
      }
      catch(URISyntaxException e) {
         throw new Exception(e.getMessage());
      }

      netPeerGroup = factory.getInterface();

      // The rendezvous service for NetPeerGroup
      netpgRendezvous = netPeerGroup.getRendezVousService();
      netpgRendezvous.addListener(this);
      netpgRendezvous.startRendezVous();

      // The NetPeerGroup discovery service
      discovery = netPeerGroup.getDiscoveryService();

      logger.info("Platform started");
   }

   private void stopJXTA() throws PeerGroupException, Exception {
       logger.info("Stopping JXTA platform");

      /**< Stop the Rendezvous Service **/
      netpgRendezvous.stopRendezVous();

      logger.info("Platform stopped");
   }

   // -----------------------------------------------------------------------------------------

   private void createPeerGroup() throws Exception, PeerGroupException {

      // The new-application subgroup parameters.
      String name = "My App Group";
      String desc = "My App Group Description";
      String gid =  "urn:jxta:uuid-79B6A084D3264DF8B641867D926C48D902";
      String specID =
"urn:jxta:uuid-309B33F10EDF48738183E3777A7C3DE9C5BFE5794E974DD99AC7D409F5686F3306";

      StringBuilder sb = new StringBuilder("=Creating group:  ");
      sb.append(name).append(", ");
      sb.append(desc).append(", ");
      sb.append(gid).append(", ");
      sb.append(specID);
      logger.info(sb.toString());

      ModuleImplAdvertisement implAdv =
netPeerGroup.getAllPurposePeerGroupImplAdvertisement();
      ModuleSpecID modSpecID = (ModuleSpecID )IDFactory.fromURI(new
URI(specID));
      implAdv.setModuleSpecID(modSpecID);

      // Publish the Peer Group implementation advertisement.
      discovery.publish(implAdv);
      discovery.remotePublish(null, implAdv);

      //   Create the new group using the group ID, advertisement,
name, and description
      PeerGroupID groupID = (PeerGroupID )IDFactory.fromURI(new URI(gid));
      newGroup = netPeerGroup.newGroup(groupID,implAdv,name,desc);

      // Start the rendezvous for our applcation subgroup.
      apppgRendezvous = newGroup.getRendezVousService();
      apppgRendezvous.addListener(this);
      apppgRendezvous.startRendezVous();

      // Publish the group remotely.  newGroup() handles the local publishing.
      PeerGroupAdvertisement groupAdv = newGroup.getPeerGroupAdvertisement();
      discovery.remotePublish(null, groupAdv);

      logger.info("Private Application newGroup = " + name + " created
and published");
   }

   // -----------------------------------------------------------------------------------------

   private NetworkConfigurator configureJXTA() {
      logger.info("Configuring platform");
      logger.info("RDV_HOME = " + jxtaHome);

      configurator = new NetworkConfigurator();
      configurator.setHome(new File(jxtaHome));
      configurator.setPeerId(peerID);
      configurator.setName("My Peer Name");
      configurator.setPrincipal("ofno");
      configurator.setPassword("consequence");
      configurator.setDescription("Private Rendezvous");
      configurator.setUseMulticast(false);

      URI seedingURI;
      seedingURI = new File("seeds.txt").toURI();
      configurator.addRdvSeedingURI(seedingURI);
      configurator.addRelaySeedingURI(seedingURI);
      configurator.setMode(NetworkConfigurator.RDV_SERVER +
NetworkConfigurator.RELAY_SERVER);

      configurator.setUseOnlyRelaySeeds(true);
      configurator.setUseOnlyRendezvousSeeds(true);

      configurator.setTcpEnabled(true);
      configurator.setTcpIncoming(true);
      configurator.setTcpOutgoing(true);

      try {
         configurator.save();
      }
      catch(IOException e) {
         e.printStackTrace();
         System.exit(1);
      }

      logger.info("Platform configured and saved");

      return configurator;
   }

   // -----------------------------------------------------------------------------------------

   public void rendezvousEvent(RendezvousEvent event) {
      String eventDescription;
      int    eventType;

         eventType = event.getType();

         switch( eventType ) {
            case RendezvousEvent.RDVCONNECT:
               eventDescription = "RDVCONNECT";
               break;
            case RendezvousEvent.RDVRECONNECT:
               eventDescription = "RDVRECONNECT";
               break;
            case RendezvousEvent.RDVDISCONNECT:
               eventDescription = "RDVDISCONNECT";
               break;
            case RendezvousEvent.RDVFAILED:
               eventDescription = "RDVFAILED";
               break;
            case RendezvousEvent.CLIENTCONNECT:
               eventDescription = "CLIENTCONNECT";
               break;
            case RendezvousEvent.CLIENTRECONNECT:
               eventDescription = "CLIENTRECONNECT";
               break;
            case RendezvousEvent.CLIENTDISCONNECT:
               eventDescription = "CLIENTDISCONNECT";
               break;
            case RendezvousEvent.CLIENTFAILED:
               eventDescription = "CLIENTFAILED";
               break;
            case RendezvousEvent.BECAMERDV:
               eventDescription = "BECAMERDV";
               break;
            case RendezvousEvent.BECAMEEDGE:
               eventDescription = "BECAMEEDGE";
               break;
            default:
               eventDescription = "UNKNOWN RENDEZVOUS EVENT";
         }

         logger.info("RendezvousEvent:  event =  "
                     + eventDescription + " from peer = " + event.getPeer());
   }

   // -----------------------------------------------------------------------------------------

   private Logger initLogger() {
      // See http://logging.apache.org/log4j/docs/manual.html
      // Allows for deepest control over Log4J config.
      System.setProperty("log4j.defaultInitOverride", "true");

      Logger logger=null;
      try {
         ClassLoader cl = this.getClass().getClassLoader();
         InputStream is = cl.getResourceAsStream("privatenet/log4j.properties");
         Properties p = new Properties();
         p.load(is);
         is.close();
         org.apache.log4j.PropertyConfigurator.configure(p);
         logger = Logger.getLogger(this.getClass());
      }
      catch (Exception e) {
         e.printStackTrace();
      }
      finally {
         return logger;
      }

   }

   // -----------------------------------------------------------------------------------------

   private static void clearCache(final File rootDir) {
      try {
         if (rootDir.exists()) {
            File[] list = rootDir.listFiles();
            for (File aList : list) {
               if (aList.isDirectory()) {
                  clearCache(aList);
               } else {
                  aList.delete();
               }
            }
         }
         rootDir.delete();
         System.out.println("Cache component " + rootDir.toString() +
" cleared.");
      }
      catch (Throwable t) {
         logger.info("Unable to clear " + rootDir.toString(), t);
      }
   }

   // -----------------------------------------------------------------------------------------

   synchronized public void waitForQuit() {
         try {
            wait();
         }
         catch (InterruptedException e) {
            e.printStackTrace();
         }
   }

}

Then I packaged this code into jar which I delivered to Jsvc with:

jsvc     -verbose -debug     -Djava.io.tmpdir=/var/tmp     -outfile
/usr/jxta/out.log     -errfile /usr/jxta/error.log     -pidfile
/var/run/rdv.pid     -cp
/usr/share/java/commons-daemon.jar:/usr/jxta/rdv.jar:/usr/jxta/lib/bcprov-jdk14.jar:/usr/jxta/lib/javax.servlet.jar:/usr/jxta/lib/jdom.jar:/usr/jxta/lib/jxta.jar:/usr/jxta/lib/jxtaext.jar:/usr/jxta/lib/log4j-1.2.16.jar:/usr/jxta/lib/org.mortbay.jetty.jar:/usr/jxta/lib/swixml.jar:/usr/jxta/lib/saxpath.jar:/usr/jxta/lib/jaxen-core.jar:/usr/jxta/lib/jaxen-jdom.jar:/usr/jxta/lib/args4j-2.0.7.jar
    privatenet.Rendezvous

error.log gives me an Nullpointer Exception showing:
Using default JVM in
/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/client/libjvm.so
Attemtping to load library
/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/client/libjvm.so
JVM library /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/client/libjvm.so
loaded
JVM library entry point found (0x010393A0)
+-- DUMPING JAVA VM CREATION ARGUMENTS -----------------
| Version:                       0x010004
| Ignore Unrecognized Arguments: True
| Extra options:                 4
|   "-verbose" (0x00000000)
|   "-Djava.io.tmpdir=/var/tmp" (0x00000000)
|   "-Djava.class.path=/usr/share/java/commons-daemon.jar:/usr/jxta/rdv.jar:/usr/jxta/lib/bcprov-jdk14.jar:/usr/jxta/lib/javax.servlet.jar:/usr/jxta/lib/jdom.jar:/usr/jxta/lib/jxta.jar:/usr/jxta/lib/jxtaext.jar:/usr/jxta/lib/log4j-1.2.16.jar:/usr/jxta/lib/org.mortbay.jetty.jar:/usr/jxta/lib/swixml.jar:/usr/jxta/lib/saxpath.jar:/usr/jxta/lib/jaxen-core.jar:/usr/jxta/lib/jaxen-jdom.jar:/usr/jxta/lib/args4j-2.0.7.jar"
(0x00000000)
+-------------------------------------------------------
Java VM created successfully
Class org/apache/commons/daemon/support/DaemonLoader found
Native methods registered
java_init done
Daemon loading...
java.lang.reflect.InvocationTargetException
        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 org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:156)
Caused by: java.lang.NullPointerException
        at privatenet.Rendezvous.initRdv(Unknown Source)
        at privatenet.Rendezvous.init(Unknown Source)
        ... 5 more
Cannot load daemon
java_load failed
Service exit with a return value of 3

Do you have any idea, where the problem is?

Help would be really appreciated

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Re: [daemon]

Posted by Matthias Altmann <al...@wi-kassel.de>.
Hi,

I solved the problem. It was down to an error in the java code at run
time. Ant omits debugging text for class files per default. Therefore
I changed the ant build.xml and got a better error description when I
executed the java classes with jsvc. After that I saw a service exit 1
in the jsvc output, which I could solve with the logs produced from
the running code java code.

2011/2/18 Matthias Altmann <al...@wi-kassel.de>:
> Hi @all,
>
> I'm trying to run a daemon for JXTA, a Java Framework for P2P
> networks. Here I used the Java Implementation with the following code
> integrating JSVC:
>
> package privatenet;
>
> import java.io.File;
> import java.io.IOException;
> import java.io.InputStream;
>
> import java.net.URI;
> import java.net.URISyntaxException;
>
> import java.util.Properties;
>
> import net.jxta.discovery.DiscoveryService;
>
> import net.jxta.document.MimeMediaType;
> import net.jxta.document.StructuredDocumentFactory;
> import net.jxta.document.XMLElement;
>
> import net.jxta.exception.PeerGroupException;
>
> import net.jxta.id.IDFactory;
>
> import net.jxta.peergroup.NetPeerGroupFactory;
> import net.jxta.peergroup.PeerGroup;
> import net.jxta.peergroup.PeerGroupID;
>
> import net.jxta.platform.ModuleSpecID;
> import net.jxta.platform.NetworkConfigurator;
>
> import net.jxta.protocol.ConfigParams;
> import net.jxta.protocol.ModuleImplAdvertisement;
> import net.jxta.protocol.PeerGroupAdvertisement;
>
> import net.jxta.rendezvous.RendezvousEvent;
> import net.jxta.rendezvous.RendezVousService;
> import net.jxta.rendezvous.RendezvousListener;
>
> import org.apache.log4j.Logger;
> import org.apache.log4j.PropertyConfigurator;
>
> import org.apache.commons.daemon.Daemon;
> import org.apache.commons.daemon.DaemonContext;
>
>
> public class Rendezvous implements RendezvousListener,Daemon {
>   RendezVousService     netpgRendezvous;
>   RendezVousService     apppgRendezvous;
>   private static        Logger               logger;
>   private               String               jxtaHome;
>   private               PeerGroup            netPeerGroup;
>   private               PeerGroup            newGroup;
>   private               DiscoveryService     discovery;
>   private               NetworkConfigurator  configurator;
>
>   // our chosen peer ID
>   private               String               peerID =
> "urn:jxta:uuid-79B6A084D3264DF8B641867D926C48D9F8BA10F44BA74475ABE2BB568892B0DC03";
>
>   // parameters that define our private JXTA NetPeerGroup
>   String NetPeerGroupID="urn:jxta:uuid-8B33E028B054497B8BF9A446A224B1FF02";
>   String NetPeerGroupName="My NetPG";
>   String NetPeerGroupDesc="A Private Net Peer Group";
>
>   // ---------------------------------------------------------------------------------
>
>    public void initRdv() {
>      jxtaHome = System.getProperty("JXTA_HOME");
>      if( null == jxtaHome ) {
>         logger.info("JXTA_HOME null.  Exiting.");
>         System.out.println("JXTA_HOME null.  Exiting.");
>         System.exit(1);
>      }
>      logger = initLogger();
>
>      clearCache(new File(jxtaHome,"cm"));
>      logger.info("Private " + this.getClass().getName() + " Starting");
>   }
>
>   // --------------------------------------------------------------------------------
>
>   /**
>    * Load everything that is basically needed to start the Rendezvous.
>    * Open configuration files, init the logger, create the
> ServerSockets, the Threads, etc ...
>    *
>    * @see org.apache.commons.daemon.Daemon#init(org.apache.commons.daemon.DaemonContext)
>    */
>    public void init(DaemonContext dc) throws Exception {
>
>        // initialize the RDV
>        this.initRdv();
>
>        // configure JXTA
>        this.configurator = this.configureJXTA();
>
>    }
>
>   public  void start() throws Exception {
>      try {
>         startJXTA();
>         createPeerGroup();
>         waitForQuit();
>      }
>      catch (PeerGroupException e) {
>         e.printStackTrace();
>         logger.warn("Exiting.");
>         System.exit(0);
>      }
>      catch (Exception e) {
>         logger.warn("Unable to start JXTA platform.  Exiting.");
>         e.printStackTrace();
>         System.exit(0);
>      }
>   }
>
>    /**
>     * Stop the  Rendezvous/Relay.
>     *
>     * @see org.apache.commons.daemon.Daemon#stop()
>     */
>    public void stop() throws Exception {
>
>       logger.info("Stop Rdv ...");
>
>       // stop JXTA
>       this.stopJXTA();
>
>    }
>
>    /**
>     * Destroy any object created in init().
>     *
>     * @see org.apache.commons.daemon.Daemon#destroy()
>     */
>    public void destroy() {
>
>        logger.info("Destroy Rdv ...");
>
>        // only reset the logger
>        logger = null;
>
>    }
>
>   // -----------------------------------------------------------------------------------------
>
>   private void startJXTA() throws PeerGroupException, Exception {
>      logger.info("Starting JXTA platform");
>
>      NetPeerGroupFactory factory;
>      try {
>         factory = new NetPeerGroupFactory(
>            (ConfigParams)configurator.getPlatformConfig(),
>            new File(jxtaHome).toURI(),
>            IDFactory.fromURI(new URI(NetPeerGroupID)),
>            NetPeerGroupName,
>            (XMLElement)
> StructuredDocumentFactory.newStructuredDocument(MimeMediaType.XMLUTF8,
>                "desc", NetPeerGroupName)
>         );
>      }
>      catch(URISyntaxException e) {
>         throw new Exception(e.getMessage());
>      }
>
>      netPeerGroup = factory.getInterface();
>
>      // The rendezvous service for NetPeerGroup
>      netpgRendezvous = netPeerGroup.getRendezVousService();
>      netpgRendezvous.addListener(this);
>      netpgRendezvous.startRendezVous();
>
>      // The NetPeerGroup discovery service
>      discovery = netPeerGroup.getDiscoveryService();
>
>      logger.info("Platform started");
>   }
>
>   private void stopJXTA() throws PeerGroupException, Exception {
>       logger.info("Stopping JXTA platform");
>
>      /**< Stop the Rendezvous Service **/
>      netpgRendezvous.stopRendezVous();
>
>      logger.info("Platform stopped");
>   }
>
>   // -----------------------------------------------------------------------------------------
>
>   private void createPeerGroup() throws Exception, PeerGroupException {
>
>      // The new-application subgroup parameters.
>      String name = "My App Group";
>      String desc = "My App Group Description";
>      String gid =  "urn:jxta:uuid-79B6A084D3264DF8B641867D926C48D902";
>      String specID =
> "urn:jxta:uuid-309B33F10EDF48738183E3777A7C3DE9C5BFE5794E974DD99AC7D409F5686F3306";
>
>      StringBuilder sb = new StringBuilder("=Creating group:  ");
>      sb.append(name).append(", ");
>      sb.append(desc).append(", ");
>      sb.append(gid).append(", ");
>      sb.append(specID);
>      logger.info(sb.toString());
>
>      ModuleImplAdvertisement implAdv =
> netPeerGroup.getAllPurposePeerGroupImplAdvertisement();
>      ModuleSpecID modSpecID = (ModuleSpecID )IDFactory.fromURI(new
> URI(specID));
>      implAdv.setModuleSpecID(modSpecID);
>
>      // Publish the Peer Group implementation advertisement.
>      discovery.publish(implAdv);
>      discovery.remotePublish(null, implAdv);
>
>      //   Create the new group using the group ID, advertisement,
> name, and description
>      PeerGroupID groupID = (PeerGroupID )IDFactory.fromURI(new URI(gid));
>      newGroup = netPeerGroup.newGroup(groupID,implAdv,name,desc);
>
>      // Start the rendezvous for our applcation subgroup.
>      apppgRendezvous = newGroup.getRendezVousService();
>      apppgRendezvous.addListener(this);
>      apppgRendezvous.startRendezVous();
>
>      // Publish the group remotely.  newGroup() handles the local publishing.
>      PeerGroupAdvertisement groupAdv = newGroup.getPeerGroupAdvertisement();
>      discovery.remotePublish(null, groupAdv);
>
>      logger.info("Private Application newGroup = " + name + " created
> and published");
>   }
>
>   // -----------------------------------------------------------------------------------------
>
>   private NetworkConfigurator configureJXTA() {
>      logger.info("Configuring platform");
>      logger.info("RDV_HOME = " + jxtaHome);
>
>      configurator = new NetworkConfigurator();
>      configurator.setHome(new File(jxtaHome));
>      configurator.setPeerId(peerID);
>      configurator.setName("My Peer Name");
>      configurator.setPrincipal("ofno");
>      configurator.setPassword("consequence");
>      configurator.setDescription("Private Rendezvous");
>      configurator.setUseMulticast(false);
>
>      URI seedingURI;
>      seedingURI = new File("seeds.txt").toURI();
>      configurator.addRdvSeedingURI(seedingURI);
>      configurator.addRelaySeedingURI(seedingURI);
>      configurator.setMode(NetworkConfigurator.RDV_SERVER +
> NetworkConfigurator.RELAY_SERVER);
>
>      configurator.setUseOnlyRelaySeeds(true);
>      configurator.setUseOnlyRendezvousSeeds(true);
>
>      configurator.setTcpEnabled(true);
>      configurator.setTcpIncoming(true);
>      configurator.setTcpOutgoing(true);
>
>      try {
>         configurator.save();
>      }
>      catch(IOException e) {
>         e.printStackTrace();
>         System.exit(1);
>      }
>
>      logger.info("Platform configured and saved");
>
>      return configurator;
>   }
>
>   // -----------------------------------------------------------------------------------------
>
>   public void rendezvousEvent(RendezvousEvent event) {
>      String eventDescription;
>      int    eventType;
>
>         eventType = event.getType();
>
>         switch( eventType ) {
>            case RendezvousEvent.RDVCONNECT:
>               eventDescription = "RDVCONNECT";
>               break;
>            case RendezvousEvent.RDVRECONNECT:
>               eventDescription = "RDVRECONNECT";
>               break;
>            case RendezvousEvent.RDVDISCONNECT:
>               eventDescription = "RDVDISCONNECT";
>               break;
>            case RendezvousEvent.RDVFAILED:
>               eventDescription = "RDVFAILED";
>               break;
>            case RendezvousEvent.CLIENTCONNECT:
>               eventDescription = "CLIENTCONNECT";
>               break;
>            case RendezvousEvent.CLIENTRECONNECT:
>               eventDescription = "CLIENTRECONNECT";
>               break;
>            case RendezvousEvent.CLIENTDISCONNECT:
>               eventDescription = "CLIENTDISCONNECT";
>               break;
>            case RendezvousEvent.CLIENTFAILED:
>               eventDescription = "CLIENTFAILED";
>               break;
>            case RendezvousEvent.BECAMERDV:
>               eventDescription = "BECAMERDV";
>               break;
>            case RendezvousEvent.BECAMEEDGE:
>               eventDescription = "BECAMEEDGE";
>               break;
>            default:
>               eventDescription = "UNKNOWN RENDEZVOUS EVENT";
>         }
>
>         logger.info("RendezvousEvent:  event =  "
>                     + eventDescription + " from peer = " + event.getPeer());
>   }
>
>   // -----------------------------------------------------------------------------------------
>
>   private Logger initLogger() {
>      // See http://logging.apache.org/log4j/docs/manual.html
>      // Allows for deepest control over Log4J config.
>      System.setProperty("log4j.defaultInitOverride", "true");
>
>      Logger logger=null;
>      try {
>         ClassLoader cl = this.getClass().getClassLoader();
>         InputStream is = cl.getResourceAsStream("privatenet/log4j.properties");
>         Properties p = new Properties();
>         p.load(is);
>         is.close();
>         org.apache.log4j.PropertyConfigurator.configure(p);
>         logger = Logger.getLogger(this.getClass());
>      }
>      catch (Exception e) {
>         e.printStackTrace();
>      }
>      finally {
>         return logger;
>      }
>
>   }
>
>   // -----------------------------------------------------------------------------------------
>
>   private static void clearCache(final File rootDir) {
>      try {
>         if (rootDir.exists()) {
>            File[] list = rootDir.listFiles();
>            for (File aList : list) {
>               if (aList.isDirectory()) {
>                  clearCache(aList);
>               } else {
>                  aList.delete();
>               }
>            }
>         }
>         rootDir.delete();
>         System.out.println("Cache component " + rootDir.toString() +
> " cleared.");
>      }
>      catch (Throwable t) {
>         logger.info("Unable to clear " + rootDir.toString(), t);
>      }
>   }
>
>   // -----------------------------------------------------------------------------------------
>
>   synchronized public void waitForQuit() {
>         try {
>            wait();
>         }
>         catch (InterruptedException e) {
>            e.printStackTrace();
>         }
>   }
>
> }
>
> Then I packaged this code into jar which I delivered to Jsvc with:
>
> jsvc     -verbose -debug     -Djava.io.tmpdir=/var/tmp     -outfile
> /usr/jxta/out.log     -errfile /usr/jxta/error.log     -pidfile
> /var/run/rdv.pid     -cp
> /usr/share/java/commons-daemon.jar:/usr/jxta/rdv.jar:/usr/jxta/lib/bcprov-jdk14.jar:/usr/jxta/lib/javax.servlet.jar:/usr/jxta/lib/jdom.jar:/usr/jxta/lib/jxta.jar:/usr/jxta/lib/jxtaext.jar:/usr/jxta/lib/log4j-1.2.16.jar:/usr/jxta/lib/org.mortbay.jetty.jar:/usr/jxta/lib/swixml.jar:/usr/jxta/lib/saxpath.jar:/usr/jxta/lib/jaxen-core.jar:/usr/jxta/lib/jaxen-jdom.jar:/usr/jxta/lib/args4j-2.0.7.jar
>    privatenet.Rendezvous
>
> error.log gives me an Nullpointer Exception showing:
> Using default JVM in
> /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/client/libjvm.so
> Attemtping to load library
> /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/client/libjvm.so
> JVM library /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/client/libjvm.so
> loaded
> JVM library entry point found (0x010393A0)
> +-- DUMPING JAVA VM CREATION ARGUMENTS -----------------
> | Version:                       0x010004
> | Ignore Unrecognized Arguments: True
> | Extra options:                 4
> |   "-verbose" (0x00000000)
> |   "-Djava.io.tmpdir=/var/tmp" (0x00000000)
> |   "-Djava.class.path=/usr/share/java/commons-daemon.jar:/usr/jxta/rdv.jar:/usr/jxta/lib/bcprov-jdk14.jar:/usr/jxta/lib/javax.servlet.jar:/usr/jxta/lib/jdom.jar:/usr/jxta/lib/jxta.jar:/usr/jxta/lib/jxtaext.jar:/usr/jxta/lib/log4j-1.2.16.jar:/usr/jxta/lib/org.mortbay.jetty.jar:/usr/jxta/lib/swixml.jar:/usr/jxta/lib/saxpath.jar:/usr/jxta/lib/jaxen-core.jar:/usr/jxta/lib/jaxen-jdom.jar:/usr/jxta/lib/args4j-2.0.7.jar"
> (0x00000000)
> +-------------------------------------------------------
> Java VM created successfully
> Class org/apache/commons/daemon/support/DaemonLoader found
> Native methods registered
> java_init done
> Daemon loading...
> java.lang.reflect.InvocationTargetException
>        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 org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:156)
> Caused by: java.lang.NullPointerException
>        at privatenet.Rendezvous.initRdv(Unknown Source)
>        at privatenet.Rendezvous.init(Unknown Source)
>        ... 5 more
> Cannot load daemon
> java_load failed
> Service exit with a return value of 3
>
> Do you have any idea, where the problem is?
>
> Help would be really appreciated
>



-- 
Universität Kassel
Wirtschaftsinformatik | Information Systems
Forschungszentrum IT-Gestaltung (ITeG) | Research Center for IS Design (ITeG)
http://www.inf.wirtschaft.uni-kassel.de | http://www.iteg.uni-kassel.de
Nora-Platiel-Straße 4 | 34127 Kassel | Germany
Tel. +(0)49 561 804 6061

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org