This tag contains all other elements of the manifest file. Furthermore the plugin id, the plugin version, the plugin vendor, the plugin class and the plugin docs path can be specified here, see Listing 6.2.
1
Listing 6.2: The tag defines the name od the plugin as well as the version number and the main class of the plugin.
All other plugins the current plugin depends on must be listed here. This means listing those plugins containing code or resources which are needed by the plugin. The ID of the imported plugin has to be declared and there are several attributes that can be defined, for example ”exported”, ”optional” and ”reverse-lookup”. If the attribute ”exported” is enabled plugins depending on the current plugin will be able to ”see” the imported plugin. Setting the attribute ”optional” means the imported plugin is not essential for this plugin, and thus no runtime exception is thrown if the plugin to be imported does not exist. When ”reverse-lookup” is set to true the imported plugin is also able to see the code of the current plugin. The default value of all three attributes is ”false”.
69
1 2 4 r e q u i r e s >
Listing 6.3: The tag declares the name of the plugin to be imported and whether plugins depending on the current plugin will be able to ”see” the imported plugin as well as whether the imported plugin is also able to see the code of the current plugin.
Code and resources which the plugin contributes to the application are specified here. The user has to define a name for the code or exported resource. Moreover the path to the resource or code has to be specified and it also has to be specified whether it is code or resource. A version may also be declared.
1 2 < l i b r a r y i d="jsp -api" path="lib/jsp -api.jar" type="code"> 3 4 l i b r a r y > 5
Listing 6.4: The tag contains tags which define the name and the path of code or resources of the plugin. It is also defined whether it should be allowed to export code or resources. The export tag means that this code (or resource) can be imported in another plugin. This manifest element specifies one or more points where other plugins can be plugged in. The extension point requires a name and the parent plugin id, the parent plugin point and the extension multiplicity may be declared. The extension multiplicity describes how many plugins may extend this extension point. There are four possibilities: • any: an arbitrary number of extensions can be added at this point. • one: just one extension can be added at this extension point. • one-per-plugin: only one extension of a plugin may be added. 70
• none: it is not possible to add an extension at this extension point because this is an abstract extension point that can only be inherited by another extension point. An extension point can also define parameters whose values must be provided by an extension. It is up to the user which parameters he wants or needs. A parameter may be a plugin id, a extension point id, a value from a predefined list, a number, a string, a date, a time, etc.
1 2 3 5 e x t e n s i o n −p o i n t >
Listing 6.5: The tag can define parameters whose values must be provided by an extension. It is up to the user which parameters he wants or needs.
The extension is the functionality that is added at the extension point. It must be specified in which plugin the extension is specified, the id of the extension point must be specified and the extension itself must be named. Also the values of the parameters which are expected by the extension point must be defined.
1 2 3 4 e x t e n s i o n >
Listing 6.6: The tag declares in which plugin the extension is specified. The id of the extension point must be specified and the extension itself must be named. Also the values of the parameters which are expected by the extension point must be defined.
The plugin fragment tag contains the manifest of a plugin fragment. A plugin fragment belongs to some plugin and contributes code and / or resources 71
to this plugin. A plugin fragment is simple a part of the plugin that has its own manifest file. Nevertheless the plugin and the plugin fragment are loaded with the same class loader. The plugin fragment must specify its id and among others attributes like version, docs path, vendor, the id and version of the plugin it belongs to.
1 3 4 < l i b r a r y i d= . . . / > 5 6 7 8 e x t e n s i o n > 9 10 ... 11 e x t e n s i o n > 12
Listing 6.7: The tag must specify its id and among others attributes like version
With the -tag documentation for any part of the plugin (runtime, plugin fragment, etc. ) may be created. Additional information may be provided to create something like a javadoc for plugins by automatically processing these tags. The documentation can be simple text or a link to another document.
1 2 3 4 Should implement i n t e r f a c e A 5 and have empty public c o n s t r u c t o r 6 7 8 e x t e n s i o n −p o i n t >
Listing 6.8: The tag enables the creation of documentation for any part of the plugin.
72
Bibliography
[1] Gaedke M and Rehse J. Supporting compositional reuse in component-based web engineering. In SAC ’00: Proceedings of the 2000 ACM symposium on Applied computing, 927–933, New York, NY, USA, 2000. ACM Press. [2] Krueger CW. Software reuse. ACM Computing Surveys, 24(2):131–183, 1992. [3] McIlroy D. Mass-produced software components. In Naur P and Randell B, editors, Software Engineering, 138–155. Scientific Affairs Division, NATO, 1968. Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7th to 11th October 1968. [4] Szyperski C. Component Software - Beyond Object-Oriented Programming. Addison-Weseley, Boston, MA, USA, 1999. [5] Brown AW and Wallnau KC. The Current State of CBSE. IEEE Software, 15(5):37–46, 1998. [6] Nierstrasz O and Lumpe M. Komponenten, komponentenframeworks und gluing. HMD - Theorie und Praxis der Wirtschaftsinformatik, 197:8–23, 1997. http://www.iam.unibe.ch/ scg/Archive/Papers/Nier97aKomponentenUndGluing.pdf. [7] Cai X, Lyu M, Wong K, and Ko R. Component-Based Software Engineering: Technologies, Development Frameworks and Quality Assurance Schemes. In APSEC ’00: Proceedings of the Seventh Asia-Pacific Software Engineering Conference, 372, Washington, DC, USA, 2000. IEEE Computer Society. [8] Graef G and Gaedke M. Construction of adaptive web-applications from reusable components. In EC-WEB ’00: Proceedings of the First
73
International Conference on Electronic Commerce and Web Technologies, 1–12, London, UK, 2000. Springer. [9] Martin L. Visuelles Komponieren und Testen von Komponenten am Beispiel von Agenten im elektronischen Handel. PhD thesis, University of Technology, Darmstadt, 2003. [10] Sametinger J. Classification of Compostition and Interoperation. Poster Session, OOPSLA ´96, San Jose, CA, 1996. http://www.se.jku.at/publications/pdf/TR-SE-96.17.pdf. [11] Schmietendorf A, Dumke R, Dimitrov E, and Nakonz S. Bewertungsaspekte der komponentenorientierten Softwareentwicklung am Beispiel von Java-Komponenten. Preprint, 2002. Fakult¨t f¨r a u Informatik, Otto-von-Guericke-Universit¨t Magdeburg. a [12] Frakes WB and Kang K. Software Reuse Research: Status and Future. IEEE Transactions on Software Engineering, 31(7):529–536, 2005. [13] Zenger M. Programming Language Abstractions for Extensible Software Components. PhD thesis, Swiss Federal Institute of Technology, Lausanne, 2004. [14] Atkinson C, B¨r H, Bayer J, Bunse C, Girard JF, Gross HG, a Kettemann S, Kolb R, K¨hne T, Romberg T, Seng O, Sody P, and u Tolzmann E. Handbuch zur komponentenbasierten Softwareentwicklung. Fraunhofer Institut Experimentelles Software Engineering, Kaiserslautern, 2003. http://app2web.fzi.de/themen/ap4/cbse handbuch.pdf. [15] Ramel S. Software Reuse in Free Software: State-of-the-Art. http://libre.tudor.lu/results/FOSSSoftwareReuse-StateOfTheArtv1.0.pdf, 2005. [16] Monroe RT and Garlan T. Style-based reuse for software architectures. In ICSR ’96: Proceedings of the 4th International Conference on Software Reuse, 84, Washington, DC, USA, 1996. IEEE Computer Society. [17] Gamma E, Helm R, Johnson R, and Vlissides J. Design Patterns Elements of Reusable Object-Oriented Software. Addison-Weseley, Boston, MA, USA, 1998.
74
[18] Osterrieder C. Komponentenmodelle f¨r Web-Anwendungen. Master’s u thesis, University of Salzburg, 2004. [19] Object Management Group. Common Object Request Broker Architecture: Core Specification, 2004. http://www.omg.org/technology/documents/corba spec catalog.htm . [20] McHale C. CORBA Explained Simply. Xhaus.com, Reading, UK, 2004. [21] COM: Component Object Model Technologies. http://www.microsoft.com/com/default.mspx
May 15th, 2007
[22] JavaBeans. http://java.sun.com/products/javabeans/
May 15th, 2007
[23] Sun Microsystems. Java Beans Specification, 1997. http://java.sun.com/products/javabeans/docs/spec.html. [24] Nickull D. Service Oriented Architecture, 2005. http://www.adobe.com/enterprise/ pdfs/Services Oriented Architecture from Adobe.pdf. [25] Ortiz S. Getting on board the Enterprise Service Bus. IEEE Computer, 40(4):15–17, 2007. [26] JBoss ESB. http://labs.jboss.com/jbossesb/
May 15th, 2007
[27] Severiens T. Tutorial: WebServices, 2003. http://www.akidpg.de/Dokumente/Bad Honnef 2003/webservicestutorial.pdf. [28] Spring Application Framework. http://www.springframework.org
May 15th, 2007
[29] Johnson R. Introduction to the Spring Framework, 2005. http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework. [30] Tate B and Gehtland J. Spring: A Developer’s Notebook. O’Reilly & Associates, Inc., Sebastopol, CA, USA, 2005.
75
[31] OSGI-The dynamic module system for Java. http://www.osgi.org
May 15th, 2007
[32] Spring-OSGI. http://www.springframework.org/osgi
May 15th, 2007
[33] Raible M. Spring-OSGI with Adrien Colyer, 2006. http://raibledesigns.com/rd/entry/tse spring osgi with adrian. [34] Open SOA Collaboration. Power Combination: SCA, OSGi and Spring, 2007. http://www.osoa.org/download/attachments/250/Power Combination SCA Spring OSGi.pdf?version=3. [35] Kolb B, Lippert M, and W¨therich G. Spring and OSGi: Plattform der u Zukunft, 2006. http://www.it-agile.com/fileadmin/docs/WJAX2006-SpringOSGi.pdf. [36] Overview of OSGi. http://www-sop.inria.fr/oasis/Proactive/doc/release-doc/html/OSGi.html
May 15th, 2007
[37] Keen M, Acharya A, Bishop S, Hopkins A, Milinski S, Nott C, Robinson R, Adams J, and Verschueren P. Patterns: Implementing an SOA Using an Enterprise Service Bus. IBM.Com/Redbooks, Armonk, NY, USA, 2004. http://www.redbooks.ibm.com/redbooks/pdfs/sg246346.pdf. [38] Sample Architectures. http://dev2dev.bea.com/pub/a/2006/01/ajax-portal-1.html?page=2
May 15th, 2007
[39] Wehner H. Was bringt ein Enterprise Service Bus, 2005. http://www.computerwoche.de/produkte technik/software/554063/. [40] Breitling H. Open Source Enterprise Service Busses, 2006. http://www.informatik.uni-hamburg.de/SWT/attachments/LVTermine/ ESB%20Begriffe%20Konzepte%20Standards.pdf. [41] WebSphere Software. http://www306.ibm.com/software/info1/websphere/index.jsp?tab=integration/esb
May 15th, 2007
76
[42] Enterprise Service Bus. http://www.oracle.com/appserver/esb.html
May 15th, 2007
[43] BEA AquaLogic Service Bus. http://www.bea.com
May 15th, 2007
[44] Olshansky D. Java Plugin Framework. http://jpf.sourceforge.net
May 15th, 2007
[45] Eclipse. http://www.eclipse.org
May 15th, 2007
[46] Olshansky D. Emersion Platform. http://emersion.sourceforge.net
May 15th, 2007
[47] The Apache Ant Project. http://ant.apache.org/
May 15th, 2007
[48] Javadoc Tool. http://java.sun.com/j2se/javadoc/
May 15th, 2007
[49] JBoss. http://labs.jboss.com/jbossas/
May 15th, 2007
[50] JBoss Application Server - Standards Based Infrastructure for the Enterprise, 2005. http://www.jboss.com/pdf/JBossAS-EnterpriseInfrastructure.pdf. [51] Azoff M. Application Server Technology AUDIT, 2005. http://www.jboss.com/pdf/JBossAS-ButlerTechAudit.pdf. [52] JBoss Group. Getting started with JBoss 4.0, 2006. http://docs.jboss.org/jbossas/getting started/v5/html/. [53] JBoss Group. The JBoss 4 Application Server Guide, 2006. http://docs.jboss.org/jbossas/jboss4guide/r5/html/.
77
[54] JBossClassLoadingUseCases. http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossClassLoadingUseCases
May 15th, 2007
[55] Embedded JBoss. http://wiki.jboss.org/wiki/Wiki.jsp?page=EmbeddedJBoss
May 15th, 2007
[56] Burke B. Embedded JBoss: JBoss without the Application Server. http://blogs.jboss.com/
May 15th, 2007
[57] OMG Model Driven Architecture. http://www.omg.org/mda/
May 15th, 2007
[58] AndroMDA. http://www.andromda.org
May 15th, 2007
[59] Truskaller T. Data Integration into a Gene Expression Database. Master’s thesis, University of Technology, Graz, 2003. [60] Relational Persistence for Java and .NET. http://www.hibernate.org
May 15th, 2007
[61] Package org.jboss.ejb3.embedded. http://docs.jboss.org/ejb3/embedded/api/org/jboss/ejb3/embedded/packagesummary.html
May 15th, 2007
[62] Khire A, Liu L, and Naderzad A. Service Oriented Architecture using Open ESB. http://www.snpnet.com/customer pub/sun/SOA OpenESB/
May 15th, 2007
[63] Service Oriented Business Integration. http://java.sun.com/integration/openesb2 0/index.jsp
May 15th, 2007
[64] Open ESB. https://open-esb.dev.java.net/
May 15th, 2007
[65] JBoss ESB 4.0 GA Programmers Guide, 2006. http://labs.jboss.com/jbossesb/docs/4.0GA/manuals/html/ProgrammersGuide.html.
78