apache felix web console
play

Apache Felix Web Console Carsten Ziegeler | cziegeler@apache.org - PowerPoint PPT Presentation

Apache Felix Web Console Carsten Ziegeler | cziegeler@apache.org ApacheCon NA 2014 About cziegeler@apache.org @cziegeler RnD Team at Adobe Research Switzerland Member of the Apache So fu ware Foundation Apache Felix and Apache


  1. Apache Felix Web Console Carsten Ziegeler | cziegeler@apache.org ApacheCon NA 2014

  2. About cziegeler@apache.org @cziegeler RnD Team at Adobe Research Switzerland • Member of the Apache So fu ware Foundation • Apache Felix and Apache Sling (PMC and commi tu er) • And other Apache projects • OSGi Core Platform and Enterprise Expert Groups • Member of the OSGi Board • Book / article author, technical reviewer, conference speaker • 2

  3. Problem Description § Manage an OSGi based application § Remotely § Easy of use § Extensibility § O ffl ine support 3

  4. Various Solutions § JMX § Text based § Apache Felix Shell, Apache Felix Gogo Shell § Knop fm er fj sh Shell § Equinox Console § OSGi RFC 147 (Command Line Interface) § GUI based § Knop fm er fj sh Desktop (Swing) § Apache Felix Web Console 4

  5. Apache Felix Web Console § Rich set of core functionality § Bundles § Services § Con fj guration Admin § System Information § JQuery based UI § Extensible § Pluggable authentication § Still light-weight 5

  6. Installation § Dependencies § OSGi H tu p Service § Commons IO 1.4 (*) § Commons File Upload 1.2 (*) § org.json (.e.g. Apache Geronimo Bundles: json-20090211) (*) § Two fm avors: bundle with and without above marked dependencies § Additional optional dependencies § Additional plugins 6

  7. Demo 7

  8. Extension Points § Branding § Translations § Security Provider § Plugins § Inventory Printer (Con fj guration Printer) 8

  9. Branding § Service Interface: BrandingPlugin § Default Branding: DefaultBrandingPlugin § Branding Fragment § /META-INF/webconsole.properties webconsole.brand.name = Apache Sling Web Console webconsole.product.name = Apache Sling webconsole.product.url = http://sling.apache.org webconsole.product.image = /res/sling/logo.png webconsole.favicon = /res/sling/favicon.ico § Sample § Sling Web Console Branding Plugin 9

  10. Translations § Out-of-the-box § Bulgarian, English, German, Russian § Extensible § Fragment to the Web Console § Based on Standard Bundle Localization § OSGI-INF/l10n/bundle*.properties 10

  11. Web Console Security § Secure access to the web console! § Consider blocking internet access § Con fj gure authentication 11

  12. Security Provider § Service interface: WebConsoleSecurityProvider § HTTP Basic Authentication Based § Validates Username / Password § Access Control (hook only) § Service Interface: WebConsoleSecurityProvider2 § Extends WebConsoleSecurityProvider § Flexible Authentication (implementing H tu pContext.handleSecurity) 12

  13. Security Provider § Implementations § Default: Single con fj gurable User § Apache Karaf: JAAS based authentication § Apache Sling § Authenticates against JCR Repository § Supports Sling Authentication Setup 13

  14. Security Provider § WebConsoleSecurityProvider, WebConsoleSecurityProvider2 § Web Console uses them for authentication § Methods for authorization not used atm § Authorization is on the road map for next version! 14

  15. Plugins § javax.servlet.Servlet service § Optional extend AbstractWebConsolePlugin or SimpleWebConsolePlugin § Service properties § felix.webconsole.label § felix.webconsole.title § felix.webconsole.category 15

  16. Sample Plugin #1 @Component @Service(value=HttpServlet.class class) @Properties({ @Property(name="felix.webconsole.label", value="sample"), @Property(name="felix.webconsole.title", value="Sample Plugin"), @Property(name="felix.webconsole.category", value="My App") }) public public class class SamplePlugin SamplePlugin extends extends HttpServlet HttpServlet { { @Override public public void void service( service(ServletRequest ServletRequest rq rq, , ServletResponse ServletResponse rs rs) throws throws ServletException ServletException, , IOException IOException { { rs.getWriter().println("Hello World..."); } } 16

  17. Sample Plugin #2 public class Sample2 extends SimpleWebConsolePlugin { public Sample2(BundleContext ctx) { super("sample2", "Sample Plugin #2", null); register (ctx); } @Override protected void renderContent( H tu pServletRequest req, H tu pServletResponse res) throws IOException { res.getWriter().println("Hi Ti ere ...") } } 17

  18. Plugins § Rendering: service(), doGet() or renderContent() § Interaction: service(), doPost() § UI: jQuery § Add own js, css as resources § Simple templating support 18

  19. Apache Felix Inventory § OSGi service providing status information § Bundle list, services, system properties etc. § Di ff erent formats: text, html, json § Optional a tu achments § Direct support in web console 19

  20. Inventory Printer Sample @Component @Service(value={InventoryPrinter.class class}) }) @Properties({ @Property(name=InventoryPrinter. NAME, value="slingjobs"), @Property(name=InventoryPrinter. TITLE, value="Sling Jobs"), @Property(name=InventoryPrinter. FORMAT, value={"TEXT", "JSON"}) }) public public class class InventoryPlugin InventoryPlugin implements implements InventoryPrinter InventoryPrinter { { public public void void print( print(final final PrintWriter PrintWriter pw, pw, final final Format format, Format format, final final boolean boolean isZip isZip) { ) { // print something // print something } } } Attachments: ZipAttachmentProvider 20

  21. O ffl ine Usage § Status zip contains § Output from all inventory printers § Output from special web console plugins § A tu achments § JSON fj les § Automated analysis § Bundle list and status § Con fj gurations § Log fj les 21

  22. Demo 22

  23. REST API § Today: Simple REST API § Bundles § Con fj g Admin § h tu p://felix.apache.org/documentation/subprojects/apache-felix-web-console/web- console-restful-api.html 23

  24. OSGi REST API § RFC 182 - REST Interface for OSGi § De fj nition of REST API for § Framework status § Framework operations § Bundle states § Bundle operations § Service states § Service operations 24

  25. OSGi REST API § RFC 182 - REST Interface for OSGi § Extension mechanism § Con fj g Admin? § Java client § Javascript client 25

  26. Apache Felix Web Console § Flexible and extensible administration console § Web based § Many plugins available § O ffl ine support § Planned major task § Authorization § REST support 26

Recommend


More recommend