Hi all,

I've updated the nuxeo deployment so for now if you update from SVN you *must* deploy the application using the new ant scripts.

Before deploying Nuxeo please *remove* from jboss deploy directory All nuxeo files (including XML JAR EAR WAR SAR files).

To build and deploy the entire application run the target "deploy-ecm-all" from Nuxeo/build.xml To build and deploy only a minimal application (suitable for remote connections but without web interface)
run the target "deploy-ecm-all" from NXCoreFacade/build.xml
To build and deploy only the module in the project run the "deploy-ecm" target in the build.xml of the project To build and deploy only the Nuxeo ECM deployer and NXRuntime run the target "deploy-deployer" from NXJBossRuntime To build and deploy only the Nuxeo ECM deployer, NXRuntime + the nuxeo.nxp skeleton (template) run the target
"deploy-ecm" from NXJBossRuntime.

So, in general you will use the target deploy-ecm-all from Nuxeo/build.xml to deploy the entire application and then the deploy-ecm target for each project you want to update.


*Note* that you also need to deploy the custom URLComparator and dependency.order file because these are used by nxthemes EARs
You need to do this only the first time.

--------------

Some explanations about the deployment:

The Nuxeo deploy-ecm-all target will deploy the following files:
1. NXCommon.jar in jboss lib directory
2. nuxeo.deployer containing the deployer and NXRuntime in the deploy directory (a JAR archive)
3. A nuxeo.nxp folder in deploy directory
4. several nxthemes JARs and EARs in deploy directory

The nuxeo.nxp folder is a customized EAR archive that perform a preprocessing step before the deployment. After the preprocessing step is done the deployment is delegated to the original JBoss EAR deployer. The preprocessing is made to dynamically update or create the needed configuration files as application.xml, web.xml, faces-config.xml etc
and also to copy, delete, create or unzip files inside the EAR.

The preprocessing directives are specified by each deployable module using a deployment-feature.xml file. These files can be deployed as standalone XML files or inside a JAR in the /OSGI-INF directory.

The container (nuxeo.nxp) has a container descriptor OSGI-INF/deployment-container.xml file that specify some install commands and all configuration template files that can be updated by deployable modules (fragments).

If you look in the nuxeo.nxp folder before starting jboss (and just after running the deploy-ecm-all task) you will see that there is no nuxeo.war file
inside. This will be re-created at the each deploy by the preprocessor.
Also you don't have the META-INF/application.xml neither the META-INF/jboss-app.xml These files will be created by the preprocessor. You can see their templates in the OSGI-INF/templates directory.
For example this is the template used for the application.xml file:

<?xml version="1.0" encoding="UTF-8"?>

<application version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee";
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/application_1_4.xsd";>

 <display-name>Nuxeo5</display-name>


 %{MODULE}%


</application>

it looks like a common application.xml but contains a weird %{MODULE}% inside the application tag. This is a marker (or insertion point) that can be used by fragment descriptors to insert new text (or XML) fragments at this place. Fragments can append or prepend new text on an insertion point. When a fragment insert a new contributions it is referring the target insertion point by using its name (e.g. MODULE) appended to the name of the template declaring the insertion point and delimited by a #. Ex: application#MODULE
For example the following fragment inserts a new EAR module named NXCore.jar

<?xml version="1.0"?>

<fragment>

   <require>NXCoreAPI.jar</require>

   <extension target="application#MODULE">

   <module>
       <java>NXCore.jar</java>
   </module>

   </extension>
</fragment>


Note that this fragments also declares a <require> statement. This statement is very important since it is used to control the order of deploying. So the above statement means that the NXCore.jar module (fragment) must be deployed after the NXCoreAPI.jar
was deployed.

Each fragment may contain any number of contributions (extension tags) and also a suite of install commands like this one:

<?xml version="1.0"?>

<fragment>

   ...

   <extension ...> ... </extension>

   ...

   <install>

       <!--  unzip the war template -->
       <unzip from="nuxeo.jar" to="/">
           <include>nuxeo.war/**</include>
       </unzip>

   </install>

</fragment>

This install section has only one install command : unzip the entry nuxeo.war from the nuxeo.jar archive inside the EAR root /.

Supported install commands are:

- delete. Example:
   <delete path="/TEMP"/>
- mkdir. Example:
   <mkdir path="/TEMP"/>
- copy. Example:
   <copy from="/OSGI-INF" to="/TEMP/OSGI-INF-FILTERED">
<exclude>*-container.xml</exclude> </copy>
- unzip. Example:
   <unzip from="NXCoreAPI.jar" to="TEMP/unzip-filtered">
       <include>org/nuxeo/ecm/core/api/impl/*</include>
       <exclude>*.class</exclude>
</unzip>

---------------
An exampe of container descriptor file:


<?xml version="1.0"?>

<container>

   <template name="application" src="OSGI-INF/templates/application.xml"
       installPath="META-INF/application.xml" required="true"/>
<template name="jboss-app" src="OSGI-INF/templates/jboss-app.xml"
       installPath="META-INF/jboss-app.xml" required="true"/>

   <template name="web" src="OSGI-INF/templates/web.xml"
       installPath="nuxeo.war/WEB-INF/web.xml" required="true"/>

   <template name="faces-config" src="OSGI-INF/templates/faces-config.xml"
       installPath="nuxeo.war/WEB-INF/faces-config.xml" required="true"/>

   <install>
       <!--  clean up last install -->
       <delete path="/META-INF/application.xml"/>
<delete path="/META-INF/jboss-app.xml"/> <delete path="/nuxeo.war"/> <!-- create here the tree directory structure if needed --> </install> </container>



Bogdan


_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm

Reply via email to