MoSIG/ACS: Difference between revisions

From air
Jump to navigation Jump to search
Line 263: Line 263:


==Deployment==
==Deployment==
Download the last binary distribution of Felix http://felix.apache.org/downloads.cgi
<pre>
<pre>
unzip org.apache.felix.main.distribution-5.6.1.zip
unzip org.apache.felix.main.distribution-5.6.1.zip

Revision as of 09:32, 13 December 2016

Homeworks of the ACS module (MoSIG Master)

WSDL

Inspect the Web service

UPnP

Kody Media Server

Install Kody Media Server https://kodi.tv/ (and activate DLNA/UPnP)


UPnP inspect

Discover UPnP devices and associated services with Node UPnP Client https://www.npmjs.com/package/node-upnp-client

Edit and save upnp-sniffer.js


var upnpClient = require('node-upnp-client');
var cli = new upnpClient();

//start search

cli.searchDevices();

// listen for search terminated

cli.on('searchDevicesEnd', function() {
	console.log('Servers'+ JSON.stringify(cli._servers))
});

// listen for added / removed devices

cli.on('updateUpnpDevice', function() {
	console.log('Servers'+ JSON.stringify(cli._servers))
});

node install node-upnp-client
node upnp-sniffer.js


UPnP node for Node-RED

Design a UPnP node for Node-RED platform

Choose the configurable properties

Choose the payload

Implement it (optional)

Try it (optional)

Contribute it (optional)

OSGi

Install and test Felix

Download the latest distribution of Felix

unzip org.apache.felix.main.distribution-5.6.1.zip
cd felix-framework-5.6.1/
java -jar bin/felix.jar 
help
lb
stop 1
lb
help
start 1
lb
help

What's happen ?

Install and test Karaf

Install and test OpenHAB

Install and test Glassfish

wget http://download.java.net/glassfish/4.1.1/release/glassfish-4.1.1.zip
unzip glassfish-4.1.1*zip
cd glassfish4
./bin/asadmin start-domain

Browse http://localhost:4848

Enable Gogo shell through telnet

./bin/asadmin create-jvm-options --target server -Dglassfish.osgi.start.level.final=3
./bin/asadmin restart-domain 

Edit the Felix config file

vi glassfish/osgi/felix/conf/config.properties

TBC

telnet localhost 6666

Getting started

iPOJO

Tutorial

Follow the tutorial http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html

Source code : http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.distribution.maventutorial/1.12.1/org.apache.felix.ipojo.distribution.maventutorial-1.12.1.zip

Training

0) Create a directory for the project (install Felix, Maven 3, Java 8 before)

mkdir ipojo_training
cd ipojo_training


1) Create 1 bundle containing a server component : generating the bundle skeleton with the iPOJO archetrype http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html


mvn archetype:generate -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.12.1

Define value for property 'groupId': : hello
Define value for property 'artifactId': : hello_server
Define value for property 'version':  1.0-SNAPSHOT: : 0.1.0-SNAPSHOT
Define value for property 'package':  hello: : hello.server

cd hello_server
mvn clean install
more bundle.properties 
more src/main/java/hello/server/HelloComponent.java 

2) Deploy the bundle on the running Felix framework Start Felix


cd felix-framework-5.6.1/
java -jar bin/felix.jar 

First commands

help
lb



??? 

inspect capability service BUNDLE_ID
inspect requirement service BUNDLE_ID


3) Add a HelloService interface in package hello.service with one public method String sayHello(String name) { ... } Add @Validate and @Invalide methods

https://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html

???


4) Add the interface to the server component

public class HelloComponent implements HelloService { ... }
???


5) Deploy the server bundle and inspect the provided service (inspect capabilities service <NUMBUNDLE>).

???

6) Create 1 bundle containing a client component : generating the bundle skeleton with the iPOJO archetrype


mvn archetype:generate -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.12.1

Define value for property 'groupId': : hello
Define value for property 'artifactId': : hello_client
Define value for property 'version':  1.0-SNAPSHOT: : 0.1.0-SNAPSHOT
Define value for property 'package':  hello: : hello.client

cd hello_client
mvn clean install

7) Modify the src/main/java/hello/server/HelloComponent.java invoking the sayHello() of the server component. (Hint: instanciate a thread during the @Validate and a) ???



UPnP and OSGi

UPnP Tester + Light Bulb
UPnP TV
UPnP Clock

Build UPnP samples

git clone https://github.com/apache/felix.git
cd felix
cd upnp
mvn clean install
cd samples
ls -al

Deployment

Download the last binary distribution of Felix http://felix.apache.org/downloads.cgi

unzip org.apache.felix.main.distribution-5.6.1.zip
cd felix-framework-5.6.1/
java -jar bin/felix.jar 

First commands

help
lb
inspect capability service 1
inspect requirement service 1

inspect capability service 0
inspect requirement service 0

help log
log info


Deployement with OBR: OBR is an OSGi service for automate the déployment of a bundle and its (explicit) dependencies. Bundles are downloaded, installed and started from repositories indexed in this document http://felix.apache.org/obr/releases.xml

obr:list
obr:info "Apache Felix UPnP Base Driver"
obr:deploy -s "Apache Felix UPnP Base Driver"
lb

How many bundles has been deployed by OBR ?

Uninstall the installed bundles with the command uninstall (argument is the bundle id/number).

Remark: Change /Users/donsez with your home directory echo $HOME.

start file:/Users/donsez/.m2/repository/org/apache/felix/org.apache.felix.upnp.sample.binaryLight/0.2.0-SNAPSHOT/org.apache.felix.upnp.sample.binaryLight-0.2.0-SNAPSHOT.jar
start file:/Users/donsez/.m2/repository/org/apache/felix/org.apache.felix.upnp.sample.clock/0.2.0-SNAPSHOT/org.apache.felix.upnp.sample.clock-0.2.0-SNAPSHOT.jar
start file:/Users/donsez/.m2/repository/org/apache/felix/org.apache.felix.upnp.sample.tv/0.2.0-SNAPSHOT/org.apache.felix.upnp.sample.tv-0.2.0-SNAPSHOT.jar

What's happen ?

obr:list
help obr:deploy
obr:deploy "Servlet 2.1 API"
obr:deploy "Apache Felix UPnP Extra"
obr:deploy -s "Apache Felix UPnP Base Driver"
obr:deploy -s "Apache Felix UPnP Tester"
lb

start 6
start 7
start 8
lb

What's happen ?