VirtualBox

Changeset 31166 in vbox


Ignore:
Timestamp:
Jul 28, 2010 2:38:35 PM (14 years ago)
Author:
vboxsync
Message:

Java bridge: allow multiple concurrent SOAP connections

Location:
trunk/src/VBox/Main/glue
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/glue/glue-java.xsl

    r31096 r31166  
    25102510    }
    25112511
    2512     private static VirtualBoxManager mgr;
    2513 
    2514     public static synchronized VirtualBoxManager getInstance(String home)
    2515     {
    2516         if (mgr != null)
    2517             return mgr;
     2512    private static boolean hasInstance = false;
     2513
     2514    public static synchronized VirtualBoxManager createInstance(String home)
     2515    {
     2516        if (hasInstance)
     2517            throw new VBoxException(null, "only one instance at the time allowed");
    25182518
    25192519        if (home == null)
     
    25312531        }
    25322532
    2533         mgr = new VirtualBoxManager(mozilla, servMgr);
    2534         return mgr;
     2533        hasInstance = true;
     2534
     2535        return new VirtualBoxManager(mozilla, servMgr);
    25352536    }
    25362537
     
    25452546        mozilla.shutdownXPCOM(servMgr);
    25462547        mozilla = null;
     2548        hasInstance = false;
    25472549    }
    25482550
     
    30063008        ISession s = getSessionObject();
    30073009        m.lockMachine(s, LockType.Shared);
    3008         return s;       
    3009     }
    3010    
     3010        return s;
     3011    }
     3012
    30113013    public void closeMachineSession(ISession s)
    30123014    {
     
    30153017    }
    30163018
    3017     private static VirtualBoxManager mgr;
    3018 
    3019     public static synchronized VirtualBoxManager getInstance(String home)
    3020     {
    3021         if (mgr != null)
    3022             return mgr;
    3023 
    3024         if (home == null)
    3025             home = System.getProperty("vbox.home");
    3026 
    3027         mgr = new VirtualBoxManager();
    3028         return mgr;
     3019    private static boolean hasInstance = false;
     3020
     3021    public static synchronized VirtualBoxManager createInstance(String home)
     3022    {
     3023        if (hasInstance)
     3024          throw new VBoxException(null, "only one instance at the time allowed");
     3025
     3026        hasInstance = true;
     3027        return new VirtualBoxManager();
    30293028    }
    30303029
     
    30323031    {
    30333032        deinitPerThread();
    3034         mgr = null;
     3033        hasInstance = false;
    30353034    }
    30363035
     
    32073206            List<T2> ret = new ArrayList<T2>(values.size());
    32083207            for (T1 v : values) {
    3209                 // static method is called with null this               
     3208                // static method is called with null this
    32103209                ret.add((T2)fromValue.invoke(null, v.name()));
    32113210            }
     
    34603459    }
    34613460
    3462     private static VirtualBoxManager mgr;
    3463 
    3464     public static synchronized VirtualBoxManager getInstance(String home)
    3465     {
    3466         if (mgr != null)
    3467             return mgr;
    3468 
    3469         mgr = new VirtualBoxManager();
    3470         return mgr;
     3461    public static synchronized VirtualBoxManager createInstance(String home)
     3462    {
     3463        return new VirtualBoxManager();
    34713464    }
    34723465
  • trunk/src/VBox/Main/glue/tests/TestVBox.java

    r31135 r31166  
    9696    }
    9797
     98    static void testMultiServer()
     99    {
     100        VirtualBoxManager mgr1 = VirtualBoxManager.createInstance(null);
     101        VirtualBoxManager mgr2 = VirtualBoxManager.createInstance(null);
     102
     103        try {
     104            mgr1.connect("http://i7:18083", "", "");
     105            mgr2.connect("http://main:18083", "", "");
     106
     107            String mach1 =  mgr1.getVBox().getMachines().get(0).getName();
     108            String mach2 =  mgr2.getVBox().getMachines().get(0).getName();
     109
     110            mgr1.startVm(mach1, null, 7000);
     111            mgr2.startVm(mach2, null, 7000);
     112        } finally {
     113            mgr1.cleanup();
     114            mgr2.cleanup();
     115        }
     116    }
     117
    98118    public static void main(String[] args)
    99119    {
    100         VirtualBoxManager mgr = VirtualBoxManager.getInstance(null);
     120        VirtualBoxManager mgr = VirtualBoxManager.createInstance(null);
    101121
    102122        boolean ws = false;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette