MoSIG/ACS

Homeworks of the ACS module (MoSIG Master)

=WSDL= Inspect the Web service
 * http://www.webservicex.net/New/
 * http://www.webservicex.net/New/Home/ServiceDetail/56
 * http://www.webservicex.net/globalweather.asmx/GetCitiesByCountry
 * http://www.webservicex.net/globalweather.asmx?WSDL

=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=


 * http://www.openhab.org/getting-started/downloads.html


 * http://felix.apache.org/downloads.cgi


 * http://karaf.apache.org/download.html


 * https://maven.apache.org/download.cgi

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 OpenHAB

 * Install and run Eclipse Smarthome demo https://www.eclipse.org/smarthome
 * Launch the OSGi console
 * Inspect bundles
 * Inspect services
 * Listen to events (Event Admin)

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

start http://central.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo/1.12.1/org.apache.felix.ipojo-1.12.1.jar

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 ). ???

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=

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 ?