Recherche
...
| Remarque |
|---|
Fichier {_}{color} {note} Fichiersrc/main/resources/META-INF/MANIFEST.MF dans le projet {note} Le fichierprojet |
Le fichier MANIFEST.MF
...
est
...
le
...
fichier
...
de
...
configuration
...
principal
...
d'un
...
plugin
...
OSGI.
Exemple :
| Bloc de code |
|---|
Exemple : Manifest-Version: 1.0 *Bundle-ManifestVersion*: 1 *Bundle-Name*: Nuxeo Sample project *Bundle-SymbolicName*: org.orioai.nuxeo.workflow;_singleton_:=true *Bundle-Version*: 1.0.0 *Bundle-Vendor*: ORI-ORI.org *Provide-Package*: org.orioai.nuxeo.workflow *Require-Bundle*: org.nuxeo.runtime, org org.nuxeo.ecm.core.api, org org.nuxeo.ecm.core, org org.nuxeo.ecm.webapp.core Nuxeo-Component: OSGI-INF/core-types-contrib.xml, OSGI OSGI-INF/actions-contrib.xml, OSGI OSGI-INF/orioaiworkflow-service-contrib.xml, OSGI OSGI-INF/wsdl-orioaiworkflow-contrib.xml, OSGI OSGI-INF/orioainuxeo2xml-service-contrib.xml, OSGI OSGI-INF/xsl-orioainuxeo2xml-contrib.xml *Bundle-ClassPath*: qname.jar *Import-Package*: javax.xml.namespace h2. Explications h3. Information générale sur le plugin \\ | | | | Bundle-SymbolicName | ID | | Bundle-Version | Version | | Bundle-Name | Nom | | Bundle-Vendor | Fournisseur | Gestion de dépendances | Provide-Package | Chaîne de caractère qui devra être utilisé par des plugin qui seront dépendant de ce plugin | | Require-Bundle | Liste des plugins dont est dépendant le plugin courant. Cette liste influera sur l'ordre de chargement des plugins au démarrage de nuxeo | Autres paramètres | Nuxeo-Component | Autres fichiers, appelés XML descriptor, de configuration du plugin. Ils servent à spécifier les points d'extension utilisés par le plugin et/ou à spécifier les points d'extension exposés par le plugin | | Bundle-ClassPath | Liste de répertoires ou de jar à charger pour la bonne exécution du plugin | | Import-Package | ??? | h1. {color:#000000}{_}XML descriptor{_}{color} {note} Fichiers |
Bundle-SymbolicName | ID |
Bundle-Version | Version |
Bundle-Name | Nom |
Bundle-Vendor | Fournisseur |
Provide-Package | Chaîne de caractère qui devra être utilisé par des plugin qui seront dépendant de ce plugin |
Require-Bundle | Liste des plugins dont est dépendant le plugin courant. Cette liste influera sur l'ordre de chargement des plugins au démarrage de nuxeo |
Nuxeo-Component | Autres fichiers, appelés XML descriptor, de configuration du plugin. Ils servent à spécifier les points d'extension utilisés par le plugin et/ou à spécifier les points d'extension exposés par le plugin |
Bundle-ClassPath | Liste de répertoires ou de jar à charger pour la bonne exécution du plugin |
Import-Package | ??? |
| Remarque |
|---|
Fichiers src/main/resources/OSGI-INF/*-contrib.xml dans le projet {note} Ce sont les fichiers spécifiés dansprojet |
Ce sont les fichiers spécifiés dans Nuxeo-Component
...
du
...
fichier
...
MANIFEST.MF
...
Ils
...
servent
...
à
...
spécifier
...
les
...
points
...
d'extension
...
utilisés
...
par
...
le
...
plugin
...
et/ou
...
à
...
spécifier
...
les
...
points
...
d'extension
...
exposés
...
par
...
le
...
plugin.
...
Par
...
convention
...
ils
...
sont
...
de
...
la
...
forme :
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Le
...
développement
...
des
...
points
...
d'extension
...
est
...
traité
...
dans ???
...
mais
...
voici
...
2
...
exemples
...
de
...
fichiers
...
XML
...
descriptor.
...
...
| Bloc de code |
|---|
<?xml version="1.0"?> <component name="org.orioai.nuxeo.workflow.core-types"> <extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema"> <schema name="ori" src="schemas/ori.xsd" prefix="ori" /> </extension> <extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype"> <doctype name="File" extends="Document"> <schema name="common" /> <schema name="file" /> <schema name="dublincore" /> <schema name="uid" /> <schema name="files" /> <schema name="ori" /> <facet name="Downloadable" /> <facet name="Versionable" /> <facet name="Publishable" /> <facet name="Indexable" /> <facet name="Commentable" /> </doctype> </extension> </component> |
...
/component@name |
...
Nom |
...
du |
...
composent. |
...
|
...
nom |
...
prend |
...
la |
...
forme |
...
d'une |
...
classe |
...
java |
...
mais |
...
il |
...
ne |
...
s'agit |
...
pas |
...
obligatoirement |
...
d'une |
...
classe. |
...
En |
...
effet, |
...
le |
...
plus |
...
souvent, |
...
on |
...
étend |
...
un |
...
point |
...
d'extension |
...
pour |
...
lui |
...
passer |
...
des |
...
paramètres |
...
de |
...
configuration. |
...
/component/extension@target |
...
Nom |
...
du |
...
composant |
...
que |
...
l'on |
...
va |
...
étendre. |
...
Correspond |
...
au |
...
/component@name |
...
du |
...
point |
...
d'extension |
...
utilisé. |
...
/component/extension@point |
...
Un |
...
composant |
...
peut |
...
contenir |
...
plusieurs |
...
points |
...
d'extension |
...
utilisables. |
...
On |
...
spécifie |
...
avec |
...
ce |
...
paramètre |
...
celui |
...
que |
...
l'on |
...
veut |
...
étendre. |
...
/component/extension/ |
...
* |
...
Liste |
...
des |
...
informations |
...
que |
...
l'on |
...
va |
...
passer |
...
un |
...
point |
...
d'extension |
...
que |
...
l'on |
...
étend. |
...
Cette |
...
liste |
...
est |
...
spécifique |
...
à |
...
chaque |
...
point |
...
d'extension. |
...
...
...
| Bloc de code |
|---|
xml : <?xml version="1.0"?> <component name="org.orioai.nuxeo.workflow.OriOaiWorkflowService"> <implementation <implementation class="org.orioai.nuxeo.workflow.OriOaiWorkflowServiceMock" /> <service> <provide <service> <provide interface="org.orioai.nuxeo.workflow.OriOaiWorkflowService" /> </service> <documentation>explication sur le service</documentation> <extension-point name="wsUrl"> <documentation>explication sur le point d'extension</documentation> <object class="org.orioai.nuxeo.workflow.WsDescriptor" /> </extension-point> </component> |
...
/component@name |
...
Nom |
...
du |
...
composent. |
...
|
...
nom |
...
prend |
...
la |
...
forme |
...
d'une |
...
classe |
...
java. |
...
Une |
...
bonne |
...
pratique |
...
consiste |
...
à |
...
utiliser |
...
ici |
...
la |
...
même |
...
valeur |
...
que |
...
pour |
...
/component/service/provider@interface |
...
/component/implementation@class |
...
Classe |
...
java |
...
concrète |
...
implémentant |
...
le |
...
service |
...
/component/service/provider@interface |
...
Nom |
...
de |
...
l'interface |
...
java |
...
qui |
...
est |
...
implémentée |
...
par |
...
/component/implementation@class |
...
/component/documentation |
...
Texte |
...
d'information |
...
sur |
...
le |
...
service. |
...
Il |
...
est |
...
utile |
...
pour |
...
les |
...
personnes |
...
qui |
...
seront |
...
amenés |
...
à |
...
travailler |
...
avec |
...
votre |
...
point |
...
d'extension. |
...
Il |
...
est |
...
utilisé |
...
pour |
...
la |
...
génération |
...
automatique |
...
de |
...
la |
...
documentation |
...
de |
...
référence |
...
sur |
...
les |
...
points |
...
d'extension. |
...
/component/extension-point@name |
...
Nom |
...
du |
...
point |
...
d'extension |
...
offert |
...
par |
...
le |
...
composant. |
...
Il |
...
peut |
...
y |
...
avoir |
...
plusieurs |
...
balises |
...
/component/extension-point |
...
/component/extension-point/documentation |
...
Texte |
...
d'information |
...
sur |
...
le |
...
point |
...
d'extension |
...
/component/extension-point/object |
...
Nom |
...
du |
...
bean |
...
qui |
...
contiendra |
...
les |
...
configurations |
...
du |
...
point |
...
d'extension |
...
lorsqu'il |
...
sera |
...
étendu. |
|
| Remarque |
|---|
Fichiers | h1. {color:#000000}{_}Déploiement fragment{_}{color} {note} Fichierssrc/main/resources/OSGI-INF/deployment-fragment.xml dans le projet {note} Une application web java classique a des fichiers de configuration qui sont lus au lancement du serveurprojet |
Une application web java classique a des fichiers de configuration qui sont lus au lancement du serveur d'applications.
...
De
...
même,
...
les
...
fichiers
...
de
...
ressources
...
ou
...
les
...
librairies
...
sont
...
lus
...
au
...
lancement.
...
Ceci
...
n'est
...
pas
...
compatible
...
avec
...
la
...
notion
...
de
...
plugin.
...
En
...
effet,
...
un
...
plugin
...
se
...
matérialise
...
par
...
un
...
simple
...
fichier
...
jar
...
qui
...
sera
...
chargé
...
en
...
fonction
...
des
...
règles
...
de
...
dépendances
...
définies
...
dans
...
le
...
fichier
...
MANIFEST.MF.
...
Il
...
peut
...
néanmoins
...
nécessiter
...
des
...
ressources
...
spécifiques
...
ou
...
une
...
configuration
...
particulière
...
de
...
l'application
...
java
...
qui
...
la
...
contient.
...
Le
...
fichier
...
deployment-fragment.xml
...
permet
...
justement
...
de
...
spécifier
...
comment
...
le
...
plugin
...
va
...
adapter
...
l'environnement
...
d'exécution
...
java
...
dans
...
lequel
...
il
...
sera
...
appelé.
Exemple :
| Bloc de code |
|---|
Exemple : <?xml version="1.0"?> <fragment> <extension target="application#MODULE"> <module> <java>$\{bundle.fileName}</java> </module> </extension> <extension target="web#CONTEXT-PARAM"> <context-param> <param-name>org.jboss.seam.core.init.debug</param-name> <param-value>true</param-value> </context-param> </extension> <install> <\!-\- Unzip the war template \--> <unzip from="$\{bundle.fileName}" to="/"> <include>nuxeo.war/*\*</include> </unzip> <\!-\- Append .properties files \--> <delete path="orioainuxeodir.tmp" /> <mkdir path="orioainuxeodir.tmp" /> <unzip from="$\{bundle.fileName}" to="orioainuxeodir.tmp"> <include>\**/*.properties</include> </unzip> <append from="orioainuxeodir.tmp/OSGI-INF/l10n/messages.properties" to="nuxeo.war/WEB-INF/classes/messages.properties" addNewLine="true" /> <append from="orioainuxeodir.tmp/OSGI-INF/l10n/messages_fr.properties" to="nuxeo.war/WEB-INF/classes/messages_fr.properties" addNewLine="true" /> <delete path="orioainuxeodir.tmp" /> </install> </fragment> Explications : | |
/fragment/extension@target |
...
Nuxeo |
...
utilise |
...
des |
...
fichiers |
...
templates |
...
(dans |
...
le |
...
répertoire |
...
nuxeo.ear/OSGI-INF/templates). |
...
la propriété /fragment/extension@target |
...
permet |
...
de |
...
cibler |
...
ce |
...
fichier |
...
(partie |
...
avant |
...
le |
...
# |
...
sans |
...
l'extension |
...
.xml) |
...
ainsi |
...
que |
...
le |
...
positionnement |
...
dans |
...
ce |
...
fichier |
...
(partie |
...
après |
...
le |
...
# |
...
qui |
...
permet |
...
de |
...
pointer |
...
sur |
...
une |
...
balise |
...
de |
...
la |
...
forme |
...
%{MODULE}%) |
...
/fragment/extension/ |
...
* |
...
Portion |
...
de |
...
XML |
...
qui |
...
sera |
...
intégrée |
...
dans |
...
le |
...
fichier |
...
template |
...
/fragment/install |
...
Contient |
...
du |
...
code |
...
de |
...
type |
...
ant |
...
permettant |
...
de |
...
faire |
...
certaines |
...
actions |
...
sur |
...
le |
...
système |
...
de |
...
fichiers |
...
de |
...
l'application. |
...
|
...
de |
...
notre |
...
projet |
...
vers |
...
le |
...
répertoire |
...
d'exécution |
...
de |
...
l'application |
...
java |
...
|
Note à propos de ${bundle.fileName} |
...
${bundle.fileName} |
...
correspond |
...
au |
...
fichier |
...
jar |
...
du |
...
plugin |
...
courant |
| Remarque |
|---|
répertoire {_}{color} {note} répertoiresrc/main/resources/nuxeo.war dans le projet {note} Ce répertoire contientprojet |
Ce répertoire contient l'ensemble
...
des
...
fichiers
...
(pages
...
JSP
...
en
...
.xtml,
...
image,
...
etc.)
...
qui
...
seront
...
déployés
...
dans
...
le
...
répertoire
...
d'exécution
...
de
...
l'application
...
Web
...
de
...
nuxeo
...
grâce
...
au
...
deployment-fragment.xml.