MoSIG/ACS: Difference between revisions
| Line 151: | Line 151: | ||
0) Create a directory for the project |
0) Create a directory for the project (install Felix, Maven 3, Java 8 before) |
||
<pre>mkdir ipojo_training |
<pre>mkdir ipojo_training |
||
cd ipojo_training |
cd ipojo_training |
||
</pre> |
</pre> |
||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
mvn archetype:generate -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.12.1 |
mvn archetype:generate -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.12.1 |
||
| Line 171: | Line 171: | ||
more bundle.properties |
more bundle.properties |
||
more src/main/java/hello/server/HelloComponent.java |
more src/main/java/hello/server/HelloComponent.java |
||
</pre> |
|||
2) Deploy the bundle on the running Felix framework |
2) Deploy the bundle on the running Felix framework |
||
<pre> |
|||
??? |
|||
</pre> |
|||
3) Add a HelloService interface in package hello.service with one public method String sayHello(String name) { ... } |
3) Add a HelloService interface in package hello.service with one public method String sayHello(String name) { ... } |
||
| Line 178: | Line 184: | ||
https://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html |
https://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html |
||
<pre> |
|||
??? |
|||
</pre> |
|||
4) Add the interface to the server component |
4) Add the interface to the server component |
||
<pre> |
|||
public class HelloComponent implements HelloService { ... } |
public class HelloComponent implements HelloService { ... } |
||
??? |
|||
</pre> |
|||
5) Deploy the server bundle and inspect the provided service (inspect capabilities service <NUMBUNDLE>). |
5) Deploy the server bundle and inspect the provided service (inspect capabilities service <NUMBUNDLE>). |
||
<pre> |
|||
??? |
|||
</pre> |
|||
6) Create 1 bundle containing a client component : generating the bundle skeleton with the iPOJO archetrype |
6) Create 1 bundle containing a client component : generating the bundle skeleton with the iPOJO archetrype |
||
<pre> |
|||
mvn archetype:generate -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.12.1 |
mvn archetype:generate -DarchetypeGroupId=org.apache.felix -DarchetypeArtifactId=maven-ipojo-plugin -DarchetypeVersion=1.12.1 |
||
| Line 195: | Line 215: | ||
cd hello_client |
cd hello_client |
||
mvn clean install |
mvn clean install |
||
</pre> |
|||
7) Modify the src/main/java/hello/server/HelloComponent.java invoking the sayHello() of the server component. |
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) |
(Hint: instanciate a thread during the @Validate and a) |
||
??? |
|||
</pre> |
|||
Revision as of 09:19, 13 December 2016
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
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 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
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
???
3) Add a HelloService interface in package hello.service with one public method String sayHello(String name) { ... }
Add @Validate and @Invalide methods
???
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
Build UPnP samples
git clone https://github.com/apache/felix.git cd felix cd upnp mvn clean install cd samples ls -al
Deployment
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 ?