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