[vbox-dev] Help with sessions

Klaus Espenlaub klaus.espenlaub at oracle.com
Tue Nov 2 10:35:19 GMT 2010


On 26.10.2010 00:44, Lucas Charles wrote:
> Hi Nikolay,
>
>
> Thank you very much for sorting this out, now it's solved.
> What I actually didn't get was that I had to close the session after
> openRemoteSession. (My bad)
>
> I just had one question, it seems to me that using snapshot (Either
> restore the snapshot or start from a saved one) can be really expensive
> if I have modifications on the harddrive.. It takes something like 5-10
> seconds to recover form a snapshot that has been done after an install
> of a few package in an Ubuntu guest.

That sounds quite plausible... loading a saved state alone isn't for 
free if your VM has lots of RAM configured. You could have a peek at 
VBox.log if you wonder where the time is spent. If it's in the 
management of diff images it doesn't show up there though, since it's 
done before the VM is started.

All snapshot management operations are complex file operations, 
especially if you delete non-"leaf" snapshots. Restoring some snapshot 
is comparably simple, it "only" means creating a new diff image (and 
potentially deleting the previous one), which doesn't need much file 
I/O. It still depends heavily on the disk speed and load.

Klaus

>
> - Does it make any sense ?
>
> Lucas
>
> On Mon, Oct 25, 2010 at 4:46 PM, Nikolay Igotti
> <nikolay.igotti at oracle.com <mailto:nikolay.igotti at oracle.com>> wrote:
>
>       Hi Lucas,
>
>
>
>     Lucas Charles wrote:
>
>         Thanks also for reminding me the change of the API, I also
>         remember that there should be an xpcom-like API for java in the
>         next version.
>
>     Yes, but look and feel of both WS and XPCOM API shall be the same,
>     and you can use pretty much the same Java code for both.
>
>         I understood that openRemoteSession is used to start a vm and I
>         used this call to open several vms.
>         The problem is how to access this session once it has been opened.
>
>     To create a session object you may want to use getSessionObject().
>     Complete example can be found in
>     src/VBox/Main/webservice/samples/java/jax-ws/clienttest.java which
>     is also shipped with SDK.
>
>
>
>         Up to know I passed the same session object to every open remote
>         session call, which is apparently wrong.
>         I tried to reused this session object to command the snapshots,
>         and it apparently failed. I understood that a session is
>         linked to one machine, so it makes sense that I cannot reuse
>         them everywhere.
>
>     Yes, you need one session per machine. See my getSessionObject()
>     remark above.
>
>
>
>         I saw in some threads in the mailing list that I could create
>         one IWebsessionManager to start all the vms and then
>         create one IWesessionManager per machine started to create new
>         session objects. Is it really the right thing to do, since the
>         IVirtualbox is a singleton.
>
>     You need different managers if you maintain connection to multiple
>     VirtualBox hosts, if you all your VMs run on the same host/port
>     there is no need for multiple managers.
>
>       Nikolay
>
>
>
>         On Mon, Oct 25, 2010 at 11:14 AM, Nikolay Igotti
>         <nikolay.igotti at oracle.com <mailto:nikolay.igotti at oracle.com>
>         <mailto:nikolay.igotti at oracle.com
>         <mailto:nikolay.igotti at oracle.com>>> wrote:
>
>                Hi Lucas,
>
>
>             First of all, please keep in mind that for next major release
>             there will be significant rework of both session API and
>             the way it's accessed from Java. Having said that, with 3.x
>              approach, which is, indeed not very straightforward,
>             openRemoteSession() API is just a way start a new VM, so
>         it's not
>             possible to use one remote session to start several VMs -
>             you have to openRemoteSession() for every VM you want to start.
>             Please refer to SDK documentation, and vboxshell.py TUI example
>             (while in Python, patterns of API usage is the same).
>
>
>             Hope that will help,
>               Nikolay
>
>
>             Lucas Charles wrote:
>
>                 Hello everyone,
>
>                 I'm stuck with a problem related to the sdk for java-ws.
>                 I want to manage several machines on a given host from
>         my java
>                 client.
>
>                 I need to start vms Take snapshots of the one I started at
>                 given intervals.
>                 After a new boot I need to restore the machines to their
>                 latest snapshot.
>                 Start them and redo snapshots.
>
>                 The problem I'm facing is how to open sessions.
>
>                 Yet I'm starting the vms by calling
>                 ------
>
>                 IWebsessionManager mgr;
>
>                 IVirtualBox vbox
>
>                 mgr = new IWebsessionManager("http://localhost:18083");
>
>                 vbox = mgr.logon("", "");
>
>                 ISession session = mgr.getSessionObject(vbox);
>
>                 IProgress prog = vbox.openRemoteSession(session,
>                 machineToStart.getId(), "gui", "");
>
>                 prog.waitForCompletion(-1);
>
>                 -----
>
>                 Isn't it a problem to call openRemoteSession with the
>         session
>                 I got from IWebSessionManager::getSessiontObject() ?
>                 Because I then use only one session to start several vms.
>
>                 My next question is when I want to take snapshots of every
>                 machines I have in charge.
>
>                 Which session object should I use to get the IConsole ?
>                 Can/Must I reuse the one I used upon calling
>                 openRemoteSession() ? Reusing seems to work, if I
>         control only
>                 one machine but fails with more than one.
>
>                 Best Regard,
>                 Lucas Charles
>
>           ------------------------------------------------------------------------
>
>                 _______________________________________________
>                 vbox-dev mailing list
>         vbox-dev at virtualbox.org <mailto:vbox-dev at virtualbox.org>
>         <mailto:vbox-dev at virtualbox.org <mailto:vbox-dev at virtualbox.org>>
>
>         http://vbox.innotek.de/mailman/listinfo/vbox-dev
>
>
>
>
>
>
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev




More information about the vbox-dev mailing list