Hi guys, i tried to get phoenix (james) to work with commons daemon. And by now i really have no idea why it no work and whats the problem. This just drives my crazy.. So maybe a other commiter has a idee .. or maybe Peter Royal ( he worked on avalon if im not wrong)..
I created a jar called phoenix-daemon-loader.jar which contains just one class which is needed for jsvc to invoke phoenix. The class will be posted on the end of the email.. I compiles jsvc and move it to the bin path of james. I also moved the commons-daemon.jar and phoenix-daemon-loader.jar in the dir. Then i tried to start phoenix (james) with jsvc by calling: [EMAIL PROTECTED]:/tmp/james-3.0-dev/bin# ./jsvc -Djava.ext.dirs=/tmp/james-3.0-dev/lib:/tmp/james-3.0-dev/tools/lib -Djava.security.manager -Djava.security.policy=jar:file:/tmp/james-3.0-dev/bin/phoenix-loader.jar\!/META-INF/java.policy -Dphoenix.home=/tmp/james-3.0-dev -Djava.io.tmpdir=/tmp/james-3.0-dev/temp -cp commons-daemon.jar:phoenix-daemon-loader.jar:phoenix-loader.jar -wait 30 -nodetach -errfile error.log org.apache.avalon.phoenix.launcher.CommonsDaemonLauncher This should be right from the docs of commons daemon. But phoenix get not started. See error.log: org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleException: Component named "nntpserver" failed to pass through the Starting stage. (Reason: java.net.BindException: Permission denied). at org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleHelper.fail(LifecycleHelper.java:354) at org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:226) at org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:530) at org.apache.avalon.phoenix.components.application.DefaultApplication.doRunPhase(DefaultApplication.java:478) at org.apache.avalon.phoenix.components.application.DefaultApplication.runPhase(DefaultApplication.java:409) at org.apache.avalon.phoenix.components.application.DefaultApplication.start(DefaultApplication.java:180) at org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:260) at org.apache.avalon.phoenix.components.kernel.DefaultKernel.startup(DefaultKernel.java:295) at org.apache.avalon.phoenix.components.kernel.DefaultKernel.addApplication(DefaultKernel.java:376) at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:357) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:542) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:535) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFiles(DefaultEmbeddor.java:520) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployDefaultApplications(DefaultEmbeddor.java:509) at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute(DefaultEmbeddor.java:268) at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:198) at java.lang.Thread.run(Thread.java:595) Caused by: java.net.BindException: Permission denied at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359) at java.net.ServerSocket.bind(ServerSocket.java:319) at java.net.ServerSocket.<init>(ServerSocket.java:185) at org.apache.avalon.cornerstone.blocks.sockets.DefaultServerSocketFactory.createServerSocket(DefaultServerSocketFac tory.java:74) at org.apache.james.core.AbstractJamesService.initializeServerSocket(AbstractJamesService.java:376) at org.apache.james.core.AbstractJamesService.initialize(AbstractJamesService.java:352) at org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:244) at org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:200) ... 15 more But why ? i start it as root .. I also tried to use ports higher then 1024. Same problem.. Any idea what i missed ? BTW, i wrote a sample application which just bind ports and get started with jsvc. No problems there. So the porblems seems to be in phoenix.. bye Norman CommonsDaemonLauncher.class: package org.apache.avalon.phoenix.launcher; import org.apache.avalon.phoenix.launcher.Main; import org.apache.commons.daemon.Daemon; import org.apache.commons.daemon.DaemonContext; import org.apache.commons.daemon.DaemonController; import java.util.Hashtable; import java.util.Observable; import java.util.Observer; /** * Phoenix launcher using Commons daemon. */ public class CommonsDaemonLauncher implements Daemon, Observer { private DaemonContext m_context; private DaemonController m_controller; private String[] m_args; public void init(final DaemonContext daemonContext) throws Exception { m_context = daemonContext; m_controller = m_context.getController(); m_args = m_context.getArguments(); } public void start() throws Exception { final Hashtable data = new Hashtable(); data.put(Observer.class.getName(), this); Main.startup(m_args, data, false); } public void stop() { Main.shutdown(); } public void destroy() { } public void update(final Observable observable, final Object arg) { final String command = (null != arg) ? arg.toString() : ""; if (command.equals("restart")) { log("CommonsDaemon: restart requested."); m_controller.reload(); log("CommonsDaemon: restart completed."); } else if (command.equals("shutdown")) { log("CommonsDaemon: shutdown requested."); m_controller.shutdown(); log("CommonsDaemon: shutdown completed."); } else { throw new IllegalArgumentException("Unknown action " + command); } } private void log(final String message) { System.out.print("CommonsDaemon: "); System.out.println(message); System.out.flush(); } }
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil