This slide deck will be removed from here in the future. It has been moved to : https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugins-for-liferay-6-2
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugins-for-liferay-6-2
1. Leveraging OSGi to Create
Extensible Plugins for Liferay 6.2
Eduardo García edupgv@
Julio Camarero juliocamarero@
Core Engineers at Liferay, Inc
Milen Dyankov milendyankov@
Senior Consultant at Liferay, Inc
12. we could…
Develop a very complex and
laborious application that
covers all possible cases
Release a new version every
time any shipping cost
algorithm changes or we add
new countries
Develop a simple core application
that covers only the common features
Make the application extensible
with country modules“ ”
If a shipping algorithm changes,
our core application remains
the same and only that specific
extension must be changed
13. will be the future of all
Liferay 7 applications ...
14. ... because it’s all advantages!
improves
maintainability
maximizes
reusability
simplification of
releases
(independent)
new market
opportunities
(extensions)
22. #1 OSGi bundles
(this is what our plug-ins are)
manifestmanifestmanifestmanifest manifest
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Shipping Impl
Bundle-SymbolicName: com.liferay.shipping.impl
Bundle-Vendor: Liferay, Inc.
Bundle-Version: 1.0.0
Private-Package: com.liferay.shipping.impl.model,com.liferay.shipping.impl.util
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))"
. . .
All modern build tools (Ant, Maven, Gradle, ...)
can build OSGi bundles!
So can Liferay SDK !
23. Package dependencies
(this is how we describe what we provide and expect)
Import-Package:
com.liferay.shipping.api.model,
com.liferay.shipping.api.util,
com.liferay.portal.kernel.io.unsync;resolution:=optional,
com.liferay.portal.kernel.util;resolution:=optional,
freemarker.cache;resolution:=optional,
freemarker.template;resolution:=optional
Export-Package:
com.liferay.shipping.api.model;version="1.0.0",
com.liferay.shipping.api.util;version="1.0.0"
manifestmanifestmanifestmanifest manifest
EXPORT EXPORT
#2
24. manifestmanifestmanifestmanifest manifest
EXPORT EXPORT
Package dependencies
(this is how we describe what we provide and expect)
Import-Package:
com.liferay.shipping.api.model,
com.liferay.shipping.api.util,
com.liferay.portal.kernel.io.unsync;resolution:=optional,
com.liferay.portal.kernel.util;resolution:=optional,
freemarker.cache;resolution:=optional,
freemarker.template;resolution:=optional
Export-Package:
com.liferay.shipping.api.model;version="1.0.0",
com.liferay.shipping.api.util;version="1.0.0"
#2
25. #2
manifestmanifestmanifestmanifest manifest
EXPORT EXPORT
Package dependencies
(this is how we describe what we provide and expect)
Import-Package:
com.liferay.shipping.api.model,
com.liferay.shipping.api.util,
com.liferay.portal.kernel.io.unsync;resolution:=optional,
com.liferay.portal.kernel.util;resolution:=optional,
freemarker.cache;resolution:=optional,
freemarker.template;resolution:=optional
Export-Package:
com.liferay.shipping.api.model;version="1.0.0",
com.liferay.shipping.api.util;version="1.0.0"
The BND tool (bnd.bndtools.org) can discover dependencies
and automatically generate export/import manifest headers!
Liferay SDK also allows you to use BND tool!
26. OSGi services
(this is how we provide and consume functionality)
manifestmanifestmanifest manifest
OSGi service registry
Interface
Service 1
...
Service N
#3
27. OSGi services
(this is how we provide and consume functionality)
manifestmanifestmanifest
OSGi service registry
Interface
Service 1
...
Service N
REGISTER
REGISTER
USE
manifest
#3
28. #3 OSGi services
(this is how we provide and consume functionality)
manifestmanifestmanifest
OSGi service registry
Interface
Service 1
...
Service N
REGISTER
REGISTER
USE
manifest
There are number of component frameworks on top of OSGi
(Declarative Services and Blueprint being part of the specs)
which greatly simplify the usage of services!
37. There is an extra step in Liferay 6.2
as not all dependencies are
provided!
You will NOT need to do this in
Liferay 7!
#0 Shipping application modules (bundles)
47. This approach is for Liferay 6.2 only !
It will change in Liferay 7 !
This approach is for Liferay 6.2 only !
It will change in Liferay 7 !
#3 Shipping application modules (bundles)
56. Send feedback!
Build your own OSGi modules
Learn more about OSGi
Try the samples yourself
https://github.com/epgarcia/liferay-plugins/commits/LRNAS2014.OSGI