120 likes | 134 Views
OpusCollege and Spring-DM. OSGi based web applications – three strategies. OSGi container embedded in another container: OSGi Bridge Server (OBS) e.g. OSGi within Tomcat or Jetty controlled through a bridge servlet (for instance Equinox) front controller
E N D
OSGi based web applications – three strategies • OSGi container embedded in another container: OSGi Bridge Server (OBS) • e.g. OSGi within Tomcat or Jetty • controlled through a bridge servlet (for instance Equinox) • front controller • dispatches servlet requests to bundles • OSGi container with a http-container on top of it • PAX Web solution: only have an OSGi runtime with an HTTP-container (Jetty) on top of it • OSGI container with all other services / servers / .. as bundles within it (complete Equinox solution)
OpusCollege -> choice • OSGI container with all other services / servers / .. as bundles within it (complete Equinox solution)
OpusCollege -> choice • Wait with implementation: • Waiting for Apache Tomcat integration • First implement first final core version • First steps already now: • Start with structuring the application through several projects (modules): first one is Fees module • Bind the projects together with Ant -> one WAR-file • But: only small changes necessary for implementation as separate bundles
OpusCollege – new structure • Several projects: • 1 repository-project: repository • 1 or more modules: fee, scholarship • 1 core-project: college • 1 target-project: opus • All projects have their own build.xml
OpusCollege – new structure • Repository-project: • All libraries (as jar-files) of the core- and module-projects • Each library has a fixed structure with directories (see: mvnrepository.com) • Eclipse build path: you have to select all jars for order and export
OpusCollege – new structure • Module-project: • Default structure (maven-based): • Src/main/java • Src/test/java • Src/main/webapp/WEB-INF/modules/module-name • Src/main/webapp/WEB-INF/views/module-name • Has own configuration files: • Org.uci.opus.module-name/application.xml (context) • Org.uci.opus.module-name/messages.properties • Src/main/webapp/META-INF/MANIFEST.MF • Src/main/webapp/WEB-INF/modules/module-name/web-context.xml (applicationContext) • Eclipse build path: Dependency towards core and repository project
OpusCollege – new structure • Core-project: • Has everything a module-project has • Note: web-context.xml has some extra’s: • InternalResourceViewResolver • Interceptors: ModuleInterceptor • ModuleMessagesRegistrar • Extra (1): • webapp/WEB-INF/web.xml • With dispatcher-servlet: opus • webapp/WEB-INF/log4jconf/ • with debug.properties and warn.properties • webapp/WEB-INF/jdbc.properties • webapp/index.html
OpusCollege – new structure • Core-project: • Extra (2): • org.uci.opus.college.module package: • webapp/WEB-INF/SqlMapConfig.xml cannot be made statically, because it is build up dynamically: see CombinedSqlMapResource • Number of modules is counted dynamically and used throughout the application: see Module and ModuleInterceptor • Messages.properties files of core and modules are gathered together: see ModuleMessagesRegistrar
OpusCollege – project structure • Target project: • Nearly empty project, only with: • Applications-directory: here you specify the application you want (with one or more modules). Every application has it’s own build.xml, that uses common-build/application-targets.xml • Common-build-directory: here you specify the actions you have to perform for each application: • application-targets.xml: Clean target-project, copy application-files, compile • web-targets.xml: Create war-file • Eclipse build path: dependency towards repository-project
Eclipse projects - ‘bundles’ • Demo structure eclipse repository
Questions • ???