| /* | |
| * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. | |
| * | |
| * This program and the accompanying materials are made available under the | |
| * terms of the Eclipse Public License v. 2.0, which is available at | |
| * http://www.eclipse.org/legal/epl-2.0. | |
| * | |
| * This Source Code may also be made available under the following Secondary | |
| * Licenses when the conditions for such availability set forth in the | |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, | |
| * version 2 with the GNU Classpath Exception, which is available at | |
| * https://www.gnu.org/software/classpath/license.html. | |
| * | |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 | |
| */ | |
| /* | |
| * SimpleJSR88Client.java | |
| * | |
| *Provides access to the JSR88 API through a convenient command line. | |
| *<p> | |
| *This is intended for internal testing use only. | |
| * | |
| * Created on January 21, 2004, 11:22 AM | |
| */ | |
| import java.io.File; | |
| import java.util.jar.Manifest; | |
| import java.net.*; | |
| import javax.enterprise.deploy.shared.ModuleType; | |
| import javax.enterprise.deploy.spi.factories.*; | |
| import javax.enterprise.deploy.shared.factories.*; | |
| import javax.enterprise.deploy.spi.status.*; | |
| import javax.enterprise.deploy.spi.*; | |
| import javax.enterprise.deploy.spi.exceptions.*; | |
| //import javax.enterprise.deploy.model.*; | |
| /** | |
| * | |
| * @author tjquinn | |
| */ | |
| public class SimpleJSR88Client { | |
| private final String J2EE_DEPLOYMENT_MANAGER = "J2EE-DeploymentFactory-Implementation-Class"; | |
| private DeploymentFactory deploymentFactory; | |
| private DeploymentManager deploymentManager; | |
| private String host; | |
| private String port; | |
| private String user; | |
| private String password; | |
| private String uri; | |
| /** Creates a new instance of SimpleJSR88Client */ | |
| public SimpleJSR88Client(String host, String port, String user, String password) { | |
| this.host = host; | |
| this.port = port; | |
| this.user = user; | |
| this.password = password; | |
| this.uri = "deployer:Sun:AppServer::" + host + ":" + port; | |
| } | |
| /** | |
| * @param args the command line arguments | |
| */ | |
| public static void main(String[] args) { | |
| /* | |
| *Get properties indicating the user, password, host, and port. | |
| */ | |
| String host = null; | |
| String port = null; | |
| String user = null; | |
| String password = null; | |
| if (((host = System.getProperty("jsr88client.host")) == null) | |
| || ((port = System.getProperty("jsr88client.port")) == null) | |
| || ((user = System.getProperty("jsr88client.user")) == null) | |
| || ((password = System.getProperty("jsr88client.password")) == null) ) { | |
| System.out.println("The properties jsr88client.host, jsr88client.port, jsr88client.user, and jsr88client.password must be assigned"); | |
| System.exit(-1); | |
| } | |
| try { | |
| new SimpleJSR88Client(host, port, user, password).run(args); | |
| System.exit(0); | |
| } catch (Throwable thr) { | |
| System.out.println("Error executing simple JSR88 client"); | |
| thr.printStackTrace(System.out); | |
| System.exit(1); | |
| } | |
| } | |
| public void run(String[] args) throws TargetException, DeploymentManagerCreationException { | |
| if (args.length == 0) { | |
| throw new IllegalArgumentException("Specify the JSR88 client command you want to execute as the first command line parameter"); | |
| } | |
| if (args[0].equals("getAvailableAppClientModules") ){ | |
| getAvailableModules(ModuleType.CAR); | |
| } else { | |
| throw new IllegalArgumentException("Unrecognized JSR88 client command specified: " + args[0]); | |
| } | |
| } | |
| private void getAvailableModules(ModuleType type) throws TargetException, DeploymentManagerCreationException { | |
| Target targets [] = getDeploymentManager().getTargets(); | |
| TargetModuleID [] moduleIDs = getDeploymentManager().getAvailableModules(type, targets); | |
| System.out.println("Available modules listing"); | |
| for (int i = 0; i < moduleIDs.length; i++) { | |
| System.out.println("Module " + i + ": " + moduleIDs[i].getModuleID()); | |
| } | |
| System.out.println(); | |
| } | |
| private DeploymentFactory loadDeploymentFactory() { | |
| System.out.println("Loading deployment factory"); | |
| Object deploymentFactory = null; | |
| File file = null; | |
| String className = null; | |
| try { | |
| file = new File(System.getProperty("com.sun.aas.installRoot") | |
| + File.separator+ "lib" + File.separator + "deployment" | |
| + File.separator + "sun-as-jsr88-dm.jar"); | |
| Manifest mf = new java.util.jar.JarFile(file).getManifest(); | |
| className = mf.getMainAttributes().getValue(J2EE_DEPLOYMENT_MANAGER); | |
| URL[] urls = new URL[]{file.toURL()}; | |
| URLClassLoader urlClassLoader = new java.net.URLClassLoader(urls, getClass().getClassLoader()); | |
| Class factory = null; | |
| try { | |
| factory=urlClassLoader.loadClass(className); | |
| } catch (ClassNotFoundException cnfe) { | |
| cnfe.printStackTrace(); | |
| System.exit(-1); | |
| } | |
| try { | |
| deploymentFactory = factory.newInstance(); | |
| } catch (Exception ie) { | |
| ie.printStackTrace(); | |
| System.exit(-1); | |
| } | |
| if (deploymentFactory instanceof DeploymentFactory) { | |
| DeploymentFactoryManager.getInstance().registerDeploymentFactory((DeploymentFactory) deploymentFactory); | |
| } else { | |
| System.out.println("Expected instance of DeploymentFactory from class loading of " + className + " but got " + deploymentFactory.getClass().getName() + " instead"); | |
| System.exit(-1); | |
| } | |
| } catch (Exception ex) { | |
| log("Failed to load the deployment factory using URL " + file.getAbsolutePath() + " and class " + className); | |
| ex.printStackTrace(); | |
| System.exit(-1); | |
| } | |
| System.out.println("Deployment factory loaded."); | |
| return (DeploymentFactory) deploymentFactory; | |
| } | |
| private static void log(String message) { | |
| System.out.println("[" + getJSRClientName() + "]:: " + message); | |
| } | |
| protected static String getJSRClientName() { | |
| return "SimpleJSR88Client"; | |
| } | |
| protected DeploymentFactory getDeploymentFactory() { | |
| if (this.deploymentFactory == null) { | |
| this.deploymentFactory = loadDeploymentFactory(); | |
| } | |
| return this.deploymentFactory; | |
| } | |
| private DeploymentManager loadDeploymentManager() throws DeploymentManagerCreationException { | |
| System.out.println("Loading deployment manager using uri " + this.uri + " under user " + this.user); | |
| DeploymentManager answer = getDeploymentFactory().getDeploymentManager(this.uri, this.user, this.password); | |
| System.out.println("Deployment manager loaded."); | |
| return answer; | |
| } | |
| protected DeploymentManager getDeploymentManager() throws DeploymentManagerCreationException { | |
| if (this.deploymentManager == null) { | |
| this.deploymentManager = loadDeploymentManager(); | |
| } | |
| return this.deploymentManager; | |
| } | |
| } |