private static Logger log = Logger.getLogger(VBoxControlUtil.class); private IMachine machine; private VirtualBoxManager vbm; private ISession session; private String vboxName; public VBoxControlUtil(String vmname) { log.info("begin connect :"+ vmname); vboxName = vmname; vbm = VirtualBoxManager.createInstance(null); vbm.connect(SystemContent.VBOX_URL,"",""); IVirtualBox vbox = vbm.getVBox(); machine = vbox.findMachine(vmname); session = vbm.getSessionObject(); log.info("conect sucess : " + vmname); } public synchronized void disconnect(VirtualBoxManager manager) { try { manager.disconnect(); } catch (VBoxException e) { } } public synchronized boolean isConnected(VirtualBoxManager manager) { try { manager.getVBox().getVersion(); return true; } catch (VBoxException e) { return false; } } @SuppressWarnings({ "unchecked", "rawtypes" }) public synchronized long startVm() { if (null == machine) { log.error("Cannot find machine name is : " + vboxName); return -1; } MachineState state = machine.getState(); if (MachineState.Running == state || MachineState.PoweredOff == state) { long rs = stopVm(); if(rs == -1){ return -1; } } IProgress progress; String env = ""; long result = 0; try { progress = machine.launchVMProcess(session, "gui", env); if (!waitProgressCompletion(progress)) { log.warn("Cannot run Vbox!"); return -1; } } catch (Exception e) { e.printStackTrace(); log.error(" start virtualbox is error : " + e.getMessage()); return -1; } // 运行进程 IConsole iCon = session.getConsole(); IGuest iGuest = iCon.getGuest(); IGuestSession igs = iGuest.createSession("Administrator", "mima", "", ""); List lArgs = new ArrayList(); lArgs.add("/K c:\\bin\\update.bat "+SystemContent.PROJECT_HOST+" "+SystemContent.SOCKET_PORT); List lFlags = new ArrayList(); lFlags.add(ProcessCreateFlag.WaitForStdOut); lFlags.add(ProcessCreateFlag.WaitForStdErr); IGuestProcess igp = igs.processCreate("c:\\windows\\system32\\cmd.exe", lArgs, null, lFlags, (long) 120000); List lWaitFlags = new ArrayList(); lWaitFlags.add(ProcessWaitForFlag.Start); ProcessWaitResult rlt = igp.waitForArray(lWaitFlags, (long) 120 * 1000); if (rlt == ProcessWaitResult.Start) { ProcessStatus ps = igp.getStatus(); if (ps == ProcessStatus.Started) { log.info("runProcess is success"); } } igs.close(); return result; } public synchronized long stopVm() { if (null == machine) { log.error("Cannot find machine: " + vboxName); return -1; } long result = 0; MachineState state = machine.getState(); try { if (MachineState.PoweredOff != state) { if(MachineState.Running == state){ if(session.getState() == SessionState.Locked){ session.unlockMachine(); } machine.lockMachine(session, LockType.Shared); } IProgress progress = session.getConsole().powerDown(); progress.waitForCompletion(10000); result = progress.getResultCode(); if (0 != result) { log.error("machine " + vboxName + " error: " + getVBProcessError(progress)); return -1; } else { log.info("machine " + vboxName + " stopped"); } } while(session.getState() == SessionState.Locked){ Thread.sleep(500); } machine.lockMachine(session, LockType.Shared); ISnapshot iSnap = machine.getCurrentSnapshot(); IConsole iCon = session.getConsole(); IProgress iProg = iCon.restoreSnapshot(iSnap); if (!waitProgressCompletion(iProg)) { log.warn("Cannot restoreSnapshot VM!"); } log.info("restoreSnapshot " + vboxName + "sucessed"); } catch (Exception e) { e.printStackTrace(); log.error("restoreSnapshot is error : " + e.getMessage()); return -1; } finally { session.unlockMachine(); } return result; } private String getVBProcessError(IProgress progress) { if (0 == progress.getResultCode()) { return ""; } StringBuilder sb = new StringBuilder(""); IVirtualBoxErrorInfo errInfo = progress.getErrorInfo(); while (null != errInfo) { sb.append(errInfo.getText()); sb.append("\n"); errInfo = errInfo.getNext(); } return sb.toString(); } private boolean waitProgressCompletion(IProgress iProg) { iProg.waitForCompletion(10000); // give the process 10 secs if (iProg.getResultCode() != 0) return false; return true; }
相关推荐
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...
标题 "Delphi调用Java WebService实例" 涉及的是在Delphi编程环境中如何与Java WebService进行交互的技术。Delphi是一款强大的Windows应用程序开发工具,而Java WebService则是一种基于标准的,跨平台的远程调用技术...
Java WebService是一种基于标准的、平台无关的通信方式,它允许不同系统间的应用程序进行交互,主要依赖于SOAP(Simple Object Access Protocol)协议和WSDL(Web Services Description Language)。本教程将带你...
在“java 利用webservice传输文件”的场景中,JACOB可能被用来执行以下任务: 1. **文件操作**:Windows系统有许多内置的COM组件,如Scripting.FileSystemObject,可用于读写文件、创建目录等。通过JACOB,Java程序...
### .NET调用Java WebService的关键知识点 #### 一、背景与原理介绍 在实际的软件开发过程中,不同技术栈之间的交互变得越来越普遍。对于.NET应用程序来说,有时需要调用由Java开发的WebService。这种跨平台的服务...
SDK文档主要面向开发者,提供了编程接口和API(Application Programming Interface)的详细说明,使开发者能够在应用程序中整合或控制VirtualBox的功能。 在内容结构上,文档首先介绍了VirtualBox的模块化设计,...
调用Java WebService的问题在IT领域中颇为常见,尤其是在跨平台、跨语言的环境中,如C#调用Java WebService。以下将详细解析这一过程中的关键知识点,包括WebService的架构原理、工具选择(如Axis2)、数据类型转换...
Java WebService是一种基于标准的、平台无关的通信方式,它允许不同系统间的应用程序进行交互。在Java中,WebService主要通过SOAP(Simple Object Access Protocol)协议进行数据交换,使用WSDL(Web Services ...
本文将深入探讨如何使用C#调用Java WebService,这是实现.NET与Java平台间互操作性的一个重要方式。我们将首先理解WebService的基本概念,然后详细讲解C#中如何通过.NET Framework的SOAP客户端代理类来调用Java ...
### Java WebService 详细开发示例介绍 #### 一、引言 随着互联网技术的发展,分布式系统的构建变得越来越重要。WebService作为一种实现系统间通信的重要手段,被广泛应用于各种场景之中。本文将详细介绍Java中...
### Java WebService 简单实例 方式一(生成类文件方式) #### 一、概述 在本篇文章中,我们将详细介绍如何通过生成类文件的方式来创建一个简单的 Java WebService 应用程序。这种方式非常适合初学者理解和实践 ...
Java WebService 是一种基于标准协议(如SOAP,WSDL)的跨平台、跨语言的通信机制,用于构建可互操作的分布式系统。本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的...
java webservice实例教程ppt,共15讲,java webservice实例教程适合对象:想要学习SOA面向服务编程思想,学习Webservice技术,希望学习系统间通信设计的Java设计开发人员。java webservice实例教程适合于各个层次的...
Java WebService是一个基于标准的,用于构建分布式应用程序的开放平台,它允许不同系统间的应用程序通过网络交换数据和服务。本例子将介绍如何使用Apache Axis来创建和消费Java WebService。 首先,确保你拥有J2SE ...
Java WebService 简单实例教程 在Java开发中,WebService是一种常见的用于应用程序间通信的技术。它基于标准的XML(可扩展标记语言)和WSDL(Web服务描述语言)进行数据交换,允许不同平台和语言的应用程序之间共享...
Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...
在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...
java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...
总之,Java Webservice Axis2 Client的开发涉及到生成客户端代码、设置SOAP Header、调用服务和处理响应等多个步骤。了解这些概念和API对于构建安全、可靠的Web服务客户端至关重要。在实际项目中,确保遵循最佳实践...