I have wrote java class to start Axis2Server programatically. It started properly and issue is it didn't stop either i destroy relevant process. please help.
Thank you, Chamara Silva /* *Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * *WSO2 Inc. 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.wso2.carbon.integration.core; import org.wso2.carbon.base.ServerConfigurationException; import org.wso2.carbon.utils.ServerConstants; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; /** * */ public class SimpleAxis2ServerManager { public static Process processAxisServer; private static Thread runnable; private static String originalUserDir = null; private final static String SERVER_STARTUP_MESSAGE = "HTTP Listener started"; private final static String SERVER_SHUTDOWN_MESSAGE = "HTTP Sender Shutdown"; private final static long DEFAULT_START_STOP_WAIT_MS = 1000 * 60 * 4; public synchronized static void startServer(String carbonHome) throws ServerConfigurationException, InterruptedException { if (processAxisServer != null) { // An instance of the server is running return; } Process tempProcess; try { System.setProperty(ServerConstants.CARBON_HOME, carbonHome); originalUserDir = System.getProperty("user.dir"); System.setProperty("user.dir", carbonHome); System.out.println("Importing Code Coverage Details..."); String temp; if (System.getProperty("os.name").toLowerCase().contains("windows")) { tempProcess = Runtime.getRuntime().exec(new String[]{"bat", "samples/axis2Server/axis2server.bat"}, null, new File(carbonHome)); } else { tempProcess = Runtime.getRuntime().exec(new String[]{"sh", "samples/axis2Server/axis2server.sh"}, null, new File(carbonHome)); } Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { try { shutdown(); } catch (Exception ignored) { } } }); final BufferedReader reader = new BufferedReader( new InputStreamReader(tempProcess.getInputStream())); long time = System.currentTimeMillis() + DEFAULT_START_STOP_WAIT_MS; while ((temp = reader.readLine()) != null && System.currentTimeMillis() < time) { System.out.println(temp); if (temp.contains(SERVER_STARTUP_MESSAGE)) { runnable = new Thread() { public void run() { try { String temp; while ((temp = reader.readLine()) != null) { System.out.println(temp); } } catch (Exception ignore) { } } }; runnable.start(); break; } } } catch (IOException e) { throw new RuntimeException("Unable to start server", e); } processAxisServer = tempProcess; System.out.println("Successfully started axis2 server. Returning..."); } public synchronized static void shutdown() throws Exception { if (processAxisServer != null) { // try { String temp; processAxisServer.destroy(); // BufferedReader reader = new BufferedReader( // new InputStreamReader(processAxisServer.getInputStream())); // long time = System.currentTimeMillis() + DEFAULT_START_STOP_WAIT_MS; // while ((temp = reader.readLine()) != null && System.currentTimeMillis() < time) { // if (temp.contains(SERVER_SHUTDOWN_MESSAGE)) { // break; // } // } // } catch (IOException ignored) { // } try { runnable.interrupt(); } catch (Exception ignored) { } runnable = null; processAxisServer = null; System.out.println("Saving Code Coverage Details..."); try { Thread.sleep(1000); } catch (InterruptedException ignored) { } System.out.println("Completed Saving Code Coverage Details."); System.clearProperty(ServerConstants.CARBON_HOME); System.setProperty("user.dir", originalUserDir); } } public static void main(String[] args) throws Exception { System.out.println("Hello i am starting"); startServer("/home/chamara/wso2/framework-migration/temp/wso2esb-4.0.0-SNAPSHOT"); System.out.println("Hello chamara"); shutdown(); } public void AAAtest() throws Exception { System.out.println("Hello i am starting"); startServer("/home/chamara/wso2/framework-migration/temp/wso2esb-4.0.0-SNAPSHOT"); System.out.println("Hello chamara"); shutdown(); } } -- Suminda Chamara Silva WSO2 Inc. Mobile: +94 718 302858 blog: http://chamaras.blogspot.com
_______________________________________________ Carbon-dev mailing list [email protected] http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
