Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Jetty/Tutorial/Jetty-OSGi SDK"
m |
m |
||
Line 76: | Line 76: | ||
[[Media:Org.eclipse.rt.example.test-1.0.0.qualifier.zip|Archive for this project]] | [[Media:Org.eclipse.rt.example.test-1.0.0.qualifier.zip|Archive for this project]] | ||
− | == | + | == Setup Jetty and a first Web-bundle == |
− | + | ||
− | + | ||
− | + | === Setup Jetty Target Component === | |
− | + | * Choose Preferences and Edit the "EclipseRT Tutorial" target platform definition | |
− | [[Image: | + | * Select the Helios site and choose "Edit" |
+ | * Add the "Jetty Target Component" feature to the list of features provisioned | ||
+ | [[Image:13-JOT-Target-Platform-add-jetty.png|center|Lazy Activation policy]] | ||
− | + | === Optional: install Jetty tooling === | |
− | + | The Jetty tooling feature contains 2 templates for Pluin projects that make it easy to get started developing web-bundles. | |
− | + | ||
− | + | === Create a first web-bundle === | |
− | + | Create a new OSGi bundle. Make sure it is not an eclipse plugin. Name it "org.eclipse.jetty.example.webapp" | |
− | + | ||
− | + | If you have installed the Jetty tooling feature, click next until you can choose a template. Everything will be generated. | |
− | + | ||
− | + | ||
− | The | + | If you are creating the bundle with the jetty template you will need to add to the MANIFEST.MF: |
− | < | + | * The import-package: <source>javax.servlet;version="2.5.0"</source> |
+ | * A new line that defines the context path for the web-application: <source>Web-ContextPath: /test</source> | ||
+ | It should look like this: | ||
+ | <source> | ||
+ | Manifest-Version: 1.0 | ||
+ | Bundle-ManifestVersion: 2 | ||
+ | Bundle-Name: Webapp | ||
+ | Bundle-SymbolicName: org.eclipse.jetty.example.webapp | ||
+ | Bundle-Version: 1.0.0.qualifier | ||
+ | Bundle-Activator: org.eclipse.jetty.example.webapp.Activator | ||
+ | Import-Package: org.osgi.framework;version="1.3.0", | ||
+ | javax.servlet;version="2.5.0" | ||
+ | Bundle-RequiredExecutionEnvironment: JavaSE-1.6 | ||
+ | Web-ContextPath: /test | ||
+ | </source> | ||
− | + | * Now create a new file WEB-INF/web.xml at the root of the project. | |
− | + | And define a simple servlet-mapping: | |
− | + | ||
− | + | <source lang="xml"> | |
− | + | ||
− | + | ||
− | < | + | |
− | + | </source> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| more = [[Jetty/Feature/Jetty_OSGi|Jetty-OSGi]], RFC66, PDE | | more = [[Jetty/Feature/Jetty_OSGi|Jetty-OSGi]], RFC66, PDE |
Revision as of 23:32, 7 June 2010
Contents
Introduction
Jetty-OSGi is a packaging of jetty where jetty is run as an OSGi bundle. It supports the deployment of traditional J2EE web-applications and also web-bundles where the web application is contained in a bundle.
This tutorial introduces the development and testing of web-bundles in PDE.
Configure a Target Platform and run a simple Test Unit with PDE
We will provision a new Target Platform and develop a simple bundle that executes a Testunit. A Target Platform defines the OSGi environment in which your bundles are compiled and debugged.
Target Platform with JUnit Support
Launch Eclipse-SDK-3.6. Define a new Target Platform "EclipseRT-Tutorial" Open the Preferences and choose the node "Plugins-Development/Target Platform" Click on "Add..." and choose the option "Nothing:" start with an empty Target Platform"
- Name the Target Platform "EclipseRT Tutorial"
- Click on Next and choose "Add..." then "Select Software Site"
- Select the "Helios" download site as the source of the features to install in the Target Platform
- Look for the category "Eclipse RT Target Platform" and select the PDE JUnit Support feature. Click on Finish.
(Currently use: http://download.eclipse.org/jetty/7.1.3.v20100526/repository/)
- Select the new Target Platform as the active platform.
OSGi bundle with a test unit
- Create a new OSGI Bundle project: "New Project.../Plugin-Project"
- Name the project "org.eclipse.jetty.rt.example.test"
- Choose a pure OSGi bundle.
- Generate a bundle activator.
- Click on Finish.
- Open the META-INF/MANIFEST.MF editor and on the tab "Overview, select the checkbox "Activate this plugin when one of its classes is loaded"
- Open the META-INF/MANIFEST.MF editor and choose the tab "dependencies"
- In the "Imported packages" section, click on "Add..." and select the package "org.junit"
- Create a new class ActivatorTest
- Make a method that will be run by JUnit to test that the activator is started:
package org.eclipse.jetty.rt.example.test; import org.junit.Assert; import org.junit.Test; /** * Tests that the activator was indeed loaded */ public class ActivatorTest { @Test public void testActivator() throws Exception { Assert.assertNotNull("The activator was not started", Activator.getContext()); } }
- Right-click on the Activator-Test Class and choose "Run as .../JUnit Plugin Test"
- The test should pass
Setup Jetty and a first Web-bundle
Setup Jetty Target Component
- Choose Preferences and Edit the "EclipseRT Tutorial" target platform definition
- Select the Helios site and choose "Edit"
- Add the "Jetty Target Component" feature to the list of features provisioned
Optional: install Jetty tooling
The Jetty tooling feature contains 2 templates for Pluin projects that make it easy to get started developing web-bundles.
Create a first web-bundle
Create a new OSGi bundle. Make sure it is not an eclipse plugin. Name it "org.eclipse.jetty.example.webapp"
If you have installed the Jetty tooling feature, click next until you can choose a template. Everything will be generated.
If you are creating the bundle with the jetty template you will need to add to the MANIFEST.MF:
- The import-package:
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, otj, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
javax.servlet;version="2.5.0"
- A new line that defines the context path for the web-application:
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, otj, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
Web-ContextPath: /test
It should look like this:
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, otj, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Webapp Bundle-SymbolicName: org.eclipse.jetty.example.webapp Bundle-Version: 1.0.0.qualifier Bundle-Activator: org.eclipse.jetty.example.webapp.Activator Import-Package: org.osgi.framework;version="1.3.0", javax.servlet;version="2.5.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Web-ContextPath: /test
- Now create a new file WEB-INF/web.xml at the root of the project.
And define a simple servlet-mapping:
Additional Resources
Jetty-OSGi, RFC66, PDE We are working on migrating all building an update site and executing the build on eclipse with the rest of the jetty@eclipse project. In the mean time, the latest code is here: [http://github.com/intalio/hightide-on-osgi