Differences between revisions 2 and 3
Revision 2 as of 2008-07-08 22:14:05
Size: 6093
Editor: KeiichiroOno
Comment:
Revision 3 as of 2008-07-08 22:18:13
Size: 6148
Editor: KeiichiroOno
Comment:
Deletions are marked like this. Additions are marked like this.
Line 96: Line 96:
and then import the project from '''''File &arr Import'''''. and then import the project from '''''File &rarr Import'''''.

-- KeiichiroOno [[DateTime(2008-07-08T22:18:11Z)]]

TableOfContents

Introduction

[http://wiki.ops4j.org/confluence/display/ops4j/Pax Pax] is a project to develop tools for OSGi bundles. Pax-Construct, which is a part of Pax project, is a tool to create, build, manage and deploy OSGi bundles. The basic idea is that instead of writing all pom.xml files manually, generate those using simple shell commands.

Create New OSGi Project

  • Install Pax-Construct - Essentially, Pax-Construct is a collection of scripts, so you can install this by uncompress the zip file somewhere on your local disk space, and set the path to the directory. For example, if you unzip the pax-construct version 1.3 to PAX_HOME, you need to set the path to:

PAX_HOME/pax-construct-1.3/bin
  • Create Project - You can run the following shell script to create a sample Spring-OSGi project named project1.

##############################################
# Template for Spring-OSGi projects #
##############################################

# (1) Create Project "project1"
pax-create-project -g org.cytoscape -a project1
cd project1

# (2) Add SpringSource Enterprise Bundle Repositories
pax-add-repository -i com.springsource.repository.bundles.release -u http://repository.springsource.com/maven/bundles/release
pax-add-repository -i com.springsource.repository.bundles.external -u http://repository.springsource.com/maven/bundles/external

# (3) Import required bundles
pax-import-bundle -g org.springframework.osgi -a org.springframework.osgi.extender -v 1.1.0 -- -DimportTransitive -DwidenScope
pax-import-bundle -g org.slf4j -a com.springsource.slf4j.simple -v 1.5.0
pax-import-bundle -g org.slf4j -a com.springsource.slf4j.api -v 1.5.0
pax-import-bundle -g org.aopalliance -a com.springsource.org.aopalliance -v 1.0.0
pax-import-bundle -g org.objectweb.asm -a com.springsource.org.objectweb.asm -v 3.1.0

# (4) Create bundles
pax-create-bundle -p org.cytoscape.helloservice1 -- -Djunit
pax-create-bundle -p org.cytoscape.helloservice2 -- -Dspring -Djunit
pax-create-bundle -p org.cytoscape.helloserviceuser -- -Dspring -Djunit

# (5) Build and run the project
mvn clean install pax:provision

Details

  1. pax-create-project command creates a new OSGi project in the current working directory. By -g option, you can specify group id of this project.

  2. In general, you CANNOT use existing library files (jar files registered at the maven central repository) as OSGi bundle. There are two options to solve this problem:

    • Wrap existing jar files by pax-wrap-jar command

    • Use OSGi bundle repository instead of maven central repository

    In this example, I used the second option. pax-add-repository command adds an additional maven repository location to the pom file. SpringSource manages a maven repository [http://www.springsource.com/repository/app/ SpringSource Enterprise Bundle Repository], which is a repository of OSGi bundles. All library files in this repository are wrapped as OSGi bundles.

  3. pax-import-bundle command automatically generates <dependency> statement in the project pom file. In this example, bundles required to run [http://www.springframework.org/osgi Spring Dynamic Modules] are imported.

  4. This section contains the actual statements to generate templates for your bundles. pax-create-bundle commands generates minimal set of files to start writing OSGi bundle. If you do not specify the option, a simple bundle with BundleActivator and an OSGi service will be created. If -Dspring option is specified, an example Spring Bean and XML files to setup Spring-based OSGi services will be created.

  5. Pax is also available as maven plugin. Anytime after you build the bundles by mvn clean install command, you can run your bundles by mvn pax:provision. This command automatically setup [http://felix.apache.org/site/index.html Apache Felix] to run your bundles.

After you run the script, you will see the prompt (if not, hit enter). Type ps and you can check the current status of the bundles:

-> ps
START LEVEL 6
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.0.4)
[   1] [Active     ] [    5] Spring DM Extender (1.1.0)
[   2] [Active     ] [    5] Apache Commons Logging (1.1.1)
[   3] [Active     ] [    5] Spring Beans (2.5.5.A)
[   4] [Active     ] [    5] Spring Context (2.5.5.A)
[   5] [Active     ] [    5] Spring Core (2.5.5.A)
[   6] [Active     ] [    5] Spring DM Core (1.1.0)
[   7] [Active     ] [    5] Spring AOP (2.5.5.A)
[   8] [Active     ] [    5] Spring DM IO (1.1.0)
[   9] [Active     ] [    5] SLF4J Simple Binding (1.5.0)
[  10] [Active     ] [    5] SLF4J API (1.5.0)
[  11] [Active     ] [    5] AOP Appliance API (1.0.0)
[  12] [Active     ] [    5] ObjectWeb ASM (3.1.0)
[  13] [Active     ] [    5] org.cytoscape.helloservice1 (1.0.0.SNAPSHOT)
[  14] [Active     ] [    5] org.cytoscape.helloservice2 (1.0.0.SNAPSHOT)
[  15] [Active     ] [    5] org.cytoscape.helloserviceuser (1.0.0.SNAPSHOT)
[  16] [Active     ] [    1] osgi.compendium (4.0.1)
[  17] [Active     ] [    1] Apache Felix Shell Service (1.0.1)
[  18] [Active     ] [    1] Apache Felix Shell TUI (1.0.1)

At this point, all bundles you have created by the script are running and they are assigned IDs (13, 14, and 15). Type services 13:

-> services 13

org.cytoscape.helloservice1 (13) provides:
------------------------------------------
objectClass = org.cytoscape.helloservice1.ExampleService
service.id = 23

services command in the Felix shell shows a list of services running now. The example above shows an OSGi service named ExampleService is successfully registered at the OSGi service repository.

Now you are ready to write your code for the bundles. If you use Eclipse, use

mvn pax:eclipse

and then import the project from File &rarr Import.

-- KeiichiroOno DateTime(2008-07-08T22:18:11Z)

Outdated_Cytoscape_3.0/PAX (last edited 2011-02-24 16:30:47 by PietMolenaar)

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux