[vbox-dev] Help with sessions
Lucas Charles
lucas.charles at unine.ch
Mon Oct 25 22:44:38 GMT 2010
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.
- Does it make any sense ?
Lucas
On Mon, Oct 25, 2010 at 4:46 PM, Nikolay Igotti
<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>> 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>
>>
>> http://vbox.innotek.de/mailman/listinfo/vbox-dev
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20101026/04ce06f3/attachment.html>
More information about the vbox-dev
mailing list