<?xml version="1.0" encoding="UTF-8"?>
<hibernate-generic datetime="2026-02-03 15:43:46">
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239842</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272591</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11339017</id>
</element>
</collection>
<property name="version">15</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:47:56.643</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239843</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239844</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239846</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239848</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239850</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239851</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239853</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239855</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239857</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239859</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239861</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239863</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239865</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239867</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252712</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285456</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18776100</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-10 16:01:28.173</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252714</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252716</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252718</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252720</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252721</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579466</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579475</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252710</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<collection name="children"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580051</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580055</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580057</id>
</element>
</collection>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Computers]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285454</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778426</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778427</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778428</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778429</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778430</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778431</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18778432</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:47:54.993</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.373</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252723</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580049</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580050</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239838</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[JEE6 EJB3]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272587</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11339018</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:51:50.280</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:48:48.010</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239868</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">14516234</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Data Analysis Framework]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">14549001</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:06:51.633</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 11:00:42.260</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">14516235</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">15007758</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
<collection name="attachments"><element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712834</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712835</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171585</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171586</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171587</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171588</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171589</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171590</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171591</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171592</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171593</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171594</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171595</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171596</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171597</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171598</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171599</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171600</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171601</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171602</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171603</id>
</element>
</collection>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239808</id>
<collection name="children"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796629</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272559</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777597</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777598</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777599</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777600</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777601</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777602</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777603</id>
</element>
</collection>
<collection name="referralLinks"><element class="ReferralLink" package="com.atlassian.confluence.links"><id name="id">11730953</id>
</element>
<element class="ReferralLink" package="com.atlassian.confluence.links"><id name="id">26771544</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.920</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239810</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239812</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239965</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239966</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11240012</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796630</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">14516236</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">14516237</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252708</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579857</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579862</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239814</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<collection name="children"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239838</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239871</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</element>
</collection>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272564</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11862594</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11862595</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11862596</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11862597</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11862598</id>
</element>
</collection>
<property name="version">16</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:48:40.333</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239816</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239818</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239820</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239822</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239824</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239826</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239828</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239830</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239832</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239834</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239836</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239840</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239869</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239874</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796627</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580057</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Dione]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645564</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 13:09:18.530</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 13:11:38.417</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580061</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">13926474</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Artifact Relationships]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">13959238</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:00.353</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:12:41.047</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">13926475</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">13926476</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
<collection name="attachments"><element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123010</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123011</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123012</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123013</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123014</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123015</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123016</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123017</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123018</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123019</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123020</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123021</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123022</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123023</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123024</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123025</id>
</element>
<element class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123026</id>
</element>
</collection>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580055</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Eione]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645563</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">19163761</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 13:08:43.307</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-09-10 09:09:00.520</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580059</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">19039993</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">19040796</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Space" package="com.atlassian.confluence.spaces">
<id name="id">11468803</id>
<property name="name"><![CDATA[901022 Video Annotation Analysis and Presentation]]></property>
<property name="key"><![CDATA[VAAP]]></property>
<property name="description" class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">11239807</id>
</property>
<property name="homePage" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<collection name="permissions"><element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">19300586</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406486</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406487</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406488</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406489</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406490</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406491</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406492</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406493</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406494</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406495</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406496</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406497</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406498</id>
</element>
<element class="SpacePermission" package="com.atlassian.confluence.security"><id name="id">34406499</id>
</element>
</collection>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.653</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 09:57:31.780</property>
<property name="spaceType">global</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580051</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Ulikai]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645559</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:55:21.860</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:57:43.707</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18580053</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="ConfluenceBandanaRecord" package="com.atlassian.confluence.setup.bandana">
<id name="id">11501575</id>
<property name="context"><![CDATA[VAAP]]></property>
<property name="key"><![CDATA[atlassian.confluence.theme.settings]]></property>
<property name="value"><![CDATA[<map>
  <entry>
    <string>theme.key</string>
    <string></string>
  </entry>
</map>]]></property>
</object>
<object class="ConfluenceBandanaRecord" package="com.atlassian.confluence.setup.bandana">
<id name="id">11501576</id>
<property name="context"><![CDATA[VAAP]]></property>
<property name="key"><![CDATA[atlassian.confluence.css.resource.counter]]></property>
<property name="value"><![CDATA[<int>2</int>]]></property>
</object>
<object class="ConfluenceBandanaRecord" package="com.atlassian.confluence.setup.bandana">
<id name="id">11501577</id>
<property name="context"><![CDATA[VAAP]]></property>
<property name="key"><![CDATA[atlassian.confluence.space.settings]]></property>
<property name="value"><![CDATA[<com.atlassian.confluence.setup.settings.SpaceSettings>
  <spaceKey>VAAP</spaceKey>
  <disableLogo>false</disableLogo>
  <colourSchemesSettings>
    <colourSchemeType>global</colourSchemeType>
  </colourSchemesSettings>
</com.atlassian.confluence.setup.settings.SpaceSettings>]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239871</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[JEE6 JPA2.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272620</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 13:59:50.147</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:08:08.650</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239873</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239876</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272625</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:42:10.347</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239878</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239880</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239882</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239884</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239885</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239887</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239888</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239890</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796632</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<collection name="children"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</element>
</collection>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829391</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">14024761</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">14024762</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">14024763</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:11:06.893</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796633</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796634</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796636</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796638</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">11796640</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">13926471</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">13926473</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252725</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285469</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777524</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777525</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777526</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777527</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777528</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777529</id>
</element>
<element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">18777530</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.313</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252727</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252729</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252730</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252734</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252735</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18252737</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579460</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579464</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579468</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579477</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579836</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579837</id>
</element>
<element class="Page" package="com.atlassian.confluence.pages"><id name="id">18579838</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796629</id>
<property name="parent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<collection name="ancestors"><element class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</element>
</collection>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"><![CDATA[Migrating to Equinox]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829388</id>
</element>
</collection>
<collection name="outgoingLinks"><element class="OutgoingLink" package="com.atlassian.confluence.links"><id name="id">11862599</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:52:06.227</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:52:06.227</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272587</id>
<property name="body"><![CDATA[h2. EJB 3

h3. Notes from [https://www.sun.com/offers/details/java_ee6_javabeans.xml]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}
* Asynchrounouse Session Bean Invocations
** Fire and Forget or async results via {{Future<V>}}
** Available for Stateful, Stateless and Singleton beans
** Example of Fire and Forget: {code}
@Stateless public class DocBean {
  
  @PersistenceContext EntityManager resultsDB;
  @EJB DocBean myself;

  public void processDocument(Document doc) {
    myself.doAnalysisA(document);
    myself.doAnalysisB(document);
  }

  @Asynchronous public void doAnalysisA(Document d) { //... }
  @Asynchronous public void doAnalysisB(Document d) { //... }
}{code}
** Example of Future: {code}
@EJB Processor proc;
Task task = new Task(...);
Future<int> computeTask = processor.compute(task);
...
int result = computeTask.get();

// EJB
@Stateless
public class ProcessorBean implements Processor {
  @PersistenceContext EntityManager db;

  @Asynchronous
  public Future<int> compute(Task t) {
    // perform computation
    int result = ...;
    return new javax.ejb.AsynchResult<int>(result);
  }
}
{code}




]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239838</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272591</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}
* Modularized web.xml
** {{web-fragment.xml}}
** bundled in framework jar fil in {{META-INF}}
** Almost identical to {{web.xml}}
** Only jars in {{WEB-INF/lib}} will be scanned for {{web-fragment.xml}} files
** Example: {code:xml}
<web-fragment>
  <servlet>
    <servlet-name>welcome</servlet-name>
    ...
</web-fragment>{code}
** Ordering is from JSF. 
*** {{web.xml}} may declare ordering of fragments via {{<absolute-ordering>}}
*** fragments can specify ordering with {{<before> and <after>}}
* {{ServletContainerInitializer}}
** Expresses interest in classes via @HandleTypes
** Container scans webapp for classes that match {{@HandleTypes}} and passes them to {{ServletContainerIntializer}}
* Resource sharing
** Static (e.g. images) and JSP resources no longer confined to document root of web application
** May be place in {{WEB-INF/lib/<*.jar>/META-INF/resources}}
** Resources in document root take precedence over those in bundled jars
* Asynch support
** Must declare {{@WebServlet(asyncSupported=true)}}
** Then call {{AsyncContext ctx = ServletRequest.startAsync(req, res)}}
** {{AsyncContext}} can then either: {code}
dispatch(String path)
start(Runnable action)
{code}
** Then paired with {{complete()}}
** {{ServletRequest.isAsyncSupported()}}
*** True if *all* <filter|servlet> support async in the filter chain *and* the request dispatch chain
*** Can be configured in {{web.xml}}, Annotation, or API
* Security
** Added support for: {code}
// Declared using https contraints with @ServletSecurity
HttpServletRequest.authenticate
HttpServletRequest.login
HttpServletRequest.logout{code}


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778429</id>
<property name="destinationPageTitle"><![CDATA[Equinox]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778428</id>
<property name="destinationPageTitle"><![CDATA[Eione]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778431</id>
<property name="destinationPageTitle"><![CDATA[Seaspray]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778430</id>
<property name="destinationPageTitle"><![CDATA[Seadog]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778432</id>
<property name="destinationPageTitle"><![CDATA[Ulikai]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778427</id>
<property name="destinationPageTitle"><![CDATA[Dione]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18778426</id>
<property name="destinationPageTitle"><![CDATA[Alaskanwind]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:54:00.390</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:54:00.390</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272620</id>
<property name="body"><![CDATA[h1. JEE JPA 2.0
h2. Notes from
* Automatic Orphan Deletion {code}
@Entity public class Order {
  @Id int orderId;
  ...
  @OneToMany(cascade=PERSIST, orphanRemoval=true)
  Set<Item> lineItems;
}{code}
* Validation
** Automatic validation upon lifecycle events: PrePersist, PreUpdate, PreRemove
** Validation-mode element in {{persistence.xml}}: *AUTO, CALLBACK, NONE*
** Example: {code}
@Entity public class Employee {
  @Id Integer id
  String name;
  @Max(15) Integer vacationDays;
  @Valid Address worksite;
  // ...
}

@Embeddable public class Address {
  @Size(max=30) String street;
  @Size(max=20) String city;
  @Zipcode String zipcode;
  // ...
}{code}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239871</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580061</id>
<property name="title"><![CDATA[Dione]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645568</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 13:09:18.530</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 13:09:18.530</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580057</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272625</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}
* ManagedBean
** Anything injected is a _bean_. Examples include:
*** EJB Session beans
*** Plain classes with {{@ManagedBean}}
*** Any class CDI can discover in a module
*** Example: {code}
@Reliable
@PayBy(CREDIT_CARD)
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as an EJB:{code}
@Reliable
@PayBy(CREDIT_CARD)
//@ManagedBean
@Stateless
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as a Request-scoped Bean:{code}
@Reliable
@PayBy(CREDIT_CARD)
@RequestScoped
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
**** Scopes allowed everywhere: {{@ApplicationScoped, @RequestScoped}}
**** Also allowed in web apps: {{@SessionScoped}}
* Named beans. (Built in support for Unified EL)
** You can name a bean with {{@Named("cart")}}. The refer to it in a JSP page using the EL: {noformat}<h.commandButton value="Checkout" action="#{cart.checkout}">{noformat}
* Events with annotation-based event model
** A bean {{@Observes}} an event: {code}
void onLogin(@Observes LoginEvent event) { ...}
{code} Another bean fires an event using the {{Event.fire(T event)}} method]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580059</id>
<property name="title"><![CDATA[Eione]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645566</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 13:08:43.307</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 13:08:43.307</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580055</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">14516236</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">14549003</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:59:04.027</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580053</id>
<property name="title"><![CDATA[Ulikai]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645561</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 12:55:21.860</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:55:21.860</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580051</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">14516235</id>
<property name="title"><![CDATA[Data Analysis Framework]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">14549002</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:06:51.633</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 11:06:51.633</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">14516237</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">14549004</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 12:16:26.620</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580050</id>
<property name="title"><![CDATA[Computers]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645557</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:47:54.993</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 12:53:48.153</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18580049</id>
<property name="title"><![CDATA[Computers]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645556</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:47:54.993</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 13:50:45.660</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">13959238</id>
<property name="body"><![CDATA[
h2. Overview

I'll be storing references to the various artifacts in the VARS Knowledgebase. Here's how the standard products reference each other...

{gliffy:name=Artifacts|space=VAAP|page=Artifact Relationships|pageid=13926474|align=left|size=L}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">19040796</id>
<property name="title"><![CDATA[Eione]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">19073491</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 13:08:43.307</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-07-11 12:07:44.077</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580055</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239840</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272589</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:51:35.567</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579468</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645004</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-09 09:35:38.067</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239836</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272586</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:48:46.463</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">14549001</id>
<property name="body"><![CDATA[{gliffy:name=Analysis Framework|space=VAAP|page=Data Analysis Framework|pageid=14516234|align=left|size=L}

{gliffy:name=Concept Analyzer Framework|space=VAAP|page=Data Analysis Framework|pageid=14516234|align=left|size=L}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239850</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272599</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:19:20.460</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239848</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272597</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:16:27.720</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239846</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272595</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:13:53.077</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579477</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645013</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-09 10:16:43.730</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">13926476</id>
<property name="title"><![CDATA[Artifact Relationships]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">13959240</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:00.353</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:12:26.243</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239843</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272592</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:13:04.163</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">13926475</id>
<property name="title"><![CDATA[Artifact Relationships]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">13959239</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:00.353</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:12:00.353</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579475</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645011</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-09 09:52:35.597</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239844</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272593</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:13:37.007</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239826</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272576</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:30:10.347</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239824</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272574</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:28:12.670</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239822</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272572</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:24:14.567</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239820</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272570</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:10:15.033</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239834</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272584</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:46:04.473</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777598</id>
<property name="destinationPageTitle"><![CDATA[//bitbucket.org/hohonuuli/deepseaguide/wiki/Home]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777599</id>
<property name="destinationPageTitle"><![CDATA[Computers]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239832</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272582</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:42:59.223</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777597</id>
<property name="destinationPageTitle"><![CDATA[//bitbucket.org/hohonuuli/deepseaguide]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239830</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272580</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:38:45.170</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777602</id>
<property name="destinationPageTitle"><![CDATA[Data Products]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777603</id>
<property name="destinationPageTitle"><![CDATA[Data Analysis Framework]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239828</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272578</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:35:15.583</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777600</id>
<property name="destinationPageTitle"><![CDATA[Web Application Technologies]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777601</id>
<property name="destinationPageTitle"><![CDATA[Migrating to Equinox]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-14 09:30:33.933</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:30:33.933</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239810</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272561</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 09:56:29.677</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">19039993</id>
<property name="title"><![CDATA[Eione]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">19072717</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-03-06 13:08:43.307</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-03-06 13:10:14.553</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580055</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239816</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272566</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:03:27.320</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239818</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272568</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:07:03.833</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239812</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272562</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 09:58:21.313</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">13926471</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">13959235</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 10:16:46.107</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">13926473</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">13959236</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:10:48.960</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11339017</id>
<property name="destinationPageTitle"><![CDATA[//www.sun.com/offers/details/java_ee6_servlet.xml]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:47:56.667</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:47:56.667</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11339018</id>
<property name="destinationPageTitle"><![CDATA[//www.sun.com/offers/details/java_ee6_javabeans.xml]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239838</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:48:48.040</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:48:48.040</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14712833</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:59:57.263</property>
<property name="fileSize">19115</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">18</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579464</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645000</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-09 08:56:44.993</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579466</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645002</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 13:46:16.947</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579460</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18644996</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 16:59:39.240</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14712834</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 11:07:20.523</property>
<property name="fileSize">133</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">1</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14712835</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 11:12:32.570</property>
<property name="fileSize">6199</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">2</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171595</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:45:52.623</property>
<property name="fileSize">16931</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">13</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171594</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:44:31.777</property>
<property name="fileSize">16297</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">12</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171597</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:56:59.907</property>
<property name="fileSize">19656</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">15</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171596</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:50:11.757</property>
<property name="fileSize">17981</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">14</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171591</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:37:58.573</property>
<property name="fileSize">15269</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">9</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171590</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:34:02.247</property>
<property name="fileSize">14409</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">8</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171593</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:42:54.977</property>
<property name="fileSize">16164</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">11</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171592</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:39:49.800</property>
<property name="fileSize">15236</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">10</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171587</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:14:24.010</property>
<property name="fileSize">6607</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">5</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171586</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:13:08.927</property>
<property name="fileSize">6110</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">4</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171589</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:31:57.580</property>
<property name="fileSize">13676</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">7</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171588</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:29:59.757</property>
<property name="fileSize">13339</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">6</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18776100</id>
<property name="destinationPageTitle"><![CDATA[//oceana.mbari.org/jira/browse/VAAP-33]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-10 16:01:28.217</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-10 16:01:28.217</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171585</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 11:12:34.427</property>
<property name="fileSize">6199</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">3</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406488</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[SETPAGEPERMISSIONS]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.726</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.726</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239885</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272634</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:34:31.887</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406487</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[REMOVECOMMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.726</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.726</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239884</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272633</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:32:07.377</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406486</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[VIEWSPACE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:42:48.781</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:42:48.781</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">15007758</id>
<property name="title"><![CDATA[Data Analysis Framework]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">15040526</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:06:51.633</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 11:07:20.577</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239890</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272639</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:40:17.847</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406492</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[SETSPACEPERMISSIONS]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406491</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[REMOVEBLOG]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406490</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[COMMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239888</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272637</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:39:50.843</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406489</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[EDITBLOG]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239887</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272636</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:34:47.233</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171602</id>
<property name="fileName"><![CDATA[Concept Analyzer Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-09-28 11:00:42.250</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 11:07:39.063</property>
<property name="fileSize">5036</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">2</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171600</id>
</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406496</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[CREATEATTACHMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171603</id>
<property name="fileName"><![CDATA[Concept Analyzer Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-09-28 11:00:42.250</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 11:13:55.827</property>
<property name="fileSize">8687</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">3</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171600</id>
</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406495</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[EXPORTSPACE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406494</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[EXPORTPAGE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406493</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[REMOVEPAGE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171598</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:57:02.683</property>
<property name="fileSize">19656</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">16</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171599</id>
<property name="fileName"><![CDATA[Analysis Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-08-24 11:07:20.523</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 10:58:52.257</property>
<property name="fileSize">19114</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">17</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14712833</id>
</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406499</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[REMOVEMAIL]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.728</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.728</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171600</id>
<property name="fileName"><![CDATA[Concept Analyzer Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-09-28 11:00:42.250</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 11:15:33.267</property>
<property name="fileSize">9189</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">4</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406498</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[REMOVEATTACHMENT]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">15171601</id>
<property name="fileName"><![CDATA[Concept Analyzer Framework]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516234</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-09-28 11:00:42.250</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-09-28 11:00:42.250</property>
<property name="fileSize">133</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">1</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">15171600</id>
</property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">34406497</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[EDITSPACE]]></property>
<property name="group"/><property name="userName"><![CDATA[kgomes]]></property>
<property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2026-02-03 15:43:01.727</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2026-02-03 15:43:01.727</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239867</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272616</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:44:12.470</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272559</id>
<property name="body"><![CDATA[h1. 901022 - Video Annotation Analysis and Presentation (VAAP)

h2. Infrastructure
* [Source Code|https://bitbucket.org/hohonuuli/deepseaguide]
** [Wiki|https://bitbucket.org/hohonuuli/deepseaguide/wiki/Home]
* [Computers]

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]
* [Data Products]
* [Data Analysis Framework]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239868</id>
<property name="title"><![CDATA[JEE6 EJB3]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272617</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:51:50.280</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:51:50.280</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239838</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239869</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272618</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 10:52:30.933</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239873</id>
<property name="title"><![CDATA[JEE6 JPA2.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272622</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 13:59:50.147</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 13:59:50.147</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239871</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239874</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272623</id>
</element>
</collection>
<property name="version">14</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 13:17:14.117</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239878</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272627</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:25:49.837</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239880</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272629</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:27:26.200</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239882</id>
<property name="title"><![CDATA[JEE6 CDI]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272631</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 14:25:49.837</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:30:21.150</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239876</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239851</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272600</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:22:53.737</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239853</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272602</id>
</element>
</collection>
<property name="version">7</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:23:12.510</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239855</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272604</id>
</element>
</collection>
<property name="version">8</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:25:45.357</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239857</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272606</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:27:37.230</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239859</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272608</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:29:24.013</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239861</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272610</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:30:38.837</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239863</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272612</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:37:32.617</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272564</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6
[JEE6 EJB3]
[JEE6 Servlet3.0]
[JEE6 JPA2.0]
[JEE6 CDI]

h2. Grails

h2. Wicket
I've been working through the Wicket in Action book. Since there is a very nice separation between the presentation layer and the Java code, this would allow me to pull in external designers to work on this. I'm going to use wicket as the presentation layer.
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239865</id>
<property name="title"><![CDATA[JEE6 Servlet3.0]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272614</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 11:13:04.163</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 11:41:07.433</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239842</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252714</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285458</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 12:49:40.253</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252708</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285452</id>
</element>
</collection>
<property name="version">9</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-08-24 12:16:35.357</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpacePermission" package="com.atlassian.confluence.security">
<id name="id">19300586</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="type"><![CDATA[VIEWSPACE]]></property>
<property name="group"><![CDATA[U_Employees]]></property>
<property name="userName"/><property name="creatorName"><![CDATA[kgomes]]></property>
<property name="creationDate">2012-06-18 17:21:08.130</property>
<property name="lastModifierName"><![CDATA[kgomes]]></property>
<property name="lastModificationDate">2012-06-18 17:21:08.130</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579862</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645376</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-14 09:19:17.787</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579857</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645371</id>
</element>
</collection>
<property name="version">10</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 12:45:05.990</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579838</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645353</id>
</element>
</collection>
<property name="version">13</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:20:02.163</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579837</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645352</id>
</element>
</collection>
<property name="version">12</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:19:14.197</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18579836</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18645351</id>
</element>
</collection>
<property name="version">11</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-11 09:09:31.683</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">19163761</id>
<property name="destinationPageTitle"><![CDATA[//oceana.mbari.org/jira/browse/VAAP-42]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580055</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-09-10 09:09:00.570</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-09-10 09:09:00.570</property>
</object>
<object class="ReferralLink" package="com.atlassian.confluence.links">
<id name="id">11730953</id>
<property name="viewCount">15</property>
<property name="url"><![CDATA[http://www.mbari.org/staff/brian/]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"/><property name="creationDate">2010-04-05 09:45:15.050</property>
<property name="lastModifierName"/><property name="lastModificationDate">2010-09-28 10:13:15.063</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285454</id>
<property name="body"><![CDATA[Computers that are involved with running DSG at MBARI
||Computer||Role||
|[Alaskanwind]|Western Flyer database server|
|[Dione]|External database server|
|[Eione]|External web server|
|[Equinox]|*Master database server|
|[Seadog]|Western Flyer Web and Web application server|
|[Seaspray]|Internal Web and Web application server|
|[Ulikai]|Weekly processing of data products|

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285456</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

h2. DSG_KB info
The DSG_KB database is a copy of the local VARS_KB with the following SQL executed after copy:
{code:sql}
UPDATE 
  Media 
SET 
  url = REPLACE(url,  'http://dsg.mbari.org/images/dsg', 'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL 
GO
{code}


h2. DSG info
The DSG database is a copy of DSG from Equinox with the following SQL applied:
{code:sql}
UPDATE 
  URLArtifact 
SET 
  url = REPLACE(url,  'http://seaspray.shore.mbari.org/dsg', 'http://seadog.wf.mbari.org:8082/www/dsg') 
WHERE 
  url IS NOT NULL 
GO
{code}

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285469</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. {color:blue}Files added under {{/opt/dsg}} should all belong to the group _tomcat_!!{color}. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}. To restart tomcat run: {code}sudo /sbin/service tomcat-dsg restart {code}

{info:title=Configure Tomcat _Manager_ application to handle large files}
When I attempted to upload the {{dsg.war}} I got the following error:
{noformat}
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: 
the request was rejected because its size (53887121) exceeds the configured maximum (52428800)
{noformat}

By default the Manager app only allows WARS upto 50MB to be uploaded; the dsg.war was just slightly larger. To resolve this, I edited {{\webapps\manager\WEB-INF\web.xml}} and changed the max-file-size and max-request-size to something larger. The block to be edited looks like:
{code:xml}
<multipart-config> 
    <!-- 52MB max --> 
    <max-file-size>52428800</max-file-size> 
    <max-request-size>52428800</max-request-size> 
    <file-size-threshold>0</file-size-threshold> 
</multipart-config> 
{code}
{info}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}

h3. Database Replication
Replication from equinox.shore.mbari.org to alaskanwind.wf.mbari.org is run nightly. The following SQL is executed after replication:
{code:sql}
-- For DSG_KB run the following:

UPDATE 
  Media 
SET 
  url = REPLACE(url, 'http://seaspray.shore.mbari.org/dsg',
        'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL


-- For DSG run the following:

UPDATE 
  URLArtifact 
SET 
  url = REPLACE(url, 'http://seaspray.shore.mbari.org/dsg', 
        'http://seadog.wf.mbari.org:8082/www/dsg') 
WHERE 
  url IS NOT NULL
{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777525</id>
<property name="destinationPageTitle"><![CDATA[//seadog.wf.mbari.org:8080]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796640</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829399</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 10:13:33.713</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777524</id>
<property name="destinationPageTitle"><![CDATA[//seadog.wf.mbari.org:8082]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252734</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285478</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 14:04:43.440</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777527</id>
<property name="destinationPageTitle"><![CDATA[//localhost:8084/project/images/sample.png.]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11862594</id>
<property name="destinationPageTitle"><![CDATA[//code.google.com/p/vars-redux/]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:48:40.423</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:48:40.423</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777526</id>
<property name="destinationPageTitle"><![CDATA[//th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11862595</id>
<property name="destinationPageTitle"><![CDATA[JEE6 EJB3]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:48:40.423</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:48:40.423</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777529</id>
<property name="destinationPageTitle"><![CDATA[//seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252735</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285479</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 16:56:22.453</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777528</id>
<property name="destinationPageTitle"><![CDATA[~brian]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796636</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829395</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 10:11:33.817</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252737</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285481</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 16:56:36.393</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">18777530</id>
<property name="destinationPageTitle"><![CDATA[//seadog.wf.mbari.org:8082/www/dsg]]></property>
<property name="destinationSpaceKey"><![CDATA[http]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-02-09 15:25:01.337</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-02-09 15:25:01.337</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796638</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829397</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 10:12:18.287</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252723</id>
<property name="title"><![CDATA[Computers]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285467</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:47:54.993</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 12:47:54.993</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252710</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">14024763</id>
<property name="destinationPageTitle"><![CDATA[Artifact Relationships]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:11:06.917</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:11:06.917</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">14024762</id>
<property name="destinationPageTitle"><![CDATA[//mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:11:06.917</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:11:06.917</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">14024761</id>
<property name="destinationPageTitle"><![CDATA[~brian]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:11:06.917</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:11:06.917</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796634</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829393</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 10:11:12.277</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796633</id>
<property name="title"><![CDATA[Data Products]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829392</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 10:10:31.177</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 10:10:31.177</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252727</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285471</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 13:54:48.403</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11862597</id>
<property name="destinationPageTitle"><![CDATA[JEE6 JPA2.0]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:48:40.423</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:48:40.423</property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11862596</id>
<property name="destinationPageTitle"><![CDATA[JEE6 Servlet3.0]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:48:40.423</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:48:40.423</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796627</id>
<property name="title"><![CDATA[Web Application Technologies]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829386</id>
</element>
</collection>
<property name="version">15</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 10:03:27.320</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 14:19:28.967</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11862599</id>
<property name="destinationPageTitle"><![CDATA[//oceana.mbari.org/jira/browse/VAAP-1]]></property>
<property name="destinationSpaceKey"><![CDATA[https]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796629</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:52:06.267</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:52:06.267</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252729</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285473</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 13:58:40.000</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11796630</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11829389</id>
</element>
</collection>
<property name="version">6</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-22 15:25:32.980</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252730</id>
<property name="title"><![CDATA[Seadog]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285474</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 13:54:48.403</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 14:04:22.047</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252725</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="OutgoingLink" package="com.atlassian.confluence.links">
<id name="id">11862598</id>
<property name="destinationPageTitle"><![CDATA[JEE6 CDI]]></property>
<property name="destinationSpaceKey"><![CDATA[VAAP]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239814</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-04-05 09:48:40.423</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-04-05 09:48:40.423</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252716</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285460</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 12:50:44.493</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252718</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285462</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 12:52:06.077</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252720</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285464</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 13:28:21.457</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">18252721</id>
<property name="title"><![CDATA[Alaskanwind]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">18285465</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2012-01-06 12:49:40.253</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2012-01-06 13:28:21.457</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252712</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645559</id>
<property name="body"><![CDATA[h2. About Ulikai

This VM is running RHEL 6.2. It has 12GB of RAM available and 4 CPU's. Essentially, it's a stock linux VM with JDK7 installed. The weekly processing is run as the user 'brian'. Data products should be written to \\Atlas\DeepSeaGuide which can be mounted as:
||OS||mount path||
|Windows|\\atlas\DeepSeaGuide|
|Macs|cifs://atlas/DeepSeaGuide|
|NFS|atlasnfs:/ifs/mbarisnaponly/DeepSeaGuide|
|NIS|/mbari/DeepSeaGuide|]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580051</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645563</id>
<property name="body"><![CDATA[h2. About Eione

{info:title=Important}
Eione is aliased with the CNAME _dsg.mbari.org_
{info}

Eione is a linux VM whose sole purpose is to host an apache web server and a tomcat application server in the DMZ. It's hostname is actually _eione.mbari.org_. Content for Eione should be placed in {{/var/www/website}}, which is pretty much the only directory non-root users can write to. The following directories are of special interest:

h3. /var/www/website/frameGrabs

This directory contains water-marked annotation images. All non-embargoed images are watermarked and copied here.

h3. /var/www/website/images/dsg

This is a symlink to {{/mbari/dsg/kbimages}} which, in-turn, is the share \\Atlas\VideoLab\VARS_Images mounted on Eione.

h3. Tomcat and the Deep Sea Guide
The Deep Sea Guide is hosted on tomcat. Notes on the tomcat installation can be found at https://oceana.mbari.org/jira/browse/VAAP-42]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580055</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645564</id>
<property name="body"><![CDATA[h2. About Dione

Dione (dione.mbari.org) is a Windows VM that hosts the eternal (DMZ) SQL Server 2008 instance. This server hosts all the external VARS databases as well as SSDS.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580057</id>
</property>
</object>
<object class="ReferralLink" package="com.atlassian.confluence.links">
<id name="id">26771544</id>
<property name="viewCount">2</property>
<property name="url"><![CDATA[https://oceana.mbari.org/jira/secure/BrowseProject.jspa]]></property>
<property name="sourceContent" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="creatorName"/><property name="creationDate">2014-10-08 09:41:15.027</property>
<property name="lastModifierName"/><property name="lastModificationDate">2014-10-08 09:41:15.027</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123026</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:14:15.937</property>
<property name="fileSize">8201</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">17</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123023</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:13:01.260</property>
<property name="fileSize">6560</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">14</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123022</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:13:01.160</property>
<property name="fileSize">6560</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">13</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123025</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:13:53.520</property>
<property name="fileSize">8207</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">16</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123024</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:13:53.343</property>
<property name="fileSize">8207</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">15</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123010</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:12:26.193</property>
<property name="fileSize">133</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">1</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123011</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:18:45.880</property>
<property name="fileSize">2557</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">2</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123012</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:19:57.513</property>
<property name="fileSize">2600</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">3</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123013</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:19:57.637</property>
<property name="fileSize">2600</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">4</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11240012</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272760</id>
</element>
</collection>
<property name="version">5</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-18 08:47:18.440</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123009</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:14:55.217</property>
<property name="fileSize">8019</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">18</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123018</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:11:08.183</property>
<property name="fileSize">6506</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">9</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829388</id>
<property name="body"><![CDATA[THe migration of VARS from SQL Server 2000 on Solstice to SQL Server 2008 on Equinox is documented at [https://oceana.mbari.org/jira/browse/VAAP-1]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796629</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123019</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:11:08.220</property>
<property name="fileSize">6506</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">10</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123020</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:11:10.957</property>
<property name="fileSize">6506</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">11</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123021</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:11:11.087</property>
<property name="fileSize">6506</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">12</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123014</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:21:12.933</property>
<property name="fileSize">2663</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">5</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829391</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

+As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work.+ Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

+My naive suggestions for a first cut of data products would be:+

	*1) Spatial grids of benthic annotations by taxa or functional groups.*
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	*2) Vertical distributions of taxa/groups*
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	*3) A time series product, perhaps vertical distribution vs time?*

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Product relations
[Artifact Relationships]

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot

h4. VARS

The following will use a _Concept_ and all it's children for an analysis. So for example, an analysis of _Squid_ would be an aggregate analysis of +all+ squid.
# 1m Histogram of VARS data for each concept as text file
# 1m Histogram of VARS data for each concept as plot

*Normalized products*
# Normalized vertical distribution
## 1st normalize the VARS distribution by total counts
## Then normalize by dive effort (using normalized EXPD vertical distribution)




]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796632</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123015</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:21:13.077</property>
<property name="fileSize">2663</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">6</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123016</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 12:21:19.373</property>
<property name="fileSize">2663</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">7</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Attachment" package="com.atlassian.confluence.pages">
<id name="id">14123017</id>
<property name="fileName"><![CDATA[Artifacts]]></property>
<property name="contentType"><![CDATA[text/xml]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926474</id>
</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-07-13 12:12:26.193</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-07-13 13:11:02.937</property>
<property name="fileSize">6506</property>
<property name="comment"><![CDATA[DO NOT EDIT THIS ATTACHMENT.  YOU WILL RUIN YOUR DIAGRAM!]]></property>
<property name="attachmentVersion">8</property>
<property name="originalVersion" class="Attachment" package="com.atlassian.confluence.pages"><id name="id">14123009</id>
</property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239966</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272714</id>
</element>
</collection>
<property name="version">4</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-18 08:44:38.747</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="Page" package="com.atlassian.confluence.pages">
<id name="id">11239965</id>
<property name="title"><![CDATA[Home]]></property>
<collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272713</id>
</element>
</collection>
<property name="version">3</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.677</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 09:59:08.937</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239808</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="SpaceDescription" package="com.atlassian.confluence.spaces">
<id name="id">11239807</id>
<property name="space" class="Space" package="com.atlassian.confluence.spaces"><id name="id">11468803</id>
</property>
<property name="title"/><collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272558</id>
</element>
</collection>
<property name="version">2</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.653</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 09:57:31.760</property>
<property name="versionComment"><![CDATA[]]></property>
<collection name="historicalVersions"><element class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">11239809</id>
</element>
</collection>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272582</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}
* Asynchrounouse Session Bean Invocations
** Fire and Forget or async results via {{Future<V>}}
** Available for Stateful, Stateless and Singleton beans
** Example: {code}
@Stateless public class DocBean {
  
  @PersistenceContext EntityManager resultsDB;
  @EJB DocBean myself;

  public void processDocument(Document doc) {
    myself.doAnalysisA(document);
    myself.doAnalysisB(document);
  }

  @Asynchronous public void doAnalysisA(Document d) { //... }
  @Asynchronous public void doAnalysisB(Document d) { //... }
}{code}





]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239832</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272580</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}






]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239830</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272586</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}
* Asynchrounouse Session Bean Invocations
** Fire and Forget or async results via {{Future<V>}}
** Available for Stateful, Stateless and Singleton beans
** Example of Fire and Forget: {code}
@Stateless public class DocBean {
  
  @PersistenceContext EntityManager resultsDB;
  @EJB DocBean myself;

  public void processDocument(Document doc) {
    myself.doAnalysisA(document);
    myself.doAnalysisB(document);
  }

  @Asynchronous public void doAnalysisA(Document d) { //... }
  @Asynchronous public void doAnalysisB(Document d) { //... }
}{code}
** Example of Future: {code}
@EJB Processor proc;
Task task = new Task(...);
Future<int> computeTask = processor.compute(task);
...
int result = computeTask.get();

// EJB
@Stateless
public class ProcessorBean implements Processor {
  @PersistenceContext EntityManager db;

  @Asynchronous
  public Future<int> compute(Task t) {
    // perform computation
    int result = ...;
    return new javax.ejb.AsynchResult<int>(result);
  }
}
{code}





]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239836</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272584</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}
* Asynchrounouse Session Bean Invocations
** Fire and Forget or async results via {{Future<V>}}
** Available for Stateful, Stateless and Singleton beans
** Example of Fire and Forget: {code}
@Stateless public class DocBean {
  
  @PersistenceContext EntityManager resultsDB;
  @EJB DocBean myself;

  public void processDocument(Document doc) {
    myself.doAnalysisA(document);
    myself.doAnalysisB(document);
  }

  @Asynchronous public void doAnalysisA(Document d) { //... }
  @Asynchronous public void doAnalysisB(Document d) { //... }
}{code}
** Example of Future: {code}
@EJB Processor proc;
Task task = new Task(...);
Future<int> computeTask = processor.compute(task);
...
int result = computeTask.get();{code}





]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239834</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272589</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6
[JEE6 EJB3]

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}
* Asynchrounouse Session Bean Invocations
** Fire and Forget or async results via {{Future<V>}}
** Available for Stateful, Stateless and Singleton beans
** Example of Fire and Forget: {code}
@Stateless public class DocBean {
  
  @PersistenceContext EntityManager resultsDB;
  @EJB DocBean myself;

  public void processDocument(Document doc) {
    myself.doAnalysisA(document);
    myself.doAnalysisB(document);
  }

  @Asynchronous public void doAnalysisA(Document d) { //... }
  @Asynchronous public void doAnalysisB(Document d) { //... }
}{code}
** Example of Future: {code}
@EJB Processor proc;
Task task = new Task(...);
Future<int> computeTask = processor.compute(task);
...
int result = computeTask.get();

// EJB
@Stateless
public class ProcessorBean implements Processor {
  @PersistenceContext EntityManager db;

  @Asynchronous
  public Future<int> compute(Task t) {
    // perform computation
    int result = ...;
    return new javax.ejb.AsynchResult<int>(result);
  }
}
{code}





]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239840</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272593</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239844</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272592</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code}
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239843</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272597</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239848</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272595</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239846</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272602</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239853</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272600</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add[Servlet|Filter]}}
**** {{ServletContext.create[Servlet|Filter]}}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239851</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272599</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239850</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272606</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239857</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272604</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);{code}


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239855</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272610</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}
* Modularized web.xml
** {{web-fragment.xml}}
** bundled in framework jar fil in {{META-INF}}
** Almost identical to {{web.xml}}
** Only jars in {{WEB-INF/lib}} will be scanned for {{web-fragment.xml}} files
** Example: {code:xml}
<web-fragment>
  <servlet>
    <servlet-name>welcome</servlet-name>
    ...
</web-fragment>{code}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239861</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272608</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}
* Modularized web.xml
** {{web-fragment.xml}}
** bundled in framework jar fil in {{META-INF}}
** Almost identical to {{web.xml}}
** Only jars in {{WEB-INF/lib}} will be scanned for {{web-fragment.xml}} files


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239859</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272612</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}
* Modularized web.xml
** {{web-fragment.xml}}
** bundled in framework jar fil in {{META-INF}}
** Almost identical to {{web.xml}}
** Only jars in {{WEB-INF/lib}} will be scanned for {{web-fragment.xml}} files
** Example: {code:xml}
<web-fragment>
  <servlet>
    <servlet-name>welcome</servlet-name>
    ...
</web-fragment>{code}
** Ordering is from JSF. 
*** {{web.xml}} may declare ordering of fragments via {{<absolute-ordering>}}
*** fragments can specify ordering with {{<before> and <after>}}
* {{ServletContainerInitializer}}
** Expresses interest in classes via @HandleTypes
** Container scans webapp for classes that match {{@HandleTypes}} and passes them to {{ServletContainerIntializer}}
* Resource sharing
** Static (e.g. images) and JSP resources no longer confined to document root of web application
** May be place in {{WEB-INF/lib/<*.jar>/META-INF/resources}}
** Resources in document root take precedence over those in bundled jars

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239863</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272614</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}
* Modularized web.xml
** {{web-fragment.xml}}
** bundled in framework jar fil in {{META-INF}}
** Almost identical to {{web.xml}}
** Only jars in {{WEB-INF/lib}} will be scanned for {{web-fragment.xml}} files
** Example: {code:xml}
<web-fragment>
  <servlet>
    <servlet-name>welcome</servlet-name>
    ...
</web-fragment>{code}
** Ordering is from JSF. 
*** {{web.xml}} may declare ordering of fragments via {{<absolute-ordering>}}
*** fragments can specify ordering with {{<before> and <after>}}
* {{ServletContainerInitializer}}
** Expresses interest in classes via @HandleTypes
** Container scans webapp for classes that match {{@HandleTypes}} and passes them to {{ServletContainerIntializer}}
* Resource sharing
** Static (e.g. images) and JSP resources no longer confined to document root of web application
** May be place in {{WEB-INF/lib/<*.jar>/META-INF/resources}}
** Resources in document root take precedence over those in bundled jars
* Asynch support
** Must declare {{@WebServlet(asyncSupported=true)}}
** Then call {{AsyncContext ctx = ServletRequest.startAsync(req, res)}}
** {{AsyncContext}} can then either: {code}
dispatch(String path)
start(Runnable action)
{code}
** Then paired with {{complete()}}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239865</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272616</id>
<property name="body"><![CDATA[h2. JEE6 Servlet 3.0

h3. Notes from https://www.sun.com/offers/details/java_ee6_servlet.xml

* Added annotations for declarative programming and generics:{code:java}
/*
  You can use web.xml to override values
 */
@WebServlet // defines a servlet
@WebFilter // defines a filter
@WebListener // defines a listener
@WebInitParam // defines an init param
@ServletSecurity // security constraints
@MultipartConfig // file upload{code}
* {{@WebServlet}}
** MUST specifiy url mapping
** Default name of servlet is full qualified class name
** Must still extend {{HttpServlet}}
** Example: {code}
package com.foo;
@WebServlet(name="MyServlet", urlPattern="/myApp/*")
public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res) { ... }
}{code}
* Enable use of frameworks without alot of boiler plate configuration. Modularize web.xml
** Dynamic registration of Servlets and Filters
*** Performed during {{ServletContext}} intialization; 
**** {{ServletContext.add<Servlet|Filter>}}
**** {{ServletContext.create<Servlet|Filter>}}
**** {{ServletContext.find<Servlet|Filter>}}
** Example: {code}
// Registration
ServletRegistration.Dynamic dynamic = 
    servletContext.addServlet("DynamicServlet", "com.foo.MyServlet");
dynamic.addMapping("/dynamicServlet");
dynamic.setAsyncSupported(true);

// Lookup
ServletRegistration declared = servletContext.getServletRegistration("DeclaredServlet");
declared.addMapping("/declaredServlet");
declared.setInitParameter("param", "value");
{code}
* Modularized web.xml
** {{web-fragment.xml}}
** bundled in framework jar fil in {{META-INF}}
** Almost identical to {{web.xml}}
** Only jars in {{WEB-INF/lib}} will be scanned for {{web-fragment.xml}} files
** Example: {code:xml}
<web-fragment>
  <servlet>
    <servlet-name>welcome</servlet-name>
    ...
</web-fragment>{code}
** Ordering is from JSF. 
*** {{web.xml}} may declare ordering of fragments via {{<absolute-ordering>}}
*** fragments can specify ordering with {{<before> and <after>}}
* {{ServletContainerInitializer}}
** Expresses interest in classes via @HandleTypes
** Container scans webapp for classes that match {{@HandleTypes}} and passes them to {{ServletContainerIntializer}}
* Resource sharing
** Static (e.g. images) and JSP resources no longer confined to document root of web application
** May be place in {{WEB-INF/lib/<*.jar>/META-INF/resources}}
** Resources in document root take precedence over those in bundled jars
* Asynch support
** Must declare {{@WebServlet(asyncSupported=true)}}
** Then call {{AsyncContext ctx = ServletRequest.startAsync(req, res)}}
** {{AsyncContext}} can then either: {code}
dispatch(String path)
start(Runnable action)
{code}
** Then paired with {{complete()}}
** {{ServletRequest.isAsyncSupported()}}
*** True if *all* <filter|servlet> support async in the filter chain *and* the request dispatch chain
*** Can be configured in {{web.xml}}, Annotation, or API

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239867</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272617</id>
<property name="body"><![CDATA[h2. EJB 3

h3. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)
** Automatic Timer Creation: {code}
@Stateless
public class BankBean {

  @PersistenceContext EntityManager accountDB;
  @Resource javax.mail.Session mailSession;
  
  // Callback the last day of each month at 8 a.m.
  @Schedule(hour="8", dayOfMonth="Last")
  void sendMonthlyBankStatements() {
     ...
  }
}{code}
* Asynchrounouse Session Bean Invocations
** Fire and Forget or async results via {{Future<V>}}
** Available for Stateful, Stateless and Singleton beans
** Example of Fire and Forget: {code}
@Stateless public class DocBean {
  
  @PersistenceContext EntityManager resultsDB;
  @EJB DocBean myself;

  public void processDocument(Document doc) {
    myself.doAnalysisA(document);
    myself.doAnalysisB(document);
  }

  @Asynchronous public void doAnalysisA(Document d) { //... }
  @Asynchronous public void doAnalysisB(Document d) { //... }
}{code}
** Example of Future: {code}
@EJB Processor proc;
Task task = new Task(...);
Future<int> computeTask = processor.compute(task);
...
int result = computeTask.get();

// EJB
@Stateless
public class ProcessorBean implements Processor {
  @PersistenceContext EntityManager db;

  @Asynchronous
  public Future<int> compute(Task t) {
    // perform computation
    int result = ...;
    return new javax.ejb.AsynchResult<int>(result);
  }
}
{code}




]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239868</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272618</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6
[JEE6 EJB3]
[JEE6 Servlet3.0]

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239869</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272622</id>
<property name="body"><![CDATA[h1. JEE JPA 2.0
h2. Notes from
* Automatic Orphan Deletion {code}
@Entity public class Order {
  @Id int orderId;
  ...
  @OneToMany(cascade=PERSIST, orphanRemoval=true)
  Set<Item> lineItems;
}{code}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239873</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272623</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6
[JEE6 EJB3]
[JEE6 Servlet3.0]
[JEE6 JPA2.0]

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239874</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272627</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, PaymentProcessor processor, @Default Card cart)
}{code}
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239878</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272629</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239880</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272631</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239882</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272634</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}
* ManagedBean
** Anything injected is a _bean_. Examples include:
*** EJB Session beans
*** Plain classes with {{@ManagedBean}}
*** Any class CDI can discover in a module
*** Example: {code}
@Reliable
@PayBy(CREDIT_CARD)
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as an EJB:{code}
@Reliable
@PayBy(CREDIT_CARD)
//@ManagedBean
@Stateless
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239885</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272633</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}
* ManagedBean
** Anything injected is a _bean_. Examples include:
*** EJB Session beans
*** Plain classes with {{@ManagedBean}}
*** Any class CDI can discover in a module]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239884</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272636</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}
* ManagedBean
** Anything injected is a _bean_. Examples include:
*** EJB Session beans
*** Plain classes with {{@ManagedBean}}
*** Any class CDI can discover in a module
*** Example: {code}
@Reliable
@PayBy(CREDIT_CARD)
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as an EJB:{code}
@Reliable
@PayBy(CREDIT_CARD)
//@ManagedBean
@Stateless
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239887</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272637</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}
* ManagedBean
** Anything injected is a _bean_. Examples include:
*** EJB Session beans
*** Plain classes with {{@ManagedBean}}
*** Any class CDI can discover in a module
*** Example: {code}
@Reliable
@PayBy(CREDIT_CARD)
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as an EJB:{code}
@Reliable
@PayBy(CREDIT_CARD)
//@ManagedBean
@Stateless
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as a Request-scoped Bean:{code}
@Reliable
@PayBy(CREDIT_CARD)
@RequestScoped
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
**** Scopes allowed everywhere: {{@ApplicationScoped, @RequestScoped}}
**** Also allowed in web apps: {{@SessionScoped}}
* Named beans. (Built in support for Unified EL)
** You can name a bean with {{@Named("cart")}}. The refer to it in a JSP page using the EL: {{<h.commandButton value="Checkout" action="#{cart.checkout}">}}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239888</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272639</id>
<property name="body"><![CDATA[h1. Context and Dependency Injection API

* Basics {{@Inject @LoggedIn User user}} user = what, LoggedIn = which one (not string based!)
* Can coexist with {{@Resource}} and {{@PostConstruct}}
* Can inject fields, methods or constructors
** Constructor (My prefered type) Example: {code}
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

// Multiple qualifer example
public class CheckoutHandler {
  @Inject
  CheckoutHandler(@LoggedIn User user, 
      @Reliable
      @PayBy(CREDIT_CARS)
      PaymentProcessor processor, 
      @Default Card cart) {
    // ...
  }
}

{code}
* Easy to write your own qualifiers. Just create an annotation and annotate it with {{@Qualifier}}: {code}
@Qualifer
@Retention(RUNTIME)
@Target({FIELD, TYPE})
public @interface Red{}{code}
* ManagedBean
** Anything injected is a _bean_. Examples include:
*** EJB Session beans
*** Plain classes with {{@ManagedBean}}
*** Any class CDI can discover in a module
*** Example: {code}
@Reliable
@PayBy(CREDIT_CARD)
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as an EJB:{code}
@Reliable
@PayBy(CREDIT_CARD)
//@ManagedBean
@Stateless
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
*** Same example as a Request-scoped Bean:{code}
@Reliable
@PayBy(CREDIT_CARD)
@RequestScoped
@ManagedBean
public class ReliableCreditCardPaymentProcessor implements PaymentProcessor {

  void pay(Amount amount) throws PaymentException {
    ...
  }
}{code}
**** Scopes allowed everywhere: {{@ApplicationScoped, @RequestScoped}}
**** Also allowed in web apps: {{@SessionScoped}}
* Named beans. (Built in support for Unified EL)
** You can name a bean with {{@Named("cart")}}. The refer to it in a JSP page using the EL: {noformat}<h.commandButton value="Checkout" action="#{cart.checkout}">{noformat}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239890</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">13959235</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

+As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work.+ Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

+My naive suggestions for a first cut of data products would be:+

	*1) Spatial grids of benthic annotations by taxa or functional groups.*
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	*2) Vertical distributions of taxa/groups*
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	*3) A time series product, perhaps vertical distribution vs time?*

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot

h4. VARS

The following will use a _Concept_ and all it's children for an analysis. So for example, an analysis of _Squid_ would be an aggregate analysis of +all+ squid.
# 1m Histogram of VARS data for each concept as text file
# 1m Histogram of VARS data for each concept as plot

*Normalized products*
# Normalized vertical distribution
## 1st normalize the VARS distribution by total counts
## Then normalize by dive effort (using normalized EXPD vertical distribution)




]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926471</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">13959236</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

+As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work.+ Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

+My naive suggestions for a first cut of data products would be:+

	*1) Spatial grids of benthic annotations by taxa or functional groups.*
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	*2) Vertical distributions of taxa/groups*
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	*3) A time series product, perhaps vertical distribution vs time?*

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Product relations
[Product Relationships]

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot

h4. VARS

The following will use a _Concept_ and all it's children for an analysis. So for example, an analysis of _Squid_ would be an aggregate analysis of +all+ squid.
# 1m Histogram of VARS data for each concept as text file
# 1m Histogram of VARS data for each concept as plot

*Normalized products*
# Normalized vertical distribution
## 1st normalize the VARS distribution by total counts
## Then normalize by dive effort (using normalized EXPD vertical distribution)




]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926473</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">13959239</id>
<property name="body"><![CDATA[h2. Overview

I'll be storing references to the various artifacts in the VARS Knowledgebase. Here's how the standard products reference each other...]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926475</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">13959240</id>
<property name="body"><![CDATA[{gliffy:name=Artifacts|space=VAAP|page=Artifact Relationships|pageid=13926474|align=left|size=L}
h2. Overview

I'll be storing references to the various artifacts in the VARS Knowledgebase. Here's how the standard products reference each other...]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">13926476</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">15040526</id>
<property name="body"><![CDATA[{gliffy:name=Analysis Framework|space=VAAP|page=Data Analysis Framework|pageid=14516234|align=left|size=L}
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">15007758</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">14549003</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]
* [Data Products]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516236</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">14549004</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]
* [Data Products]
* [Data Analysis Frameworks]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516237</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">14549002</id>
<property name="body"><![CDATA[]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">14516235</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645353</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. {color:blue}Files added under {{/opt/dsg}} should all belong to the group _tomcat_!!{color}. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}. To restart tomcat run: {code}sudo /sbin/service tomcat-dsg restart {code}

{info:title=Configure Tomcat _Manager_ application to handle large files}
When I attempted to upload the {{dsg.war}} I got the following error:
{noformat}
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: 
the request was rejected because its size (53887121) exceeds the configured maximum (52428800)
{noformat}

By default the Manager app only allows WARS upto 50MB to be uploaded; the dsg.war was just slightly larger. To resolve this, I edited {{\webapps\manager\WEB-INF\web.xml}} and changed the max-file-size and max-request-size to something larger. The block to be edited looks like:
{code:xml}
<multipart-config> 
    <!-- 52MB max --> 
    <max-file-size>52428800</max-file-size> 
    <max-request-size>52428800</max-request-size> 
    <file-size-threshold>0</file-size-threshold> 
</multipart-config> 
{code}
{info}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}

h3. Database Replication
Replication from equinox.shore.mbari.org to alaskanwind.wf.mbari.org is run nightly. The following SQL is executed after replication:
{code:sql}
-- For DSG_KB run the following:

UPDATE 
  Media 
SET 
  url = REPLACE(url, 'http://seaspray.shore.mbari.org/dsg',
        'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL


-- For DSG run the following:

UPDATE 
  Media 
SET 
  url = REPLACE(url, 'http://dsg.mbari.org/images/dsg',
        'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL
{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579838</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645352</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. {color:blue}Files added under {{/opt/dsg}} should all belong to the group _tomcat_!!{color}. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}. To restart tomcat run: {code}sudo /sbin/service tomcat-dsg restart {code}

{info:title=Configure Tomcat _Manager_ application to handle large files}
When I attempted to upload the {{dsg.war}} I got the following error:
{noformat}
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: 
the request was rejected because its size (53887121) exceeds the configured maximum (52428800)
{noformat}

By default the Manager app only allows WARS upto 50MB to be uploaded; the dsg.war was just slightly larger. To resolve this, I edited {{\webapps\manager\WEB-INF\web.xml}} and changed the max-file-size and max-request-size to something larger. The block to be edited looks like:
{code:xml}
<multipart-config> 
    <!-- 52MB max --> 
    <max-file-size>52428800</max-file-size> 
    <max-request-size>52428800</max-request-size> 
    <file-size-threshold>0</file-size-threshold> 
</multipart-config> 
{code}
{info}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}

h3. Database Replication
Replication from equinox.shore.mbari.org to alaskanwind.wf.mbari.org is run nightly. The following SQL is executed after replication:
{code:sql}
---- For DSG_KB run the following:

UPDATE 
  Media 
SET 
  url = REPLACE(url, 'http://seaspray.shore.mbari.org/dsg',
        'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL


---- For DSG run the following:

UPDATE 
  Media 
SET 
  url = REPLACE(url, 'http://dsg.mbari.org/images/dsg',
        'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL
{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579837</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645351</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. {color:blue}Files added under {{/opt/dsg}} should all belong to the group _tomcat_!!{color}. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}. To restart tomcat run: {code}sudo /sbin/service tomcat-dsg restart {code}

{info:title=Configure Tomcat _Manager_ application to handle large files}
When I attempted to upload the {{dsg.war}} I got the following error:
{noformat}
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: 
the request was rejected because its size (53887121) exceeds the configured maximum (52428800)
{noformat}

By default the Manager app only allows WARS upto 50MB to be uploaded; the dsg.war was just slightly larger. To resolve this, I edited {{\webapps\manager\WEB-INF\web.xml}} and changed the max-file-size and max-request-size to something larger. The block to be edited looks like:
{code:xml}
<multipart-config> 
    <!-- 52MB max --> 
    <max-file-size>52428800</max-file-size> 
    <max-request-size>52428800</max-request-size> 
    <file-size-threshold>0</file-size-threshold> 
</multipart-config> 
{code}
{info}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579836</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645376</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Infrastructure
* [Source Code|https://bitbucket.org/hohonuuli/deepseaguide]
** [Wiki|https://bitbucket.org/hohonuuli/deepseaguide/wiki/Home]
* [Computers]

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]
* [Data Products]
* [Data Analysis Framework]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579862</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645371</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Infrastructure
* [Computers]

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]
* [Data Products]
* [Data Analysis Framework]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579857</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">19072717</id>
<property name="body"><![CDATA[h2. About Eione

{info:title=Important}
Eione is aliased with the CNAME _dsg.mbari.org_
{info}

Eione is a linux VM whose sole purpose is to host an apache web server in the DMZ. It's hostname is actually _eione.mbari.org_. Content for Eione should be placed in {{/var/www/website}}, which is pretty much the only directory non-root users can write to. The following directories are of special interest:

h3. /var/www/website/frameGrabs

This directory contains water-marked annotation images. All non-embargoed images are watermarked and copied here.

h3. /var/www/website/images/dsg

This is a symlink to {{/mbari/dsg/kbimages}} which, in-turn, is the share \\Tornado\VideoLab\VARS_Images mounted on Eione.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19039993</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272562</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [JEE 6]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239812</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272561</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239810</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272558</id>
<property name="body"><![CDATA[]]></property>
<property name="content" class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">11239807</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272576</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
public class SharedBean {
  private SharedData shared;
  
  @PostConstruct
  private void init() {
    shared = ...;
  }

  public int getXYZ();
    return shared.xyz;
  }
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}





]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239826</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272578</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
// EJB
@Singleton
// @Startup // optionally create this bean eagerly
public class SharedBean {
  private SharedData shared;
  
  // Note we can do things during construction and teardown (optional)
  @PostConstruct
  private void init() {
    shared = ...;
  }

  @PreDestroy
  private void destroy() {
    ...
  }

  public int getXYZ();
    return shared.xyz;
  }

  
} 

// Client
@Stateless
public class FooBean {
  // Inject reference to Singleton bean 
  @EJB
  private SharedBean shared

  public void foo() {
    int xyz = shared.getXYZ();
    ...
  }
}
{code}
** Concurrecy options: Single threaded (default), Container Managed (via method-level locking metadata), Bean Managed (all concurrent invocation can access bean instance)
* Improvements to EJB timer service. 
** richer calendar-base way to express timer expressions (like cron, but better)






]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239828</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272572</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean);
// ...
c.close();{code}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239822</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272574</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Message-Driven Beans, Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}
* Embeddable EJBContainer for testing or JSE use: {code}
EJBContainer c = EJBContainer.createEJBContainer();
Bank bank = (Bank) c.getContext().lookup("java:global/bank/BankBean");
// ...
c.close();{code}
* New Features
** Singletongs
*** Allows shared state
*** Designed for concurrent access
*** Lots in common with stateless/stateful beans
*** Example: {code}
@Singleton
public class SharedBean {
  private SharedData shared;
  
  @PostConstruct
  private void init() {
    shared = ...;
  }

  public int getXYZ();
    return shared.xyz;
  }
} {code}





]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239824</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272568</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Messag-Driven Beans Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/app-nanme]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<modeul-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239818</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272570</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Profiles
** Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors
** Full profile: Lite + Messag-Driven Beans Timer Servie, Async method calls, CMP/BMP Entity Beans
* Portable JNDI names:
** Globally unique name: {noformat}java:global[/<app-name>]/<module-name>/<ejb-name>{noformat}
** Unique name within same application: {noformat}java:app/<module-name>/<ejb-name>{noformat}
** Unique name within defining module: {noformat}java:module/<ejb-name>{noformat}
** Example: {code} 
@Stateless
public class HelloBean implements Hello {
    public String sayHello(String msg) {
        return "Hello, " + msg;
    }
}{code}If deployed as hello.jar, JNDI entries are:{noformat}
java:global/hello/HelloBean
java:app/hello/HelloBean
java:module/HelloBean{noformat}

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239820</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272566</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6

h3. EJB 3

h4. Notes from [http://link.brightcove.com/services/player/bcpid41652637001?bctid=57567574001]
* EJB allows 'interface-less' session beans. 
* EJB's can now be packaged in WAR files. EAR's are not required
* Web profile: Local Session Beans, CMT/MBT, Declarative Security, Interceptors

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239816</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285452</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]
* [Data Products]
* [Data Analysis Framework]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252708</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285458</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252714</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285462</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

h2. DSG_KB info
The DSG_KB is a copy of the local VARS_KB with the following SQL executed after copy:
{code:sql}
UPDATE 
  CameraData 
SET 
  StillImageURL = REPLACE(StillImageURL,  'http://search.mbari.org/ARCHIVE', 'http://dsg.mbari.org') 
WHERE 
  StillImageURL IS NOT NULL 
GO
{code}

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252718</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285460</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252716</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285465</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

h2. DSG_KB info
The DSG_KB is a copy of the local VARS_KB with the following SQL executed after copy:
{code:sql}
UPDATE 
  URLArtifact 
SET 
  url = REPLACE(StillImageURL,  'http://seaspray.shore.mbari.org/dsg', 'http://seadog.wf.mbari.org:8082/www/dsg') 
WHERE 
  url IS NOT NULL 
GO
{code}

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252721</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285464</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

h2. DSG_KB info
The DSG_KB is a copy of the local VARS_KB with the following SQL executed after copy:
{code:sql}
UPDATE 
  URLArtifact 
SET 
  url = REPLACE(StillImageURL,  'http://seaspray.shore.mbari.org/dsg', 'http://seadog.wf.mbari.org:8082/www/dsg') 
WHERE 
  url IS NOT NULL 
GO
{code}

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252720</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285467</id>
<property name="body"><![CDATA[Computers that are involved with running DSG at MBARI
||Computer||Role||
|[Alaskanwind]|Western Flyer database server|
|[Dione]|External database server|
|[Eione]|External web server|
|[Equinox]|*Master database server|
|[Seaspray]|Internal Web and Web application server. Support process host|

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252723</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285474</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

h3. Static Content
Static content was copied as follows:
# *Knowledgebase Images* {code}ssh eione.mbari.org
cd /var/www/website/images
scp -r dsg brian@seadog.wf.mbari.org:/opt/dsg/www/vars/knowledgebase/images{code}
# *Deep-sea Guide Artifacts* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252730</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285473</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252729</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285471</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. ]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252727</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285478</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

h3. Static Content
Static content was copied as follows:
# *Knowledgebase Images* {code}ssh eione.mbari.org
cd /var/www/website/images
scp -r dsg brian@seadog.wf.mbari.org:/opt/dsg/www/vars/knowledgebase/images{code}
# *Deep-sea Guide Artifacts* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252734</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285479</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

h3. Static Content
Static content was copied as follows:
# *Knowledgebase Images* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images
scp -r dsg brian@seadog.wf.mbari.org:/opt/dsg/www/vars/knowledgebase/images{code}
# *Deep-sea Guide Artifacts* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252735</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18285481</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

h3. Static Content
Static content was copied as follows:
# *Knowledgebase Images* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *Deep-sea Guide Artifacts* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18252737</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645561</id>
<property name="body"><![CDATA[h2. About Ulikai

This VM is running RHEL 6.2. It has 12GB of RAM available and 4 CPU's. The weekly processing is run as the user 'brian'.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580053</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645556</id>
<property name="body"><![CDATA[Computers that are involved with running DSG at MBARI
||Computer||Role||
|[Alaskanwind]|Western Flyer database server|
|[Dione]|External database server|
|[Eione]|External web server|
|[Equinox]|*Master database server|
|[Seadog]|Western Flyer Web and Web application server|
|[Seaspray]|Internal Web and Web application server. Support process host|

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580049</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645557</id>
<property name="body"><![CDATA[Computers that are involved with running DSG at MBARI
||Computer||Role||
|[Alaskanwind]|Western Flyer database server|
|[Dione]|External database server|
|[Eione]|External web server|
|[Equinox]|*Master database server|
|[Seadog]|Western Flyer Web and Web application server|
|[Seaspray]|Internal Web and Web application server. Support process host|
|[Ulikai]|Weekly processing of data products|

]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580050</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645568</id>
<property name="body"><![CDATA[h2. About Dione

Dione (dione.mbari.org)]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580061</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645566</id>
<property name="body"><![CDATA[h2. About Eione

Eione is a linux VM whose sole purpose is to host an apache web server in the DMZ. It's hostname is actually _eione.mbari.org_. Content for Eione should be placed in {{/var/www/website}}, which is pretty much the only directory non-root users can write to. The following directories are of special interest:

h3. /var/www/website/frameGrabs

This directory contains water-marked annotation images. All non-embargoed images are watermarked and copied here.

h3. /var/www/website/images/dsg

This is a symlink to {{/mbari/dsg/kbimages}} which, in-turn, is the share \\Tornado\VideoLab\VARS_Images mounted on Eione.]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18580059</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829395</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work. Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

_My naive suggestions for a first cut of data products would be:_

	*1) Spatial grids of benthic annotations by taxa or functional groups.*
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	2) Vertical distributions of taxa/groups
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	3) A time series product, perhaps vertical distribution vs time?

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot
h4. VARS
# 1m Histogram of VARS data as text file


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796636</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829397</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

+As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work.+ Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

+My naive suggestions for a first cut of data products would be:+

	*1) Spatial grids of benthic annotations by taxa or functional groups.*
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	*2) Vertical distributions of taxa/groups*
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	*3) A time series product, perhaps vertical distribution vs time?*

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot
h4. VARS
# 1m Histogram of VARS data as text file


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796638</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829399</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

+As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work.+ Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

+My naive suggestions for a first cut of data products would be:+

	*1) Spatial grids of benthic annotations by taxa or functional groups.*
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	*2) Vertical distributions of taxa/groups*
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	*3) A time series product, perhaps vertical distribution vs time?*

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot

h4. VARS
The following will use a _Concept_ and all it's children for an analysis. So for example, an analysis of _Squid_ would be an aggregate analysis of +all+ squid.
# 1m Histogram of VARS data as text file



]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796640</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829386</id>
<property name="body"><![CDATA[h1. Web Application Technologies

VAAP will be making extensive use of the vars API hosted at [http://code.google.com/p/vars-redux/]. Since this is a pure Java API, the Web Application stack will also be written in Java to leverage as much as existing code as possible. In this wiki page, I'll be taking notes to help define the web technologies to use when developing VAAP.

h2. JEE 6
[JEE6 EJB3]
[JEE6 Servlet3.0]
[JEE6 JPA2.0]
[JEE6 CDI]
]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796627</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829389</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]
* [Migrating to Equinox]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796630</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829392</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work. Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

My naive suggestions for a first cut of data products would be:

	1) Spatial grids of benthic annotations by taxa or functional groups. 
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	2) Vertical distributions of taxa/groups
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	3) A time series product, perhaps vertical distribution vs time?

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot
h4. VARS
# 1m Histogram of VARS data as text file


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796633</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11829393</id>
<property name="body"><![CDATA[h2. Overview

[~brian] sent out this message on January 4th 2010:

{quote}
Happy new year everyone,

With the start of the new year, I'm kicking off the work for the Video Annotation and Presentation project (VAAP) (see https://mww.mbari.org/resources/2010_Proposal_Process/phase_I_pdfs/901022_Video_Annotation_Analysis_and_Presentation.pdf)

As per management request, my first task is to figure out what VARS-derived data products are useful for your 'Biodiversity Initiative' work. Since the original idea of the VAAP project was to use techniques that we've already developed, here's the grocery list of work-that-has-been-done-before:
	- Separating benthic annotations from midwater annotations
	- Generating grids (e.g. maps) from annotations that are useful for spatial analysis
	- Creating vertical distributions (i.e. both altitude and depth, either aggregated or as a timeseries)
	- Normalizing annotation data base on ROV effort (very roughly normalized)

We can slice-and-dice the annotations in any way you see fit. Some examples are:
	- by taxa
	- by functional group (if you provide me with a list of organisms in the group you are interested in)
	- by spatial bounds

As a first cut, it might be best to generate products that give 'the big picture'. In my mind the big picture is: 
	- what is the horizontal and vertical spatial distribution of the critters (and for Charlie, the rocks :-)
	-Do these distributions change over time.  

_My naive suggestions for a first cut of data products would be:_

	1) Spatial grids of benthic annotations by taxa or functional groups. 
		a) An aggregate grid for each taxa/group spanning all annotations within Monterey Bay. This would provide an overview of where a taxa/group has been found
		b) Grids for each taxa/group representing discrete time periods (for example, one grid for each year or grids for each oceanographic season). This would give some indication of change in the community structure. 

	2) Vertical distributions of taxa/groups
		a) Aggregate vertical distributions (i.e. annotations from any time)
		b) vertical distributions for discrete time periods (again, either yearly or by oceanographic season)
		c) Same as a and b above but normalized by ROV effort

	3) A time series product, perhaps vertical distribution vs time?

Please let me know if these products are useful for you. If you have other ideas please let me know. Again, these just represent a starting point; other data products can and will be added later as you determine what questions you're interested in examining for the Biodiversity Initiative.
{quote}

No scientist responded to the email.

h2. Tentative Products
h3. Aggregated over entire data series from surface to 4000m with Monterey Bay
{color:red}What spatial bounds do scientists want?{color}
h4. EXPD
# 1m Histogram of EXPD data as text file
# 1m Histogram of EXPD data as plot
# 1m Histogram of EXPD normalized by total counts as text file
# 1m Histogram of EXPD normalized by total counts as plot
h4. VARS
# 1m Histogram of VARS data as text file


]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11796634</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272760</id>
<property name="body"><![CDATA[
This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11240012</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645013</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. {color:blue}Files added under {{/opt/dsg}} should all belong to the group _tomcat_!!{color}. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}. To restart tomcat run: {code}sudo /sbin/service tomcat-dsg restart {code}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579477</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645011</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

h2. DSG_KB info
The DSG_KB database is a copy of the local VARS_KB with the following SQL executed after copy:
{code:sql}
UPDATE 
  Media 
SET 
  url = REPLACE(url,  'http://seaspray.shore.mbari.org/dsg', 'http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images') 
WHERE 
  url IS NOT NULL 
GO
{code}


h2. DSG info
The DSG database is a copy of DSG from Equinox with the following SQL applied:
{code:sql}
UPDATE 
  URLArtifact 
SET 
  url = REPLACE(url,  'http://seaspray.shore.mbari.org/dsg', 'http://seadog.wf.mbari.org:8082/www/dsg') 
WHERE 
  url IS NOT NULL 
GO
{code}

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579475</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645004</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}. To restart tomcat run: {code}sudo /sbin/service tomcat-dsg restart {code}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579468</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18644996</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579460</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645002</id>
<property name="body"><![CDATA[h2. About alaskanwind.wf.mbari.org

Alaskanwind hosts the MS SQL Server 2008 with the following databases:
||Database||Role||
|DSG|DSG data|
|DSG_KB|The VARS_KB database that's been copied and has URL's modified to point to local references|

h2. DSG_KB info
The DSG_KB database is a copy of the local VARS_KB with the following SQL executed after copy:
{code:sql}

{code}


h2. DSG info
The DSG database is a copy of DSG from Equinox with the following SQL applied:
{code:sql}
UPDATE 
  URLArtifact 
SET 
  url = REPLACE(StillImageURL,  'http://seaspray.shore.mbari.org/dsg', 'http://seadog.wf.mbari.org:8082/www/dsg') 
WHERE 
  url IS NOT NULL 
GO
{code}

{info:title=More Info}
For notes on the setup of the DSG on Alaskanwind see [https://oceana.mbari.org/jira/browse/VAAP-33]
{info}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579466</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">18645000</id>
<property name="body"><![CDATA[h2. About seadog.wf.mbari.org
Seadog acts as the web application server for the Deep-sea Guide on the Western Flyer. All content is servered via an instance of Tomcat. All DSG content and applications exist in {{/opt/dsg}}. 

h3. Tomcat
Tomcat resides in {{/opt/dsg/tomcat/apache-tomcat-7.0.23}} and is [visible via port 8082|http://seadog.wf.mbari.org:8082]. It has been configured to run on non-default ports so that it does not interact with another [Tomcat on Seadog that is running JIRA|http://seadog.wf.mbari.org:8080] on the default ports. This instance of Tomcat has been modified to serve static DSG content stored in {{/opt/dsg/www}}. 

{info:title="Configure Tomcat to Serve Static Files}
Suppose you have a /var/project/images directory which stores a number of images for your project. If you want this directory to be exposed through http protocol, all you have to do is to add a <Context> parameter to the <Host> section of Tomcat's server.xml:

{code:xml}
<Server port="8025" shutdown="SHUTDOWN">
  ...
  <Service name="Catalina">
    ...
    <Engine defaultHost="localhost" name="Catalina">
      ...
      <Host appBase="webapps"
          autoDeploy="false" name="localhost" unpackWARs="true"
          xmlNamespaceAware="false" xmlValidation="false">
        ...
        <Context
            docBase="/var/project/images"
            path="/project/images" />
      </Host>
    </Engine>
  </Service>
</Server>
{code}

Note that docBase parameter is set to the path on hard drive and path parameter is set to the context path for your files. Now, if you have a /var/project/images/sample.png file, it can be seen at http://localhost:8084/project/images/sample.png.

[Source|http://th1rty7.blogspot.com/2009/05/tomcat-is-often-considered-to-be-too.html]

{info}

The startup script is located at {{/etc/init.d/tomcat-dsg}}. It is run under the user _tomcat_. [~brian] has sudo permissions on {{/sbin/service}} and {{/sbin/chkservice}}.

h3. Static Content
Static content was copied as follows:
# *[Knowledgebase Images|http://seadog.wf.mbari.org:8082/www/vars/knowledgebase/images]* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/vars/knowledgebase
scp -r brian@eione.mbari.org:/var/www/website/images/dsg images{code}
# *[Deep-sea Guide Artifact|http://seadog.wf.mbari.org:8082/www/dsg]s* {code}ssh seadog.wf.mbari.org
cd /opt/dsg/www/dsg
scp -r brian@seaspray.shore.mbari.org:/var/www/html/dsg/artifacts artifacts{code}]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">18579464</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">19073491</id>
<property name="body"><![CDATA[h2. About Eione

{info:title=Important}
Eione is aliased with the CNAME _dsg.mbari.org_
{info}

Eione is a linux VM whose sole purpose is to host an apache web server and a tomcat application server in the DMZ. It's hostname is actually _eione.mbari.org_. Content for Eione should be placed in {{/var/www/website}}, which is pretty much the only directory non-root users can write to. The following directories are of special interest:

h3. /var/www/website/frameGrabs

This directory contains water-marked annotation images. All non-embargoed images are watermarked and copied here.

h3. /var/www/website/images/dsg

This is a symlink to {{/mbari/dsg/kbimages}} which, in-turn, is the share \\Tornado\VideoLab\VARS_Images mounted on Eione.

h3. Tomcat and the Deep Sea Guide
The Deep Sea Guide is hosted on tomcat. Notes on the tomcat installation can be found at https://oceana.mbari.org/jira/browse/VAAP-42]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">19040796</id>
</property>
</object>
<object class="SpaceDescription" package="com.atlassian.confluence.spaces">
<id name="id">11239809</id>
<property name="title"/><collection name="bodyContents"><element class="BodyContent" package="com.atlassian.confluence.core"><id name="id">11272560</id>
</element>
</collection>
<property name="version">1</property>
<property name="creatorName"><![CDATA[brian]]></property>
<property name="creationDate">2010-02-05 09:56:29.653</property>
<property name="lastModifierName"><![CDATA[brian]]></property>
<property name="lastModificationDate">2010-02-05 09:56:29.653</property>
<property name="versionComment"><![CDATA[]]></property>
<property name="originalVersion" class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">11239807</id>
</property>
<property name="contentStatus"><![CDATA[current]]></property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272714</id>
<property name="body"><![CDATA[{gliffy:name=Page Flow|space=VAAP|page=Home|pageid=11239808|align=left|size=L}
This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239966</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272713</id>
<property name="body"><![CDATA[This is the home page for the 901022 - Video Annotation Analysis and Presentation space.

h2. Notes

* [Web Application Technologies]]]></property>
<property name="content" class="Page" package="com.atlassian.confluence.pages"><id name="id">11239965</id>
</property>
</object>
<object class="BodyContent" package="com.atlassian.confluence.core">
<id name="id">11272560</id>
<property name="body"><![CDATA[]]></property>
<property name="content" class="SpaceDescription" package="com.atlassian.confluence.spaces"><id name="id">11239809</id>
</property>
</object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11796632</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18580051</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239842</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18580055</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239838</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18580057</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18252712</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18252710</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239876</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18580051</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">14516234</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18580055</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">13926474</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239871</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239876</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239871</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239842</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239838</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18252725</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18252725</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">14516234</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239814</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18252712</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18252710</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239808</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">13926474</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">18580057</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239808</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11239814</property>
<property name="key"><![CDATA[socialbookmarkingurl]]></property>
</composite-id>
<property name="type">6</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
<object class="BucketPropertySetItem" package="bucket.user.propertyset">
<composite-id><property name="entityName"><![CDATA[confluence_ContentEntityObject]]></property>
<property name="entityId">11796632</property>
<property name="key"><![CDATA[isbookmark]]></property>
</composite-id>
<property name="type">5</property>
<property name="booleanVal">false</property>
<property name="doubleVal">0.0</property>
<property name="stringVal"/><property name="textVal"><![CDATA[]]></property>
<property name="longVal">0</property>
<property name="intVal">0</property>
<property name="dateVal"/></object>
</hibernate-generic>