рдлрд┐рд░ рд╕реЗ рдирдорд╕реНрдХрд╛рд░! рдлрд┐рд░, рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдбред ;)
рдУрдПрд╕рдЬреАрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдмрдВрдбрд▓ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдмреБрдирд┐рдпрд╛рджреА рд╣реИред рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░, рдмрдВрдбрд▓, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрд┐рд╕ рдХреНрд╖рдг рд╕реЗ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЬреАрд╡рди рдЬреАрдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрдВрдбрд▓ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: "рд╡рд░реНрдХрд░рдмрдВрдбрд▓ рдмрдВрдбрд▓ рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрд╡рд╛ рдкреНрд░рддреНрдпреЗрдХ 20 рд╕реЗрдХрдВрдб рдореЗрдВ" рдкреНрд░реАрд╡рд░реНрдХрдлрдВрдХреНрд╢рди "рдирд╛рдордХ рдХреБрдЫ рдХрд░рддреА рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рд╣реИрдВрдбрд▓рд░рдмрдВрдбрд▓ рдмрдВрдбрд▓ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдмрдВрдбрд▓ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╡рд╣ "рд╡рд░реНрдХрдлрд╝рдВрдХреНрд╢рди" рдЪрд▓рд╛рдПред
рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд░рд▓ рдХреЗ рд╕рд╛рде: рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░ рдмрдВрдбрд▓ рд╣реИ рдЬреЛ рдмрдВрдбрд▓реЛрдВ рдХреА рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдЗрд╕рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо EventAdmin рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрдВрдбрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдмрдВрдбрд▓ рдХреЗ рдПрдХреНрдЯрд┐рд╡реЗрдЯрд░ рдХреЛ рд▓рд┐рдЦреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рджреВрд╕рд░реЗ рдмрдВрдбрд▓ рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред
рд╕рдВрджреЗрд╢ рд░рд┐рд╕реЗрдкреНрд╢рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиpublic class Activator implements BundleActivator { private Register mRegister; public void start(BundleContext context) throws Exception { mRegister = new Register(); context.registerService(EventHandler.class.getName(), new ActivationEventHandler(mRegister), getHandlerServiceProperties( "ru/futurelink/app/web/usecase/Activator" )); Dictionary<String, Object> props = new Hashtable<String, Object>(); props.put("contextName", "app"); context.registerService(ApplicationConfiguration.class.getName(), new ApplicationConfig(mRegister), props ); } public void stop(BundleContext context) throws Exception {} protected Dictionary<String, Object> getHandlerServiceProperties(String... topics) { Dictionary<String, Object> result = new Hashtable<String, Object>(); result.put(EventConstants.EVENT_TOPIC, topics); return result; } }
рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╖рдп рдкрдВрдХреНрддрд┐ "рдЖрд░рдпреВ / рдлреНрдпреВрдЪрд░рд▓рд┐рдВрдХ / рдРрдк / рд╡реЗрдм / рдпреВрд╕реЗрдХрд╕ / рдПрдХреНрдЯреАрд╡реЗрдЯрд░" рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛)ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рдХрд┐рд╕реА рднреА рдмрдВрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХрд╛ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЗрд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрд░рдПрдкреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрд╡рд╛ рдХреЛ рдЖрдЧреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рд╕реЗ ApplicationConfig рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред
public class ApplicationConfig implements ApplicationConfiguration { private Register mRegister; public ApplicationConfig(Register register) { mRegister = register; } }
рд╕реНрд╡рдпрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреНрд▓рд╛рд╕ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдмрдВрдбрд▓ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд░рд┐рд╕реАрд╡рд░ рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рд╣реИ:
public class ActivationEventHandler implements EventHandler { private Register mRegister; public UseCaseActivationEventHandler(Register register) { mRegister = register; } @Override public void handleEvent(Event event) { String bundle = (String) event.getProperty("bundleName"); Integer activated = (Integer) event.getProperty("activated"); BundleContext context = (BundleContext)event.getProperty("bundleContext"); if (activated == 1) { mRegister.registerBundle(bundle, context); } else { mRegister.unregisterBundle(bundle); } } }
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рдПрдХ рдмрдВрдбрд▓ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдмрдВрдбрд▓ рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ == 1 рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрдВрдбрд▓ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛, рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдЖрдЗрдП рдПрдХ рдмрдВрдбрд▓ рдПрдХреНрдЯрд┐рд╡реЗрдЯрд░ рдмрдирд╛рдПрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЖрд░рдВрдн рдФрд░ рд░реБрдХрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред
public class ClientActivator implements BundleActivator { private ServiceTracker mServiceTracker; private EventAdmin mEventAdmin; private Logger mLogger; private String mBundleName; public ClientActivator() {} public void addUsecase(UseCaseInfo info) { mBundleName = info.getBundleName(); } @Override public void start(BundleContext context) throws Exception { mServiceTracker = new ServiceTracker( context, EventAdmin.class.getName(), null); mServiceTracker.open(); mEventAdmin = (EventAdmin) mServiceTracker.getService(); postActivationEvent(context); } @Override public void stop(BundleContext context) throws Exception { postDeactivationEvent(context); } private void postActivationEvent(BundleContext context) { if (mEventAdmin != null) {
рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдЬрдм рдмрдВрдбрд▓ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ EventAdmin рд╕реЗрд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ mEventAdmin == рдЕрд╢рдХреНрддред рдХрд╛рд░реНрдп рдХреЗ рддрд░реНрдХ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЖрдЧреЗ - рд╣рдо рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рд░реЛрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред
рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдХреНрдпреЛрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдмрдВрдбрд▓ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд▓рд╛рдЧреВ рдореЙрдбреНрдпреВрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддреБрд░рдВрдд рдЕрдХреНрд╖рдо рдФрд░ рджреБрд░реНрдЧрдо рд╣реЛред рдХреЛрдИ рддреНрд░реБрдЯрд┐, рдмрд╣рд╛рдирд╛ - рдмрд╕ рд╕рд╛рдЗрдЯ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдЬрдм рд╡рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА рдЗрд╕ рдмрдВрдбрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ред рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпрд╛ рдмрддрд╛рдПрдВрдЧреЗред
рд╡реИрд╕реЗ, рдЖрдкрдХреЛ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдмрдВрдбрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рд╕рдВрджреЗрд╢ рдореЗрдВ рднреА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрд╡рд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рдПрдХ рд╕рд╛рдереА рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ EventAdmin рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдКрдкрд░ рджреА рдЧрдИ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред
рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рд╢реНрди рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдЪрд╛рд╣рд┐рдП ...;)