Author: jfrederic.clere(a)jboss.com
Date: 2011-05-02 13:40:04 -0400 (Mon, 02 May 2011)
New Revision: 2760
Added:
trunk/build/unix/util/jbossweb/
trunk/build/unix/util/jbossweb/build.properties.default
trunk/build/unix/util/jbossweb/build.xml
trunk/build/unix/util/jbossweb/org/
trunk/build/unix/util/jbossweb/org/jboss/
trunk/build/unix/util/jbossweb/org/jboss/test/
trunk/build/unix/util/jbossweb/org/jboss/test/ControlJBossWeb.java
trunk/build/unix/util/jbossweb/org/jboss/test/JBossWeb.java
trunk/build/unix/util/jbossweb/org/jboss/test/ProcJBossWeb.java
trunk/build/unix/util/jbossweb/org/jboss/test/ServerThread.java
trunk/build/unix/util/jbossweb/org/jboss/test/StartJBossWeb.java
Log:
Logoc from mod_cluster to test jbossnative....
Added: trunk/build/unix/util/jbossweb/build.properties.default
===================================================================
--- trunk/build/unix/util/jbossweb/build.properties.default (rev
0)
+++ trunk/build/unix/util/jbossweb/build.properties.default 2011-05-02 17:40:04 UTC (rev
2760)
@@ -0,0 +1,22 @@
+base.path=${user.home}/java
+base-apache.loc=http://archive.apache.org/dist/
+
+commons-logging.loc=${base-apache.loc}/commons/logging/binaries/commons-logging-1.0.4.tar.gz
+commons-logging.jar=${base.path}/commons-logging-1.0.4/commons-logging.jar
+
+# Location of jbossweb jar files.
+base-jbossweb.loc=http://repository.jboss.org/nexus/content/groups/public-jboss/jboss/web/
+jbossweb.version=2.1.11.GA
+
+jbossweb.jar.loc=${base-jbossweb.loc}/jbossweb/${jbossweb.version}/jbossweb-${jbossweb.version}.jar
+jbossweb.jar=${base.path}/${jbossweb.version}/jbossweb-${jbossweb.version}.jar
+
+servlet-api.jar.loc=${base-jbossweb.loc}/servlet-api/${jbossweb.version}/servlet-api-${jbossweb.version}.jar
+servlet-api.jar=${base.path}/${jbossweb.version}/servlet-api-${jbossweb.version}.jar
+
+jboss-logging.version=2.0.3.GA
+base-jboss-logging.home=${base.path}/${jboss-logging.version}/lib
+jboss-logging.jar.loc=${base-jboss.loc}/jboss-logging-spi/${jboss-logging.version}/jboss-logging-spi-${jboss-logging.version}.jar
+jboss-logging.jar=${base.path}/${jboss-logging.version}/jboss-logging-spi-${jboss-logging.version}.jar
+
+base-jbossweb.home=${base.path}/${jbossweb.version}/lib
Added: trunk/build/unix/util/jbossweb/build.xml
===================================================================
--- trunk/build/unix/util/jbossweb/build.xml (rev 0)
+++ trunk/build/unix/util/jbossweb/build.xml 2011-05-02 17:40:04 UTC (rev 2760)
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<!--
+ * Copyright(c) 2011 Red Hat Middleware, LLC,
+ * and individual contributors as indicated by the @authors tag.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * @author Jean-Frederic Clere
+ * @version $Revision$
+-->
+<project name="jbosswebtests" default="all"
basedir=".">
+
+ <!-- See "build.properties.sample" in the top level directory for all
-->
+ <!-- property values you must customize for successful building!!! -->
+ <property file="${user.home}/build.properties"/>
+ <property file="build.properties"/>
+
+ <property file="build.properties.default"/>
+
+ <property name="test.classes"
value="${basedir}/output/classes"/>
+
+ <path id="jbossweb.test.classpath">
+ <pathelement location="${test.classes}"/>
+ <pathelement location="${commons-logging.jar}"/>
+
+ <pathelement location="${jbossweb.jar}"/>
+ <pathelement location="${servlet-api.jar}"/>
+ </path>
+
+ <property name="compile.source" value="1.5"/>
+
+ <target name="all" depends="compile">
+ <antcall target="startjbossweb">
+ <param name="line" value="8009 node1 dom1 8005"/>
+ </antcall>
+ </target>
+
+ <target name="startjbossweb" depends="compile">
+ <java dir="${test.classes}"
classname="org.jboss.test.StartJBossWeb"
+ spawn="true" fork="yes">
+ <arg line="${line}"/>
+ <jvmarg line="-Dcluster=${cluster}"/>
+ <classpath refid="jbossweb.test.classpath"/>
+ </java>
+ <echo message="startjbossweb ${line}"/>
+ <echo message="startjbossweb ${test.classes}"/>
+ <echo message="startjbossweb ${jbossweb.jar}"/>
+ <echo message="startjbossweb ${servlet-api.jar}"/>
+ <echo message="startjbossweb ${commons-logging.jar}"/>
+ <echo message="startjbossweb ${jboss-logging.jar}"/>
+ </target>
+
+ <target name="compile" depends="download">
+ <mkdir dir="${test.classes}"/>
+ <mkdir dir="${test.classes}/conf"/>
+
+ <javac srcdir="." destdir="${test.classes}"
+ debug="on" debuglevel="lines,vars,source"
+ deprecation="${compile.deprecation}"
+ source="${compile.source}"
+ optimize="${compile.optimize}">
+ <classpath refid="jbossweb.test.classpath" />
+ <include name="org/jboss/test/**" />
+ </javac>
+ </target>
+
+ <target name="download" description="Builds and download dependent
components">
+ <antcall target="downloadfile">
+ <param name="sourcefile"
value="${servlet-api.jar.loc}"/>
+ <param name="destfile"
value="${servlet-api.jar}"/>
+ <param name="destdir"
value="${base-jbossweb.home}"/>
+ </antcall>
+ <antcall target="downloadfile">
+ <param name="sourcefile"
value="${jbossweb.jar.loc}"/>
+ <param name="destfile" value="${jbossweb.jar}"/>
+ <param name="destdir"
value="${base-jbossweb.home}"/>
+ </antcall>
+ </target>
+
+ <target name="downloadfile" unless="exist"
depends="testexist">
+ <mkdir dir="${destdir}" />
+ <get src="${sourcefile}" dest="${destfile}" />
+ </target>
+
+ <target name="testexist">
+ <echo message="Testing for ${destfile}"/>
+ <available file="${destfile}" property="exist"/>
+ </target>
+</project>
Added: trunk/build/unix/util/jbossweb/org/jboss/test/ControlJBossWeb.java
===================================================================
--- trunk/build/unix/util/jbossweb/org/jboss/test/ControlJBossWeb.java
(rev 0)
+++ trunk/build/unix/util/jbossweb/org/jboss/test/ControlJBossWeb.java 2011-05-02 17:40:04
UTC (rev 2760)
@@ -0,0 +1,134 @@
+/*
+ * mod_cluster
+ *
+ * Copyright(c) 2009 Red Hat Middleware, LLC,
+ * and individual contributors as indicated by the @authors tag.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * @author Jean-Frederic Clere
+ * @version $Revision$
+ */
+
+package org.jboss.test;
+
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+/*
+ * It controls are JBossWeb running via the stdin/stdout.
+ */
+public class ControlJBossWeb {
+
+ private BufferedReader bufferedreader;
+ private PrintStream out;
+
+ public ControlJBossWeb() throws Exception {
+ Runtime runtime = Runtime.getRuntime();
+ String classpath = System.getProperty("java.class.path");
+ Process proc = runtime.exec("java -cp " + classpath + "
org.jboss.mod_cluster.ProcJBossWeb");
+ InputStreamReader input = new InputStreamReader(proc.getInputStream());
+ bufferedreader = new BufferedReader(input);
+ out = new PrintStream(proc.getOutputStream());
+ }
+ private boolean isResponseOK() {
+ try {
+ String line;
+ while ((line = bufferedreader.readLine()) != null) {
+ if (line.compareToIgnoreCase("OK") == 0)
+ return true;
+ if (line.startsWith("FAILED")) {
+ System.out.println(line);
+ while ((line = bufferedreader.readLine()) != null) {
+ System.out.println(line);
+ }
+ return false;
+ }
+ System.out.println(line);
+ }
+ } catch (IOException ex) {
+ return false;
+ }
+ return false;
+ }
+ public void stop() throws IOException {
+ out.println("stop");
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public void start() throws IOException {
+ out.println("start");
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public void exit() throws IOException {
+ out.println("exit");
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public void newJBossWeb(String node, String host) throws IOException {
+ out.println("new " + node + " " + host);
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public void addConnector(int port) throws IOException {
+ out.println("addConnector " + port);
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public void addService() throws IOException {
+ out.println("addService");
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public void addLifecycleListener(String ip, int port) throws IOException {
+ out.println("addLifecycleListener " + ip + " " + port);
+ out.flush();
+ if (!isResponseOK())
+ throw new IOException("response is not OK");
+ }
+ public String getProxyInfo() throws IOException {
+ out.println("getProxyInfo");
+ out.flush();
+ String line = bufferedreader.readLine();
+ int l;
+ if (line.startsWith("FAILED")) {
+ l = 1024; /* Enough ? */
+ } else {
+ l = Integer.parseInt(line);
+ }
+ String result = "";
+ while ((line = bufferedreader.readLine()) != null && result.length() <
(l-2)) {
+ result = result.concat(line);
+ result = result.concat("\n");
+ }
+ if (l == 0)
+ return null;
+ return result;
+ }
+}
Added: trunk/build/unix/util/jbossweb/org/jboss/test/JBossWeb.java
===================================================================
--- trunk/build/unix/util/jbossweb/org/jboss/test/JBossWeb.java
(rev 0)
+++ trunk/build/unix/util/jbossweb/org/jboss/test/JBossWeb.java 2011-05-02 17:40:04 UTC
(rev 2760)
@@ -0,0 +1,270 @@
+/*
+ * mod_cluster
+ *
+ * Copyright(c) 2008 Red Hat Middleware, LLC,
+ * and individual contributors as indicated by the @authors tag.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * @author Jean-Frederic Clere
+ * @version $Revision$
+ */
+
+package org.jboss.test;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import org.apache.catalina.startup.Embedded;
+import org.apache.catalina.Engine;
+import org.apache.catalina.Host;
+import org.apache.catalina.Context;
+import org.apache.catalina.*;
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.*;
+import org.apache.catalina.startup.HostConfig;
+
+import org.apache.catalina.LifecycleListener;
+
+public class JBossWeb extends Embedded {
+
+ private String route = null;
+
+ private void copyFile(File in, File out) throws IOException {
+ FileInputStream fis = new FileInputStream(in);
+ FileOutputStream fos = new FileOutputStream(out);
+ byte[] buf = new byte[1024];
+ int i = 0;
+ while((i=fis.read(buf))!=-1) {
+ fos.write(buf, 0, i);
+ }
+ fis.close();
+ fos.close();
+ }
+
+ private static void copyFiles(File src, File dest) throws IOException {
+ if (src.isDirectory()) {
+ if (!dest.exists())
+ dest.mkdirs();
+
+ String list[] = src.list();
+ for (int i = 0; i < list.length; i++) {
+ File dest1 = new File(dest, list[i]);
+ File src1 = new File(src, list[i]);
+ copyFiles(src1 , dest1);
+ }
+ } else {
+ //This was not a directory, so lets just copy the file
+ FileInputStream fin = null;
+ FileOutputStream fout = null;
+ byte[] buffer = new byte[4096]; //Buffer 4K at a time (you can change this).
+ int bytesRead;
+ //open the files for input and output
+ fin = new FileInputStream(src);
+ fout = new FileOutputStream (dest);
+ //while bytesRead indicates a successful read, lets write...
+ while ((bytesRead = fin.read(buffer)) >= 0) {
+ fout.write(buffer,0,bytesRead);
+ }
+ fout.close();
+ fin.close();
+ }
+ }
+ private void copyNativeDir(String route) throws IOException {
+ File in = new File("bin/");
+ if (!in.exists()) {
+ return;
+ }
+ File ou = new File("node1/bin");
+ if (!ou.exists()) {
+ ou.mkdirs();
+ }
+ copyFiles(in, ou);
+ }
+
+ public JBossWeb(String route, String host, boolean nat, String webapp, String[]
Aliases) throws IOException {
+ // Copy native tree...
+ if (nat) {
+ copyNativeDir(route);
+ }
+
+ setCatalinaBase(route);
+ setCatalinaHome(route);
+ this.route = route;
+
+ //Create an Engine
+ Engine baseEngine = createEngine();
+
+ baseEngine.setName(host + "Engine" + route);
+ baseEngine.setDefaultHost(host);
+ baseEngine.setJvmRoute(route);
+ baseEngine.setRealm(null);
+
+ // Create node1/webapps/ROOT and index.html
+ File fd = new File ( route + "/webapps/" + webapp);
+ fd.mkdirs();
+ String docBase = fd.getAbsolutePath();
+ String appBase = fd.getParent();
+ fd = new File (route + "/webapps/" + webapp, "index.html");
+ FileWriter out = new FileWriter(fd);
+ out.write(route + ":This is a test\n");
+ out.close();
+
+ // Copy a small servlets for testing.
+ fd = new File ( route + "/webapps/" + webapp +
"/WEB-INF/classes");
+ fd.mkdirs();
+ // Session logic tests...
+ fd = new File (route + "/webapps/" + webapp +
"/WEB-INF/classes" , "MyCount.class");
+ File fdin = new File ("MyCount.class");
+ if (!fdin.exists())
+ fdin = new File ("output/classes/MyCount.class");
+ copyFile(fdin, fd);
+ // Simple tests...
+ fd = new File (route + "/webapps/" + webapp +
"/WEB-INF/classes" , "MyTest.class");
+ fdin = new File ("MyTest.class");
+ if (!fdin.exists())
+ fdin = new File ("output/classes/MyTest.class");
+ copyFile(fdin, fd);
+
+ //Create Host
+ Host baseHost = createHost( host, appBase);
+ baseHost.setDeployOnStartup(true);
+ baseHost.setBackgroundProcessorDelay(1);
+ StandardHost stdhost = (StandardHost)baseHost;
+ stdhost.setDeployXML(true);
+ stdhost.setConfigClass("org.apache.catalina.startup.ContextConfig");
+ stdhost.setUnpackWARs(true);
+ if (Aliases != null && Aliases.length>0) {
+ for (int j = 0; j < Aliases.length; j++) {
+ stdhost.addAlias(Aliases[j]);
+ }
+ }
+ HostConfig hostConfig = new HostConfig();
+ stdhost.addLifecycleListener(hostConfig);
+ baseEngine.addChild( baseHost );
+
+ //Create default context
+ Context rootContext;
+ if (webapp.equals("ROOT"))
+ rootContext = createContext("/",docBase );
+ else
+ rootContext = createContext("/" + webapp, docBase );
+ rootContext.setIgnoreAnnotations(true);
+ rootContext.setPrivileged(true);
+ baseHost.addChild( rootContext );
+ addEngine( baseEngine );
+ baseEngine.setService(this);
+ this.setName(host + "Engine" + route);
+ setRedirectStreams(false);
+ }
+ void AddContext(String path, String docBase, String servletname, boolean wait) {
+ File fd = new File ( route + "/webapps/" + docBase);
+ fd.mkdirs();
+ docBase = fd.getAbsolutePath();
+
+ Context context = createContext(path, docBase);
+ context.setIgnoreAnnotations(true);
+ context.setPrivileged(true);
+
+ if (servletname != null) {
+ Wrapper wrapper = context.createWrapper();
+ wrapper.setName(servletname);
+ wrapper.setServletClass(servletname);
+ if (wait) {
+ wrapper.addInitParameter("wait", "10000");
+ wrapper.setLoadOnStartup(1);
+ }
+ context.addChild(wrapper);
+ context.addServletMapping("/" + servletname, servletname);
+ }
+
+
+ Engine engine = (Engine) getContainer();
+ Container[] containers = engine.findChildren();
+ for (int j = 0; j < containers.length; j++) {
+ if (containers[j] instanceof Host) {
+ Host host = (Host) containers[j];
+ host.addChild(context);
+ }
+ }
+ }
+ void AddContext(String path, String docBase) {
+ AddContext(path, docBase, null, false);
+ }
+
+ public JBossWeb(String route, String host) throws IOException {
+ this(route, host, false);
+ }
+ public JBossWeb(String route, String host, boolean nat) throws IOException {
+ this(route, host, nat, "ROOT");
+ }
+ public JBossWeb(String route, String host, String webapp) throws IOException {
+ this(route, host, false, webapp);
+ }
+ public JBossWeb(String route, String host, boolean nat, String webapp) throws
IOException {
+ this(route, host, nat, webapp, null);
+ }
+
+
+ public void addWAR(String file, String route) throws IOException {
+ File fd = new File ( route + "/" + route + "/webapps");
+ fd.mkdirs();
+
+ String sep = System.getProperty("file.separator");
+ String [] paths = file.split(sep);
+
+ fd = new File (route + "/" + route + "/webapps",
paths[paths.length-1]);
+ File fdin = new File (file);
+
+ copyFile(fdin, fd);
+ }
+
+ public Connector addConnector(int port) throws IOException {
+ return addConnector(port, "ajp");
+ }
+
+ public Connector addConnector(int port, String scheme) throws IOException {
+ return addConnector(port, scheme, null);
+ }
+
+ public Connector addConnector(int port, String scheme, String address) throws
IOException {
+
+
+ Connector connector = createConnector( address,
+ port, scheme);
+
+ // Look in StandardService to see why it works ;-)
+ addConnector( connector );
+
+ return connector;
+ }
+ public void removeContext(String path) {
+ Engine engine = (Engine) getContainer();
+ Container[] containers = engine.findChildren();
+ for (int j = 0; j < containers.length; j++) {
+ if (containers[j] instanceof StandardHost) {
+ StandardHost host = (StandardHost) containers[j];
+ Context context = host.map(path);
+ containers[j].removeChild(context);
+ }
+ }
+ }
+}
Added: trunk/build/unix/util/jbossweb/org/jboss/test/ProcJBossWeb.java
===================================================================
--- trunk/build/unix/util/jbossweb/org/jboss/test/ProcJBossWeb.java
(rev 0)
+++ trunk/build/unix/util/jbossweb/org/jboss/test/ProcJBossWeb.java 2011-05-02 17:40:04
UTC (rev 2760)
@@ -0,0 +1,105 @@
+/*
+ * mod_cluster
+ *
+ * Copyright(c) 2009 Red Hat Middleware, LLC,
+ * and individual contributors as indicated by the @authors tag.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * @author Jean-Frederic Clere
+ * @version $Revision$
+ */
+
+package org.jboss.test;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+import org.apache.catalina.startup.Embedded;
+import org.apache.catalina.Engine;
+import org.apache.catalina.Host;
+import org.apache.catalina.Context;
+import org.apache.catalina.*;
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.*;
+import org.apache.catalina.startup.HostConfig;
+
+import org.apache.catalina.LifecycleListener;
+
+public class ProcJBossWeb {
+
+ StandardServer server = null;
+ JBossWeb service = null;
+ LifecycleListener cluster = null;
+
+ static InputStreamReader input;
+ static BufferedReader bufferedreader;
+
+ public static void main(String[] args) {
+ input = new InputStreamReader(System.in);
+ bufferedreader = new BufferedReader(input);
+
+ ProcJBossWeb proc = new ProcJBossWeb();
+ proc.start();
+ }
+ public void start() {
+
+ server = (StandardServer) ServerFactory.getServer();
+
+ ServerThread wait = null;
+ try {
+ String line;
+ while ((line = bufferedreader.readLine()) != null) {
+ /* Process a command line */
+ String cmd[] = line.split(" ");
+ if (cmd[0].compareToIgnoreCase("exit") == 0) {
+ System.out.println("OK");
+ System.out.flush();
+ System.exit(0);
+ } else if (cmd[0].compareToIgnoreCase("new") == 0) {
+ service = new JBossWeb(cmd[1], cmd[2]);
+ } else if (cmd[0].compareToIgnoreCase("addConnector") == 0) {
+ service.addConnector(Integer.parseInt(cmd[1]));
+ } else if (cmd[0].compareToIgnoreCase("addService")== 0) {
+ server.addService(service);
+ } else if (cmd[0].compareToIgnoreCase("start") == 0) {
+ wait = new ServerThread(3000, server);
+ wait.start();
+ } else if (cmd[0].compareToIgnoreCase("stop") == 0) {
+ wait.stopit();
+ wait.join();
+ server.removeService(service);
+ server.removeLifecycleListener(cluster);
+ }
+ /* Done */
+ System.out.println("OK");
+ System.out.flush();
+ }
+ } catch (Exception ex) {
+ System.out.println("FAILED " + ex);
+ ex.printStackTrace(System.out);
+ System.out.flush();
+ System.exit(1);
+ }
+ }
+}
Added: trunk/build/unix/util/jbossweb/org/jboss/test/ServerThread.java
===================================================================
--- trunk/build/unix/util/jbossweb/org/jboss/test/ServerThread.java
(rev 0)
+++ trunk/build/unix/util/jbossweb/org/jboss/test/ServerThread.java 2011-05-02 17:40:04
UTC (rev 2760)
@@ -0,0 +1,76 @@
+/*
+ * mod_cluster
+ *
+ * Copyright(c) 2008 Red Hat Middleware, LLC,
+ * and individual contributors as indicated by the @authors tag.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * @author Jean-Frederic Clere
+ * @version $Revision$
+ */
+
+package org.jboss.test;
+
+import java.io.IOException;
+
+import org.apache.catalina.Engine;
+import org.apache.catalina.ServerFactory;
+import org.apache.catalina.Service;
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.LifecycleException;
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.StandardServer;
+
+public class ServerThread extends Thread {
+ int delay;
+ boolean ok = true;
+ StandardServer server = null;
+ ServerThread thread = null;
+
+ public ServerThread(int delay, StandardServer server) {
+ this.delay = delay;
+ this.server = server;
+ this.thread = this;
+ }
+ public void run() {
+ try {
+ server.init();
+ server.start();
+ while (ok) {
+ Thread.sleep(delay);
+ }
+ // sleep(delay);
+ server.stop();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (LifecycleException ex) {
+ ex.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public void stopit() {
+ ok = false;
+ try {
+ thread.join();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
Added: trunk/build/unix/util/jbossweb/org/jboss/test/StartJBossWeb.java
===================================================================
--- trunk/build/unix/util/jbossweb/org/jboss/test/StartJBossWeb.java
(rev 0)
+++ trunk/build/unix/util/jbossweb/org/jboss/test/StartJBossWeb.java 2011-05-02 17:40:04
UTC (rev 2760)
@@ -0,0 +1,95 @@
+/*
+ * mod_cluster
+ *
+ * Copyright(c) 2008 Red Hat Middleware, LLC,
+ * and individual contributors as indicated by the @authors tag.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library in the file COPYING.LIB;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * @author Jean-Frederic Clere
+ * @version $Revision$
+ */
+
+package org.jboss.test;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import org.apache.catalina.startup.Embedded;
+import org.apache.catalina.Engine;
+import org.apache.catalina.Host;
+import org.apache.catalina.Context;
+import org.apache.catalina.*;
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.*;
+import org.apache.catalina.startup.HostConfig;
+
+import org.apache.catalina.LifecycleListener;
+
+public class StartJBossWeb {
+
+ /* Start a JBossWEB with domain */
+ public static void main(String[] args) {
+
+ StandardServer server = null;
+ JBossWeb service = null;
+ int port = 8009;
+ int serverport = 8005;
+ String node = "node1";
+ String domain = "dom1";
+ if (args.length == 4) {
+ port = Integer.parseInt(args[0]);
+ node = args[1];
+ domain = args[2];
+ serverport = Integer.parseInt(args[3]);
+ }
+ System.out.println("Starting JBossWEB on " + port + " " +
node + " " + domain + " " + serverport);
+
+ try {
+ server = (StandardServer) ServerFactory.getServer();
+ server.setPort(serverport);
+
+ service = new JBossWeb(node, "localhost");
+ service.addConnector(port);
+ server.addService(service);
+
+ server.start();
+
+ } catch(IOException ex) {
+ ex.printStackTrace();
+ } catch (LifecycleException ex) {
+ ex.printStackTrace();
+ }
+
+ // Wait until we are stopped...
+ server.await();
+
+ // Stop the server or services.
+ try {
+ server.stop();
+ // service.stop();
+ // service2.stop();
+ } catch (LifecycleException ex) {
+ ex.printStackTrace();
+ }
+
+ }
+}