рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди RAP рдПрдкреНрд▓реАрдХреЗрд╢рди

рд╕рднреА рдХреЛ рдмрдзрд╛рдИ! рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдВред

рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ RAP рдФрд░ OSGi рдХреЛ рджреЗрдЦрд╛ рдерд╛, рдПрдХ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдореБрдЭреЗ рдЗрди рддрдХрдиреАрдХреЛрдВ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реЗрдм рдкрд░ рднреА рдЖрд░рдПрдкреА рдкрд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рд▓реЗрдЦрди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдХреБрдЫ рд╢рд╛рдВрдд (рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдУрдПрд╕рдЬреАрдЖрдИ рдХреНрдпрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдЖрдк рдЗрд╕реЗ Google рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдЖрд░рдПрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдУрдПрд╕рдЬреАрдЖрдИ рдмрдВрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВред

рдпрд╣реА рд╣реИ, рдХрд╛рд░реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: "рдЖрд░рдПрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВред" рдХреИрд╕реЗ рдЧреНрд░рд╣рдг рдореЗрдВ рдПрдХ OSGi рдмрдВрдбрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╛рдардХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬрд╛рдирддрд╛ рд╣реИред

So. рдЖрд░рдПрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рдЧрднрдЧ рд╕рднреА рдЙрджрд╛рд╣рд░рдг, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ - рдХреЛрдИ рднреА рдХрднреА рднреА рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ, рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЕрджреНрднреБрдд рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рд╕рд╛рд░рдгреАрдмрджреНрдз рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд╣реБрдд рд╕рд╣рдЬ рдФрд░ рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдХрд╛рд░реНрдп "RAP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ" рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЕрдм рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ Declarative Services рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреАрдПрд╕ рдмреБрд░рд╛рдИ рд╣реИред рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрднреА рднреА рдПрдорд╡реАрд╕реА рд╣реИ, рдЬрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡реНрдпреВ рд╣реИ, рдПрдХ usecase рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рд╣реИ ... рдРрд╕рд╛ "рдЕрдкрдорд╛рди" рдбреАрдПрд╕ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдорд╛рд░реНрдЧ рдкрд░ рдЪрд▓реЗрдВрдЧреЗред

рд╣рдо рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХрд╛ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЙрд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗ:

abstract public class ApplicationEntryPoint implements EntryPoint { private ApplicationSession mSession; private ApplicationWindow mApplicationWindow; private ApplicationController mController; private String mDeferredUsecaseRun; public ApplicationEntryPoint(UseCaseRegister usecaseRegister) { mSession = new ApplicationSession(); } public ApplicationSession getSession() { return mSession; } protected Shell createMainShell( Display display ) { Shell shell = new Shell(display, SWT.NO_TRIM); shell.setMaximized(true); shell.setData(RWT.CUSTOM_VARIANT, "mainshell"); shell.setLayout(new FillLayout()); return shell; } protected void clearShell(Shell shell) { Control[] controls = shell.getChildren(); for (int i = 0; i < controls.length; i++) { if(controls[i] != null) { controls[i].dispose(); } } } } 


рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╡рд░реНрдЧ рд╣реИред рд╣рдо рджреЛ рддрд░реАрдХреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ: createMainShell - рдЬреЛ рд╢реЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ - SWT рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреЗрдЬ рд╣реИред рдФрд░ ClearShell - рдЬреЛ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдкреГрд╖реНрда рдкрд░ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рд╢реЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣рд░ рдЪреАрдЬ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдирдП рдбреЗрдЯрд╛ рд╕реЗ рднрд░ рджреЗрддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛, рдПрдХ ApplicationConfig рдмрдирд╛рдПрдВ:

 public class ApplicationConfig implements ApplicationConfiguration { public ApplicationConfig() {} public void configure( Application application ) { application.setOperationMode(OperationMode.SWT_COMPATIBILITY); application.addResource("/images/16/help2.png", new ResourceLoader() { @Override public InputStream getResourceAsStream(String arg0) throws IOException { return ApplicationConfig.class. GetClassLoader(). getResourceAsStream("/images/16/help2.png"); } }); Map<String, String> properties = new HashMap<String, String>(); properties.put( WebClient.FAVICON, "/images/16/help2.png" ); properties.put( WebClient.PAGE_TITLE, "Public area" ); application.addEntryPoint("/public", new PublicAreaEntryPointFactory(), properties); properties = new HashMap<String, String>(); properties.put( WebClient.PAGE_TITLE, "Main area" ); application.addEntryPoint("/main", new MainApplicationEntryPointFactory(), properties); } } 


рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдпреВрдЖрд░рдЖрдИ рджреНрд╡рд╛рд░рд╛ рд╕реБрд▓рдн рд╣реИрдВ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ / рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдореБрдЦреНрдпред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЕрдкрдирд╛ рдлрд╝реЗрд╡рд┐рдХреЙрди рдФрд░ рдкреГрд╖реНрда рд╢реАрд░реНрд╖рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрд░рдбрдмреНрд▓реНрдпреВрдЯреА рдореЗрдВ рдЖрд╡реЗрджрди рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрднреА рдХрд░реЗрдВрдЧреЗред

 abstract public class ApplicationEntryPointFactory implements EntryPointFactory { public ApplicationEntryPointFactory() {} public EntryPoint create() { return null; } } 


рдпрд╣ рдПрдХ рдЕрдореВрд░реНрдд рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ, рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рддрдм рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░реЗрдВ - рдЗрд╕реЗ рддреБрд░рдВрдд рдХрд░реЗрдВред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдЖрдпрд╛ред

рд╣рдо рдЖрд╡реЗрджрди рд╕рддреНрд░ рдХрдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдП, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдФрд░ рдЙрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 final public class ApplicationSession { private PersistentManager mPersistent; private HttpSession mHttpSession; private String mLogin = ""; private Boolean mLoggedIn = false; private Locale mLocale = null; private User mUser; private Logger mLogger; public ApplicationSession() { mLocale = new Locale("ru", "RU"); mHttpSession = RWT.getUISession().getHttpSession(); mPersistent = new PersistentManager("mo"); /* *      . */ if (mHttpSession.getAttribute("login") != null) mLogin = (String) mHttpSession.getAttribute("login"); if (mHttpSession.getAttribute("user") != null) mUser = (User) mHttpSession.getAttribute("user"); mLogger = LoggerFactory.getLogger(ApplicationSession.class); } final public void login(User user, String login) { mLogin = login; mPersistent.setUser(user); mHttpSession.setAttribute("login", mLogin); mHttpSession.setAttribute("user", user); logger().debug("   {}", mLogin); } final public Logger logger() { return mLogger; } final public void setUser(User user) { mUser = user; mHttpSession.setAttribute("user", user); } final public User getUser() { return mUser; } final public PersistentManager persistent() { return mPersistent; } final public String getId() { return mHttpSession.getId(); } final public Locale getLocale() { return mLocale; } final public void setLanguage(String language) { if (language.toUpperCase().equals("RUSSIAN") || language.toUpperCase().equals("RU")) { mLocale = new Locale("ru", "RU"); } else { mLocale = new Locale("en", "EN"); } } } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рддреНрд░ рдореЗрдВ рд╣рдо рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрднрд╡ рд╣реИред ORM рдФрд░ HTTP рд╕рддреНрд░ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓реЛрдХреЗрд▓ рдФрд░ рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИ ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдХреЗ рдЕрдВрджрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдВрдбрд▓реЛрдВред

рдареАрдХ рд╣реИ, рдлрд┐рд░, рд╣рдо рдЕрдкрдиреЗ рд╕рд╛рд░ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:

 /** *       . *       -   *     . */ public class MainApplicationEntryPointFactory extends ApplicationEntryPointFactory { public MainApplicationEntryPointFactory() { super(); } @Override public EntryPoint create() { MainApplicationEntryPoint mainApp = new MainApplicationEntryPoint(getUsecaseRegister()); return mainApp; } } /** *     ,    . *            *    URI,    . */ public class MainApplicationEntryPoint extends ApplicationEntryPoint { private Shell mShell; private CommonController mLoginController; private ApplicationController mCtrl; public MainApplicationEntryPoint() { super(); } @Override public int createUI() { Display display = new Display(); mShell = createMainShell( display ); //    try { if (getSession().getUser() != null) { //      //   . mCtrl = new MainApplicationController(getSession(), mShell); mCtrl.init(); } else { mCtrl = new PublicAreaController(getSession(), mShell); mCtrl.init(); } catch (Exception ex) { MessageDialog.openError(mShell, "!", ex.getMessage()); } //  ,      , //      . mShell.open(); //   while( !mShell.isDisposed() ) { if( !display.readAndDispatch() ) { display.sleep(); } } display.dispose(); return 0; } } 


рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдорд╡реАрд╕реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреЗ рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рдЙрдкрдпреБрдХреНрдд рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП - рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╢реЗрд▓ рдПрдХ рд╣реА рдХрдореНрдкреЛрдЬрд┐рдЯ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдЕрдиреНрдп рдХрдВрдкреЛрдЬрд┐рдЯ рдкреИрдХ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд╢реЗрд▓ рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдПрд╕рдбрдмреНрд▓реНрдпреВрдЯреА рдкрд░ рд╕рд╛рд╣рд┐рддреНрдп рд╕реЗ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдЖрд░рдЖрдИ рдкрд░ рдЙрдкрд▓рдмреНрдз рдПрдХ рдЖрд╡реЗрджрди рд╣реЛрдЧрд╛ред

рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╣рдо рдЕрдм рдЙрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдЖрд░рдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░ рдпрд╛ рдмрд╛рд╣рд░реА рдЬреЗрдПрд╕), рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдЖрд╡реЗрджрди рдмрдВрдбрд▓ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:

 public class Activator implements BundleActivator { public void start(BundleContext context) throws Exception { /* *    */ Dictionary<String, Object> props = new Hashtable<String, Object>(); props.put("contextName", "app"); context.registerService(ApplicationConfiguration.class.getName(), new ApplicationConfig(), props); } public void stop(BundleContext context) throws Exception { } } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрд╡реЗрджрди рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдЧрд╛ рдЬреЛ рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗ: / рдРрдк / рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдпрд╛ / рдРрдк / рдореБрдЦреНрдпред

рдкреБрдирд╢реНрдЪред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рдХреЛрдб рдЕрдиреБрдорд╛рдирд┐рдд, рд╡реИрдЪрд╛рд░рд┐рдХ рд╣реИред рдореВрд░реНрдЦрддрд╛ рд╕реЗ рдЗрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЙрдореНрдореАрдж рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ - рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдпрдд рд╕рдордп рдореЗрдВ рдРрд╕рд╛ рдореИрдиреБрдЕрд▓ рд╣реЛрддрд╛, рддреЛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрддрд╛ред

рдкреА рдкреА рдПрд╕ред рдЙрди рд╕рд╛рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрд░рдПрдкреА рдкреВрд░реНрд╡ рд░рд┐рдЪ рдЕрдЬрд╛рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рд╣реИ, рдЬреЛ рдЕрдм рд░рд┐рдореЛрдЯ рдПрдкреНрд▓реАрдХреЗрд╢рди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИред рдЖрд░рдПрдкреА рдПрдХреНрд▓рд┐рдкреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди рдХрд╛ рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╣реИ рдФрд░ рдПрдХ рдкрддрд▓реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдЯреВрд▓рдХрд┐рдЯ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА eclipse.org/rap рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ JSON- рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИред рджреВрд╕рд░рд╛, RWT SWT рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, SWT рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рд╕рдЪ рд╣реИ, рдЬрд┐рд╕реЗ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рднрд╛рд╡реА рдХреЛрдб-рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрд╡рд╕рд░ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдХреНрд▓рд╛рд╕рдкреАрде рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╛рд╕рдкреИрде рдХреЛ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╛ рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдиреНрдпреВрдирддрдо рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рд╣реИред GWT рд▓рдЧрднрдЧ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In179411/


All Articles