Author: veithen
Date: Tue Dec 11 17:26:34 2012
New Revision: 1420298
URL: http://svn.apache.org/viewvc?rev=1420298&view=rev
Log:
* Added a Daemon implementation for the Axis stand-alone server.
* Simplified the maven-axis-server-plugin: now all processes controlled by the
plug-in are Daemon implementations.
Added:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/ServerException.java
(with props)
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Configurator.java
(with props)
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/ConfiguratorException.java
(with props)
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Main.java
(with props)
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/AxisServerDaemon.java
(with props)
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractDaemonControlMojo.java
- copied, changed from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractServerMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartDaemonMojo.java
- copied, changed from r1419166,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartProcessMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DaemonManager.java
- copied, changed from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ProcessManager.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultDaemonManager.java
- copied, changed from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultProcessManager.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/RemoteDaemon.java
- copied, changed from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ManagedProcess.java
Removed:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractServerMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartProcessMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AxisServerProcessControl.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DaemonProcessControl.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultProcessManager.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ManagedProcess.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ProcessControl.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ProcessManager.java
Modified:
axis/axis1/java/trunk/axis-standalone-server/pom.xml
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/LimitSessionManager.java
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitHandler.java
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitListener.java
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServer.java
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServlet.java
axis/axis1/java/trunk/distribution/pom.xml
axis/axis1/java/trunk/maven/maven-axis-server-plugin/pom.xml
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartDaemonMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartServerMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StopAllMojo.java
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/resources/META-INF/plexus/components.xml
Modified: axis/axis1/java/trunk/axis-standalone-server/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/pom.xml?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
--- axis/axis1/java/trunk/axis-standalone-server/pom.xml (original)
+++ axis/axis1/java/trunk/axis-standalone-server/pom.xml Tue Dec 11 17:26:34
2012
@@ -49,12 +49,31 @@
<version>1.2</version>
</dependency>
<dependency>
+ <groupId>commons-daemon</groupId>
+ <artifactId>commons-daemon</artifactId>
+ </dependency>
+ <dependency>
<!-- Jetty 6.1 is the last version with support for Java 1.4 -->
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+
<mainClass>org.apache.axis.server.standalone.cli.Main</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
<reporting>
<plugins>
<plugin>
Modified:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/LimitSessionManager.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/LimitSessionManager.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/LimitSessionManager.java
(original)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/LimitSessionManager.java
Tue Dec 11 17:26:34 2012
@@ -32,7 +32,7 @@ import org.mortbay.jetty.servlet.HashSes
*
* @author Andreas Veithen
*/
-public class LimitSessionManager extends HashSessionManager {
+final class LimitSessionManager extends HashSessionManager {
// This is only needed to get access to some protected methods/fields.
class Session extends HashSessionManager.Session {
private static final long serialVersionUID = -6648322281268846583L;
@@ -54,7 +54,7 @@ public class LimitSessionManager extends
private Timer timer;
private TimerTask task;
- public LimitSessionManager(int maxSessions) {
+ LimitSessionManager(int maxSessions) {
this.maxSessions = maxSessions;
}
Modified:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitHandler.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitHandler.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitHandler.java
(original)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitHandler.java
Tue Dec 11 17:26:34 2012
@@ -29,10 +29,13 @@ import org.apache.axis.utils.Admin;
/**
* Handler that looks for the {@link MessageContext#QUIT_REQUESTED} flag set
by {@link Admin} and
* initiates the shutdown procedure if the flag is set.
+ * <p>
+ * Note: this is an internal class that should not be used by application code.
*
* @author Andreas Veithen
*/
-public class QuitHandler extends BasicHandler {
+// Must be public so that the Axis core can load it
+public final class QuitHandler extends BasicHandler {
public static final String QUIT_LISTENER = QuitListener.class.getName();
public void invoke(MessageContext msgContext) throws AxisFault {
Modified:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitListener.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitListener.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitListener.java
(original)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/QuitListener.java
Tue Dec 11 17:26:34 2012
@@ -23,7 +23,7 @@ package org.apache.axis.server.standalon
*
* @author Andreas Veithen
*/
-class QuitListener {
+final class QuitListener {
private boolean quit;
synchronized void requestQuit() {
Added:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/ServerException.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/ServerException.java?rev=1420298&view=auto
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/ServerException.java
(added)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/ServerException.java
Tue Dec 11 17:26:34 2012
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.server.standalone;
+
+public class ServerException extends Exception {
+ private static final long serialVersionUID = 2996112474203025829L;
+
+ public ServerException(Throwable cause) {
+ super(cause);
+ }
+}
Propchange:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/ServerException.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServer.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServer.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServer.java
(original)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServer.java
Tue Dec 11 17:26:34 2012
@@ -19,16 +19,10 @@
package org.apache.axis.server.standalone;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.SessionManager;
import org.mortbay.jetty.servlet.Context;
@@ -45,82 +39,71 @@ import org.mortbay.resource.ResourceColl
*
* @author Andreas Veithen
*/
-public class StandaloneAxisServer {
- public static void main(String[] args) throws Exception {
- Options options = new Options();
-
- {
- Option option = new Option("p", true, "the HTTP port");
- option.setArgName("port");
- option.setRequired(true);
- options.addOption(option);
- }
-
- {
- Option option = new Option("w", true, "the work directory");
- option.setArgName("dir");
- option.setRequired(true);
- options.addOption(option);
- }
-
- {
- Option option = new Option("j", true, "a list of directories to
look up JWS files from");
- option.setArgName("dirs");
- options.addOption(option);
- }
-
- {
- Option option = new Option("m", true, "the maximum number of
concurrently active sessions");
- option.setArgName("count");
- options.addOption(option);
- }
-
- if (args.length == 0) {
- HelpFormatter formatter = new HelpFormatter();
- formatter.printHelp(StandaloneAxisServer.class.getName(), options);
- return;
- }
-
- CommandLineParser parser = new GnuParser();
- CommandLine cmdLine;
- try {
- cmdLine = parser.parse(options, args);
- } catch (ParseException ex) {
- System.err.println(ex.getMessage());
- System.exit(1);
- return; // Make compiler happy
- }
-
- int port = Integer.parseInt(cmdLine.getOptionValue("p"));
-
- int maxSessions;
- if (cmdLine.hasOption("m")) {
- maxSessions = Integer.parseInt(cmdLine.getOptionValue("m"));
- } else {
- maxSessions = -1;
- }
-
+public final class StandaloneAxisServer {
+ private int port;
+ private File workDir;
+ private int maxSessions = -1;
+ private File[] jwsDirs;
+
+ private Server server;
+ private QuitListener quitListener;
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public File getWorkDir() {
+ return workDir;
+ }
+
+ public void setWorkDir(File workDir) {
+ this.workDir = workDir;
+ }
+
+ public int getMaxSessions() {
+ return maxSessions;
+ }
+
+ public void setMaxSessions(int maxSessions) {
+ this.maxSessions = maxSessions;
+ }
+
+ public File[] getJwsDirs() {
+ return jwsDirs == null ? null : (File[])jwsDirs.clone();
+ }
+
+ public void setJwsDirs(File[] jwsDirs) {
+ this.jwsDirs = jwsDirs == null ? null : (File[])jwsDirs.clone();
+ }
+
+ public void init() throws ServerException {
StandaloneAxisServlet servlet = new StandaloneAxisServlet();
List resources = new ArrayList();
// Add the work dir as a resource so that Axis can create its
server-config.wsdd file there
- File workDir = new File(cmdLine.getOptionValue("w"));
new File(workDir, "WEB-INF").mkdir();
- resources.add(Resource.newResource(workDir.getAbsolutePath()));
+ try {
+ resources.add(Resource.newResource(workDir.getAbsolutePath()));
+ } catch (IOException ex) {
+ throw new ServerException(ex);
+ }
- boolean enableJWS;
- if (cmdLine.hasOption("j")) {
- String[] jwsDirs =
cmdLine.getOptionValue("j").split(File.pathSeparator);
+ if (jwsDirs != null) {
for (int i=0; i<jwsDirs.length; i++) {
- resources.add(Resource.newResource(jwsDirs[i]));
+ try {
+
resources.add(Resource.newResource(jwsDirs[i].getAbsolutePath()));
+ } catch (IOException ex) {
+ throw new ServerException(ex);
+ }
}
- enableJWS = true;
- } else {
- enableJWS = false;
}
- Server server = new Server(port);
+ server = new Server(port);
server.setGracefulShutdown(1000);
Context context = new Context(server, "/axis");
context.setBaseResource(new
ResourceCollection((Resource[])resources.toArray(new
Resource[resources.size()])));
@@ -131,7 +114,7 @@ public class StandaloneAxisServer {
sessionManager = new LimitSessionManager(maxSessions);
}
context.setSessionHandler(new SessionHandler(sessionManager));
- QuitListener quitListener = new QuitListener();
+ quitListener = new QuitListener();
context.setAttribute(QuitHandler.QUIT_LISTENER, quitListener);
ServletHandler servletHandler = context.getServletHandler();
ServletHolder axisServletHolder = new ServletHolder(servlet);
@@ -149,18 +132,31 @@ public class StandaloneAxisServer {
mapping.setPathSpec("/servlet/AxisServlet");
servletHandler.addServletMapping(mapping);
}
- if (enableJWS) {
+ if (jwsDirs != null && jwsDirs.length > 0) {
ServletMapping mapping = new ServletMapping();
mapping.setServletName("AxisServlet");
mapping.setPathSpec("*.jws");
servletHandler.addServletMapping(mapping);
}
- server.start();
+ }
+
+ public void start() throws ServerException {
+ try {
+ server.start();
+ } catch (Exception ex) {
+ throw new ServerException(ex);
+ }
+ }
+
+ public void awaitQuitRequest() throws InterruptedException {
+ quitListener.awaitQuitRequest();
+ }
+
+ public void stop() throws ServerException {
try {
- quitListener.awaitQuitRequest();
- } catch (InterruptedException ex) {
- // Just continue and stop the server
+ server.stop();
+ } catch (Exception ex) {
+ throw new ServerException(ex);
}
- server.stop();
}
}
Modified:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServlet.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServlet.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServlet.java
(original)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/StandaloneAxisServlet.java
Tue Dec 11 17:26:34 2012
@@ -37,7 +37,7 @@ import org.apache.axis.utils.XMLUtils;
*
* @author Andreas Veithen
*/
-public class StandaloneAxisServlet extends AxisServlet {
+final class StandaloneAxisServlet extends AxisServlet {
private final List/*<URL>*/ wsddUrls;
public StandaloneAxisServlet() {
Added:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Configurator.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Configurator.java?rev=1420298&view=auto
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Configurator.java
(added)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Configurator.java
Tue Dec 11 17:26:34 2012
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.server.standalone.cli;
+
+import java.io.File;
+import java.io.PrintWriter;
+
+import org.apache.axis.server.standalone.StandaloneAxisServer;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.GnuParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+
+public final class Configurator {
+ public static final Configurator INSTANCE = new Configurator();
+
+ private final Options options;
+
+ private Configurator() {
+ options = new Options();
+
+ {
+ Option option = new Option("p", true, "the HTTP port");
+ option.setArgName("port");
+ option.setRequired(true);
+ options.addOption(option);
+ }
+
+ {
+ Option option = new Option("w", true, "the work directory");
+ option.setArgName("dir");
+ option.setRequired(true);
+ options.addOption(option);
+ }
+
+ {
+ Option option = new Option("j", true, "a list of directories to
look up JWS files from");
+ option.setArgName("dirs");
+ options.addOption(option);
+ }
+
+ {
+ Option option = new Option("m", true, "the maximum number of
concurrently active sessions");
+ option.setArgName("count");
+ options.addOption(option);
+ }
+ }
+
+ public void printHelp(PrintWriter pw, String app) {
+ HelpFormatter formatter = new HelpFormatter();
+ formatter.printUsage(pw, 100, app, options);
+ formatter.printOptions(pw, 100, options, 1, 2);
+ pw.flush();
+ }
+
+ public void configure(StandaloneAxisServer server, String[] args) throws
ConfiguratorException {
+ CommandLineParser parser = new GnuParser();
+ CommandLine cmdLine;
+ try {
+ cmdLine = parser.parse(options, args);
+ } catch (ParseException ex) {
+ throw new ConfiguratorException(ex.getMessage());
+ }
+
+ server.setPort(Integer.parseInt(cmdLine.getOptionValue("p")));
+ server.setWorkDir(new File(cmdLine.getOptionValue("w")));
+ if (cmdLine.hasOption("m")) {
+
server.setMaxSessions(Integer.parseInt(cmdLine.getOptionValue("m")));
+ }
+ if (cmdLine.hasOption("j")) {
+ String[] jwsDirStrings =
cmdLine.getOptionValue("j").split(File.pathSeparator);
+ File[] jwsDirs = new File[jwsDirStrings.length];
+ for (int i=0; i<jwsDirStrings.length; i++) {
+ jwsDirs[i] = new File(jwsDirStrings[i]);
+ }
+ server.setJwsDirs(jwsDirs);
+ }
+ }
+}
Propchange:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Configurator.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/ConfiguratorException.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/ConfiguratorException.java?rev=1420298&view=auto
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/ConfiguratorException.java
(added)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/ConfiguratorException.java
Tue Dec 11 17:26:34 2012
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.server.standalone.cli;
+
+public class ConfiguratorException extends Exception {
+ private static final long serialVersionUID = 664045878448812254L;
+
+ public ConfiguratorException(Throwable cause) {
+ super(cause);
+ }
+
+ public ConfiguratorException(String message) {
+ super(message);
+ }
+}
Propchange:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/ConfiguratorException.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Main.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Main.java?rev=1420298&view=auto
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Main.java
(added)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Main.java
Tue Dec 11 17:26:34 2012
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.server.standalone.cli;
+
+import java.io.PrintWriter;
+
+import org.apache.axis.server.standalone.ServerException;
+import org.apache.axis.server.standalone.StandaloneAxisServer;
+
+/**
+ * Main class to run the stand-alone server from the command line.
+ *
+ * @author Andreas Veithen
+ */
+public class Main {
+ public static void main(String[] args) {
+ StandaloneAxisServer server = new StandaloneAxisServer();
+
+ if (args.length == 0) {
+ Configurator.INSTANCE.printHelp(new PrintWriter(System.out),
Main.class.getName());
+ return;
+ }
+
+ try {
+ Configurator.INSTANCE.configure(server, args);
+ } catch (ConfiguratorException ex) {
+ System.err.println(ex.getMessage());
+ System.exit(1);
+ return; // Make compiler happy
+ }
+
+ try {
+ server.init();
+ server.start();
+ try {
+ server.awaitQuitRequest();
+ } catch (InterruptedException ex) {
+ // Just continue and stop the server
+ }
+ server.stop();
+ } catch (ServerException ex) {
+ ex.printStackTrace();
+ System.exit(1);
+ }
+ }
+}
Propchange:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/cli/Main.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/AxisServerDaemon.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/AxisServerDaemon.java?rev=1420298&view=auto
==============================================================================
---
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/AxisServerDaemon.java
(added)
+++
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/AxisServerDaemon.java
Tue Dec 11 17:26:34 2012
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis.server.standalone.daemon;
+
+import org.apache.axis.server.standalone.StandaloneAxisServer;
+import org.apache.axis.server.standalone.cli.Configurator;
+import org.apache.commons.daemon.Daemon;
+import org.apache.commons.daemon.DaemonContext;
+import org.apache.commons.daemon.DaemonInitException;
+
+/**
+ * {@link Daemon} implementation that runs the stand-alone Axis server.
+ *
+ * @author Andreas Veithen
+ */
+public class AxisServerDaemon implements Daemon {
+ private StandaloneAxisServer server;
+
+ public void init(DaemonContext context) throws DaemonInitException,
Exception {
+ server = new StandaloneAxisServer();
+ Configurator.INSTANCE.configure(server, context.getArguments());
+ server.init();
+ }
+
+ public void start() throws Exception {
+ server.start();
+ }
+
+ public void stop() throws Exception {
+ server.stop();
+ }
+
+ public void destroy() {
+ server = null;
+ }
+}
Propchange:
axis/axis1/java/trunk/axis-standalone-server/src/main/java/org/apache/axis/server/standalone/daemon/AxisServerDaemon.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: axis/axis1/java/trunk/distribution/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/distribution/pom.xml?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
--- axis/axis1/java/trunk/distribution/pom.xml (original)
+++ axis/axis1/java/trunk/distribution/pom.xml Tue Dec 11 17:26:34 2012
@@ -48,6 +48,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>axis-standalone-server</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
Modified: axis/axis1/java/trunk/maven/maven-axis-server-plugin/pom.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/pom.xml?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
--- axis/axis1/java/trunk/maven/maven-axis-server-plugin/pom.xml (original)
+++ axis/axis1/java/trunk/maven/maven-axis-server-plugin/pom.xml Tue Dec 11
17:26:34 2012
@@ -41,10 +41,6 @@
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
- <artifactId>axis-rt-core</artifactId>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
<artifactId>axis-model</artifactId>
<version>${project.version}</version>
</dependency>
Copied:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractDaemonControlMojo.java
(from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractServerMojo.java)
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractDaemonControlMojo.java?p2=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractDaemonControlMojo.java&p1=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractServerMojo.java&r1=1419001&r2=1420298&rev=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractServerMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractDaemonControlMojo.java
Tue Dec 11 17:26:34 2012
@@ -24,7 +24,7 @@ import org.apache.maven.plugin.MojoFailu
import com.github.veithen.ulog.PlexusLoggerInjector;
-public abstract class AbstractServerMojo extends AbstractMojo {
+public abstract class AbstractDaemonControlMojo extends AbstractMojo {
/**
* @component
*/
@@ -35,7 +35,7 @@ public abstract class AbstractServerMojo
/**
* @component
*/
- private ProcessManager processManager;
+ private DaemonManager daemonManager;
/**
* Set this to <code>true</code> to skip running tests, but still compile
them. This is the same
@@ -45,8 +45,8 @@ public abstract class AbstractServerMojo
*/
private boolean skipTests;
- public ProcessManager getProcessManager() {
- return processManager;
+ public final DaemonManager getDaemonManager() {
+ return daemonManager;
}
public final void execute() throws MojoExecutionException,
MojoFailureException {
Copied:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartDaemonMojo.java
(from r1419166,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartProcessMojo.java)
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartDaemonMojo.java?p2=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartDaemonMojo.java&p1=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartProcessMojo.java&r1=1419166&r2=1420298&rev=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartProcessMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/AbstractStartDaemonMojo.java
Tue Dec 11 17:26:34 2012
@@ -19,6 +19,8 @@
package org.apache.axis.tools.maven.server;
import java.io.File;
+import java.io.IOException;
+import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -51,7 +53,7 @@ import org.codehaus.plexus.logging.LogEn
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
-public abstract class AbstractStartProcessMojo extends AbstractServerMojo
implements LogEnabled {
+public abstract class AbstractStartDaemonMojo extends
AbstractDaemonControlMojo implements LogEnabled {
/**
* The maven project.
*
@@ -171,14 +173,10 @@ public abstract class AbstractStartProce
private Logger logger;
- public void enableLogging(Logger logger) {
+ public final void enableLogging(Logger logger) {
this.logger = logger;
}
- protected boolean isDebug() {
- return debug;
- }
-
protected final void addDependency(String groupId, String artifactId,
String version) {
additionalDependencies.add(artifactFactory.createArtifact(groupId,
artifactId, version, Artifact.SCOPE_TEST, "jar"));
classpath = null;
@@ -244,7 +242,18 @@ public abstract class AbstractStartProce
return classpath;
}
- protected final void startJavaProcess(String description, String
mainClass, String[] args, File workDir, ProcessControl processControl) throws
MojoExecutionException, MojoFailureException {
+ private int allocatePort() throws MojoFailureException {
+ try {
+ ServerSocket ss = new ServerSocket(0);
+ int port = ss.getLocalPort();
+ ss.close();
+ return port;
+ } catch (IOException ex) {
+ throw new MojoFailureException("Failed to allocate port number",
ex);
+ }
+ }
+
+ protected final void startDaemon(String description, String daemonClass,
String[] args, File workDir) throws MojoExecutionException,
MojoFailureException {
Log log = getLog();
// Locate java executable to use
@@ -259,6 +268,8 @@ public abstract class AbstractStartProce
log.debug("Java executable: " + jvm);
}
+ int controlPort = allocatePort();
+
// Get class path
List classpath;
try {
@@ -290,14 +301,16 @@ public abstract class AbstractStartProce
cmdline.add("-cp");
cmdline.add(StringUtils.join(classpath.iterator(),
File.pathSeparator));
cmdline.addAll(vmArgs);
- cmdline.add(mainClass);
+ cmdline.add("org.apache.axis.tools.daemon.Launcher");
+ cmdline.add(daemonClass);
+ cmdline.add(String.valueOf(controlPort));
cmdline.addAll(Arrays.asList(args));
try {
- getProcessManager().startProcess(
+ getDaemonManager().startDaemon(
description,
(String[])cmdline.toArray(new String[cmdline.size()]),
workDir,
- processControl);
+ controlPort);
} catch (Exception ex) {
throw new MojoFailureException("Failed to start server", ex);
}
@@ -306,4 +319,11 @@ public abstract class AbstractStartProce
private static void processVMArgs(List vmArgs, String args) {
vmArgs.addAll(Arrays.asList(args.split(" ")));
}
+
+ protected final void doExecute() throws MojoExecutionException,
MojoFailureException {
+ addAxisDependency("daemon-launcher");
+ doStartDaemon();
+ }
+
+ protected abstract void doStartDaemon() throws MojoExecutionException,
MojoFailureException;
}
Copied:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DaemonManager.java
(from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ProcessManager.java)
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DaemonManager.java?p2=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DaemonManager.java&p1=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ProcessManager.java&r1=1419001&r2=1420298&rev=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ProcessManager.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DaemonManager.java
Tue Dec 11 17:26:34 2012
@@ -20,7 +20,7 @@ package org.apache.axis.tools.maven.serv
import java.io.File;
-public interface ProcessManager {
- void startProcess(String description, String[] cmdline, File workDir,
ProcessControl processControl) throws Exception;
+public interface DaemonManager {
+ void startDaemon(String description, String[] cmdline, File workDir, int
controlPort) throws Exception;
void stopAll() throws Exception;
}
Copied:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultDaemonManager.java
(from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultProcessManager.java)
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultDaemonManager.java?p2=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultDaemonManager.java&p1=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultProcessManager.java&r1=1419001&r2=1420298&rev=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultProcessManager.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/DefaultDaemonManager.java
Tue Dec 11 17:26:34 2012
@@ -27,8 +27,8 @@ import java.util.List;
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger;
-public class DefaultProcessManager implements ProcessManager, LogEnabled {
- private final List managedProcesses = new ArrayList();
+public class DefaultDaemonManager implements DaemonManager, LogEnabled {
+ private final List daemons = new ArrayList();
private Logger logger;
@@ -36,44 +36,48 @@ public class DefaultProcessManager imple
this.logger = logger;
}
- public void startProcess(String description, String[] cmdline, File
workDir, ProcessControl processControl) throws Exception {
+ public void startDaemon(String description, String[] cmdline, File
workDir, int controlPort) throws Exception {
if (logger.isDebugEnabled()) {
logger.debug("Starting process with command line: " +
Arrays.asList(cmdline));
}
Process process = Runtime.getRuntime().exec(cmdline, null, workDir);
- managedProcesses.add(new ManagedProcess(process, description,
processControl));
+ RemoteDaemon daemon = new RemoteDaemon(process, description,
controlPort);
+ daemons.add(daemon);
new Thread(new StreamPump(process.getInputStream(),
System.out)).start();
new Thread(new StreamPump(process.getErrorStream(),
System.err)).start();
- processControl.initializeProcess(logger, process);
+ daemon.startDaemon(logger);
}
public void stopAll() throws Exception {
Exception savedException = null;
- for (Iterator it = managedProcesses.iterator(); it.hasNext(); ) {
- ManagedProcess managedProcess = (ManagedProcess)it.next();
- int result;
- logger.debug("Executing stop action");
+ for (Iterator it = daemons.iterator(); it.hasNext(); ) {
+ RemoteDaemon daemon = (RemoteDaemon)it.next();
+ if (logger.isDebugEnabled()) {
+ logger.debug("Stopping " + daemon.getDescription());
+ }
+ boolean success;
try {
- result =
managedProcess.getProcessControl().shutdownProcess(logger);
+ daemon.stopDaemon(logger);
+ success = true;
} catch (Exception ex) {
if (savedException == null) {
savedException = ex;
}
- result = -1;
+ success = false;
}
if (logger.isDebugEnabled()) {
- logger.debug("result = " + result);
+ logger.debug("success = " + success);
}
- if (result == ProcessControl.STOPPING) {
- managedProcess.getProcess().waitFor();
+ if (success) {
+ daemon.getProcess().waitFor();
} else {
- managedProcess.getProcess().destroy();
+ daemon.getProcess().destroy();
}
- logger.info(managedProcess.getDescription() + " stopped");
+ logger.info(daemon.getDescription() + " stopped");
}
// TODO: need to clear the collection because the same ServerManager
instance may be used by multiple projects in a reactor build;
// note that this means that the plugin is not thread safe (i.e.
doesn't support parallel builds in Maven 3)
- managedProcesses.clear();
+ daemons.clear();
if (savedException != null) {
throw savedException;
}
Copied:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/RemoteDaemon.java
(from r1419001,
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ManagedProcess.java)
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/RemoteDaemon.java?p2=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/RemoteDaemon.java&p1=axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ManagedProcess.java&r1=1419001&r2=1420298&rev=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/ManagedProcess.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/RemoteDaemon.java
Tue Dec 11 17:26:34 2012
@@ -18,15 +18,27 @@
*/
package org.apache.axis.tools.maven.server;
-public class ManagedProcess {
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.InetAddress;
+import java.net.Socket;
+
+import org.codehaus.plexus.logging.Logger;
+
+public class RemoteDaemon {
private final Process process;
private final String description;
- private final ProcessControl processControl;
+ private final int controlPort;
+ private BufferedReader controlIn;
+ private Writer controlOut;
- public ManagedProcess(Process process, String description, ProcessControl
processControl) {
+ public RemoteDaemon(Process process, String description, int controlPort) {
this.process = process;
this.description = description;
- this.processControl = processControl;
+ this.controlPort = controlPort;
}
public Process getProcess() {
@@ -37,7 +49,43 @@ public class ManagedProcess {
return description;
}
- public ProcessControl getProcessControl() {
- return processControl;
+ public void startDaemon(Logger logger) throws Exception {
+ logger.debug("Attempting to establish control connection on port " +
controlPort);
+ Socket controlSocket;
+ while (true) {
+ try {
+ controlSocket = new Socket(InetAddress.getByName("localhost"),
controlPort);
+ break;
+ } catch (IOException ex) {
+ try {
+ int exitValue = process.exitValue();
+ throw new IllegalStateException("Process terminated
prematurely with exit code " + exitValue);
+ } catch (IllegalThreadStateException ex2) {
+ // Process is still running; continue
+ }
+ Thread.sleep(100);
+ }
+ }
+ logger.debug("Control connection established");
+ controlIn = new BufferedReader(new
InputStreamReader(controlSocket.getInputStream(), "ASCII"));
+ controlOut = new OutputStreamWriter(controlSocket.getOutputStream(),
"ASCII");
+ logger.debug("Waiting for daemon to become ready");
+ expectStatus("READY");
+ logger.debug("Daemon is ready");
+ }
+
+ public void stopDaemon(Logger logger) throws Exception {
+ controlOut.write("STOP\r\n");
+ controlOut.flush();
+ expectStatus("STOPPED");
+ }
+
+ private void expectStatus(String expectedStatus) throws IOException {
+ String status = controlIn.readLine();
+ if (status == null) {
+ throw new IllegalStateException("Control connection unexpectedly
closed");
+ } else if (!status.equals(expectedStatus)) {
+ throw new IllegalStateException("Unexpected status: " + status);
+ }
}
}
Modified:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartDaemonMojo.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartDaemonMojo.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartDaemonMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartDaemonMojo.java
Tue Dec 11 17:26:34 2012
@@ -19,8 +19,6 @@
package org.apache.axis.tools.maven.server;
import java.io.File;
-import java.io.IOException;
-import java.net.ServerSocket;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -32,7 +30,7 @@ import org.apache.maven.plugin.MojoFailu
* @phase pre-integration-test
* @requiresDependencyResolution test
*/
-public class StartDaemonMojo extends AbstractStartProcessMojo {
+public class StartDaemonMojo extends AbstractStartDaemonMojo {
/**
* The daemon class.
*
@@ -56,23 +54,8 @@ public class StartDaemonMojo extends Abs
*/
private File workDir;
- protected void doExecute() throws MojoExecutionException,
MojoFailureException {
- int controlPort;
- try {
- ServerSocket ss = new ServerSocket(0);
- controlPort = ss.getLocalPort();
- ss.close();
- } catch (IOException ex) {
- throw new MojoFailureException("Failed to allocate port number",
ex);
- }
+ protected void doStartDaemon() throws MojoExecutionException,
MojoFailureException {
workDir.mkdirs();
- String[] vmArgs = new String[args != null ? args.length + 2 : 2];
- vmArgs[0] = daemonClass;
- vmArgs[1] = String.valueOf(controlPort);
- if (args != null) {
- System.arraycopy(args, 0, vmArgs, 2, args.length);
- }
- addAxisDependency("daemon-launcher");
- startJavaProcess(daemonClass, "org.apache.axis.tools.daemon.Launcher",
vmArgs, workDir, new DaemonProcessControl(controlPort));
+ startDaemon(daemonClass, daemonClass, args, workDir);
}
}
Modified:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartServerMojo.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartServerMojo.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartServerMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StartServerMojo.java
Tue Dec 11 17:26:34 2012
@@ -27,7 +27,6 @@ import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
-import org.apache.axis.client.AdminClient;
import org.apache.axis.model.wsdd.Deployment;
import org.apache.axis.model.wsdd.WSDDUtil;
import org.apache.maven.plugin.MojoExecutionException;
@@ -46,7 +45,7 @@ import org.xml.sax.InputSource;
* @phase pre-integration-test
* @requiresDependencyResolution test
*/
-public class StartServerMojo extends AbstractStartProcessMojo {
+public class StartServerMojo extends AbstractStartDaemonMojo {
/**
* @parameter default-value="${project.build.directory}/axis-server"
* @required
@@ -114,7 +113,7 @@ public class StartServerMojo extends Abs
*/
private int foregroundPort = -1;
- protected void doExecute() throws MojoExecutionException,
MojoFailureException {
+ protected void doStartDaemon() throws MojoExecutionException,
MojoFailureException {
Log log = getLog();
// Need to setup additional dependencies before building the default
configuration!
@@ -209,15 +208,11 @@ public class StartServerMojo extends Abs
args.add("-m");
args.add(String.valueOf(maxSessions));
try {
- AdminClient adminClient = new AdminClient(true);
- adminClient.setTargetEndpointAddress(new URL("http://localhost:" +
actualPort + "/axis/services/AdminService"));
- startJavaProcess(
+ startDaemon(
"Server on port " + actualPort,
- "org.apache.axis.server.standalone.StandaloneAxisServer",
+
"org.apache.axis.server.standalone.daemon.AxisServerDaemon",
(String[])args.toArray(new String[args.size()]),
- workDir,
- new AxisServerProcessControl(actualPort, adminClient,
- isDebug() || foreground ? Integer.MAX_VALUE :
20000));
+ workDir);
} catch (Exception ex) {
throw new MojoFailureException("Failed to start server", ex);
}
Modified:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StopAllMojo.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StopAllMojo.java?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StopAllMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/java/org/apache/axis/tools/maven/server/StopAllMojo.java
Tue Dec 11 17:26:34 2012
@@ -27,10 +27,10 @@ import org.apache.maven.plugin.MojoFailu
* @goal stop-all
* @phase post-integration-test
*/
-public class StopAllMojo extends AbstractServerMojo {
+public class StopAllMojo extends AbstractDaemonControlMojo {
protected void doExecute() throws MojoExecutionException,
MojoFailureException {
try {
- getProcessManager().stopAll();
+ getDaemonManager().stopAll();
} catch (Exception ex) {
throw new MojoFailureException("Errors occurred while attempting
to stop processes", ex);
}
Modified:
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/resources/META-INF/plexus/components.xml
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/resources/META-INF/plexus/components.xml?rev=1420298&r1=1420297&r2=1420298&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/resources/META-INF/plexus/components.xml
(original)
+++
axis/axis1/java/trunk/maven/maven-axis-server-plugin/src/main/resources/META-INF/plexus/components.xml
Tue Dec 11 17:26:34 2012
@@ -20,8 +20,8 @@
<component-set>
<components>
<component>
- <role>org.apache.axis.tools.maven.server.ProcessManager</role>
-
<implementation>org.apache.axis.tools.maven.server.DefaultProcessManager</implementation>
+ <role>org.apache.axis.tools.maven.server.DaemonManager</role>
+
<implementation>org.apache.axis.tools.maven.server.DefaultDaemonManager</implementation>
</component>
</components>
</component-set>
\ No newline at end of file