]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Adapt to OSGi on the server side
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 28 Feb 2009 11:13:26 +0000 (11:13 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 28 Feb 2009 11:13:26 +0000 (11:13 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2204 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

43 files changed:
demo/org.argeo.slc.demo.manager/pom.xml
org.argeo.slc.detached.launcher/pom.xml
org.argeo.slc.detached.launcher/src/main/java/org/argeo/slc/detached/launcher/Main.java
org.argeo.slc/pom.xml
runtime/org.argeo.slc.server/pom.xml
runtime/org.argeo.slc.support.activemq/pom.xml
server/org.argeo.slc.siteserver/bundles/context.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/logging/META-INF/MANIFEST.MF [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/logging/log4j.properties [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/MANIFEST.MF [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/activemq-conf.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/MANIFEST.MF [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/spring/db-osgi.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/spring/db.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/classes/log4j.properties [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/doc-servlet.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/osgi.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/slc-service-servlet.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/slc-ws-servlet.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt-servlet.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt/resultView.xsl [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt/viewXml.xsl [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/index.jsp [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/style.css [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/META-INF/MANIFEST.MF [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/log4j.properties [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.class [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.java [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.class [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.java [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/web.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/hello-osgi-world.jsp [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/bullet.gif [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource-logo.png [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource_banner.png [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/index.html [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/jsp-tag-osgi-world.jsp [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/simple-webapp.war/styles/springsource.css [new file with mode: 0644]
server/org.argeo.slc.siteserver/pom.xml

index a4caecfc95c77885e2ad4e8e0f62e0286c72c221..dfb9204e738523ea5afadf0b15a655272be8644f 100644 (file)
@@ -21,7 +21,7 @@
                                <configuration>
                                        <instructions>
                                                <Import-Package>org.apache.commons.logging,org.springframework.beans.factory.config</Import-Package>
-                                               <Require-Bundle>org.springframework.jms,com.springsource.org.castor,com.springsource.org.apache.xbean.spring,com.springsource.org.apache.activemq,org.argeo.slc.support.equinox,org.argeo.slc.support.activemq,org.argeo.slc.specs,org.argeo.slc.support.simple,org.springframework.aop,org.springframework.oxm,com.springsource.net.sf.cglib,com.springsource.org.aopalliance</Require-Bundle>
+                                               <Require-Bundle>org.springframework.jms,com.springsource.org.castor,org.argeo.dep.osgi.activemq,org.argeo.slc.support.equinox,org.argeo.slc.support.activemq,org.argeo.slc.specs,org.argeo.slc.support.simple,org.springframework.aop,org.springframework.oxm,com.springsource.net.sf.cglib,com.springsource.org.aopalliance</Require-Bundle>
                                                <Spring-Context>conf/*</Spring-Context>
                                        </instructions>
                                </configuration>
index 813a0cc1bb95590d04a666d8f9b3f9fc1307985c..b101f93dcab9fe0ccf2062396e3aa8f27ba30efb 100644 (file)
                        <groupId>org.eclipse.osgi</groupId>
                        <artifactId>org.eclipse.osgi</artifactId>
                </dependency>
-
+<!-- 
                <dependency>
                        <groupId>org.springframework.osgi</groupId>
                        <artifactId>org.springframework.osgi.extender</artifactId>
                </dependency>
-
+ -->
 
                <!--
                        Old <dependency> <groupId>org.springframework</groupId>
                        <artifactId>org.argeo.slc.detached.ext.log4j</artifactId>
                        <version>0.11.2</version> </dependency>
                -->
-               <!-- Spring -->
+               <!-- Spring
                <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>org.springframework.context</artifactId>
                </dependency>
-
+ -->
                <!--
                        <dependency> <groupId>org.apache.xerces</groupId>
                        <artifactId>com.springsource.org.apache.xerces</artifactId>
                        com.springsource.edu.emory.mathcs.backport </artifactId>
                        </dependency>
                -->
+               <!-- 
                <dependency>
                        <groupId>org.apache.commons</groupId>
                        <artifactId>
                <dependency>
                        <groupId>org.apache.log4j</groupId>
                        <artifactId>com.springsource.org.apache.log4j</artifactId>
-               </dependency>
+               </dependency> -->
                <!--
                        <dependency> <groupId>org.slf4j</groupId>
                        <artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
index 17b5f139e28473f54718b3f76e06c0e4a55fa8b0..1319750885eab2ba0e658670d640ff47114c1aea 100644 (file)
@@ -79,6 +79,7 @@ public class Main {
        }
 
        public static void startEquinox(Properties config) throws Exception {
+               info("java.home=" + System.getProperty("java.home"));
                info("java.class.path=" + System.getProperty("java.class.path"));
 
                File baseDir = new File(System.getProperty("user.dir"))
@@ -109,7 +110,8 @@ public class Main {
                                        String url = "reference:file:"
                                                        + new File(path).getCanonicalPath();
                                        Bundle bundle = context.installBundle(url);
-                                       installBundleNames.add(bundle.getSymbolicName());
+                                       if (bundle.getSymbolicName() != null)
+                                               installBundleNames.add(bundle.getSymbolicName());
                                        info("Installed from classpath " + url);
                                } catch (Exception e) {
                                        bundleInstallWarn(e.getMessage());
@@ -157,12 +159,15 @@ public class Main {
 
                if (bundleStart.trim().equals("*")) {
                        for (int i = 0; i < installBundleNames.size(); i++) {
-                               String bundleSymbolicName = installBundleNames.get(i)
-                                               .toString();
-                               try {
-                                       startBundle(context, bundleSymbolicName);
-                               } catch (Exception e) {
-                                       bundleInstallWarn(e.getMessage());
+                               Object obj = installBundleNames.get(i);
+                               if (obj != null) {
+                                       String bundleSymbolicName = obj.toString();
+                                       try {
+                                               startBundle(context, bundleSymbolicName);
+                                       } catch (Exception e) {
+                                               bundleInstallWarn("Cannot start " + bundleSymbolicName
+                                                               + ": " + e.getMessage());
+                                       }
                                }
                        }
                } else {
@@ -207,13 +212,14 @@ public class Main {
                for (int i = 0; i < bundles.length; i++) {
                        Bundle bundle = bundles[i];
                        String bundleSymbolicName = bundle.getSymbolicName();
-                       if (bundleSymbolicName == null)
-                               throw new RuntimeException("Bundle " + bundle.getBundleId()
-                                               + " (" + bundle.getLocation()
-                                               + ") has no symbolic name.");
+                       if (bundleSymbolicName != null) {
+                               // throw new RuntimeException("Bundle " + bundle.getBundleId()
+                               // + " (" + bundle.getLocation()
+                               // + ") has no symbolic name.");
 
-                       if (bundleSymbolicName.equals(symbolicName)) {
-                               return bundle;
+                               if (bundleSymbolicName.equals(symbolicName)) {
+                                       return bundle;
+                               }
                        }
                }
                return null;
@@ -285,10 +291,11 @@ public class Main {
        }
 
        private static void info(Object obj) {
-               //System.out.println("[INFO] " + obj);
+               System.out.println("[INFO] " + obj);
        }
 
        private static void bundleInstallWarn(Object obj) {
                System.err.println("[WARN] " + obj);
+               //Thread.dumpStack();
        }
 }
index 1416cfd53f58e72496cd7d07da9bc6e24038347a..a0e05c72857659b968998fd66bcef3092b60e981 100644 (file)
@@ -766,12 +766,12 @@ limitations under the License.
                        </dependency>
 
                        <!-- ActiveMQ -->
-                       <dependency>
+                       <!--  <dependency>
                                <groupId>org.apache.activemq</groupId>
                                <artifactId>com.springsource.org.apache.activemq</artifactId>
                                <version>${version.activemq}</version>
-                       </dependency>
-                       <dependency>
+                       </dependency>-->
+                       <!-- <dependency>
                                <groupId>org.apache.activemq</groupId>
                                <artifactId>com.springsource.org.apache.activemq.web</artifactId>
                                <version>${version.activemq}</version>
@@ -780,24 +780,16 @@ limitations under the License.
                                <groupId>org.apache.activemq</groupId>
                                <artifactId>com.springsource.org.apache.activemq.pool</artifactId>
                                <version>${version.activemq}</version>
-                       </dependency>
-                       <!--
-                               <dependency> <groupId>org.apache.activemq</groupId>
-                               <artifactId>activemq-pool</artifactId>
-                               <version>${version.activemq}</version> </dependency> <dependency>
-                               <groupId>org.apache.activemq</groupId>
-                               <artifactId>activemq-optional</artifactId>
-                               <version>${version.activemq}</version> </dependency>
-                       -->
-                       <dependency>
+                       </dependency> -->
+                       <!-- <dependency>
                                <groupId>org.apache.xbean</groupId>
                                <artifactId>com.springsource.org.apache.xbean.spring</artifactId>
                                <version>3.3.0</version>
-                       </dependency>
+                       </dependency>-->
                        <dependency>
                                <groupId>org.apache.camel</groupId>
                                <artifactId>com.springsource.org.apache.camel</artifactId>
-                               <version>1.3.0</version>
+                               <version>1.3.0</version> 
                        </dependency>
 
                </dependencies>
index e1d686aa38529852c6ffad76aefe3ff2f80bcb44..4e2fcf708d887a06507acf2ed06a9749da199023 100644 (file)
                        <artifactId>com.springsource.javax.wsdl</artifactId>
                </dependency>
 
-               <!-- ActiveMQ -->
+               <!-- ActiveMQ
                <dependency>
                        <groupId>org.apache.activemq</groupId>
                        <artifactId>com.springsource.org.apache.activemq.web</artifactId>
-               </dependency>
+               </dependency> -->
 
                <!-- Various -->
                <dependency>
index 97da097ad6c2ca014f786304a50b4fed51402095..e1894a7884c239c61d574c7f9bdb58e5339de90c 100644 (file)
                        <artifactId>com.springsource.javax.management.j2ee</artifactId>
                </dependency>
 
-               <!-- ActiveMQ -->
+               <!-- ActiveMQ
                <dependency>
                        <groupId>org.apache.activemq</groupId>
                        <artifactId>com.springsource.org.apache.activemq</artifactId>
                <dependency>
                        <groupId>org.apache.xbean</groupId>
                        <artifactId>com.springsource.org.apache.xbean.spring</artifactId>
+                       
+               </dependency>
+                -->
+                
+               <dependency>
+                       <groupId>org.argeo.dep.osgi</groupId>
+                       <artifactId>org.argeo.dep.osgi.activemq</artifactId>
+                       <version>5.2.0</version>
                </dependency>
                <!--
                        <dependency> <groupId>org.apache.activemq</groupId>
                        <artifactId>com.springsource.javax.servlet</artifactId>
                </dependency>
 
+               <dependency>
+                       <groupId>org.apache.camel</groupId>
+                       <artifactId>com.springsource.org.apache.camel</artifactId>
+               </dependency>
+
                
        </dependencies>
 </project>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/context.xml b/server/org.argeo.slc.siteserver/bundles/context.xml
new file mode 100644 (file)
index 0000000..7ec1a09
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!-- Local configuration of the Argeo SLC server -->
+<Context>
+
+       <!-- Default set of monitored resources -->
+       <WatchedResource>WEB-INF/web.xml</WatchedResource>
+
+       <!--  
+               <Resource name="jdbc/mainDs" auth="Container"
+               type="javax.sql.DataSource" maxActive="10" maxIdle="5" maxWait="10000"
+               username="root" password="" driverClassName="com.mysql.jdbc.Driver"
+               url="jdbc:mysql://localhost:3306/argeo_slc?autoReconnect=true" />
+               
+               <Parameter name="sessionFactoryParentBean"
+               value="slcServerDefault.sessionFactory.MySQL5" override="false" />
+       -->
+
+       <Resource name="jdbc/mainDs" auth="Container"
+               type="javax.sql.DataSource" maxActive="10" maxIdle="5" maxWait="10000"
+               username="sa" password="" driverClassName="org.hsqldb.jdbcDriver"
+               url="jdbc:hsqldb:mem:test" />
+
+</Context>
diff --git a/server/org.argeo.slc.siteserver/bundles/logging/META-INF/MANIFEST.MF b/server/org.argeo.slc.siteserver/bundles/logging/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..35ccf46
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-Name: Log4j configuration bundle\r
+Bundle-SymbolicName: server.logging\r
+Fragment-Host: com.springsource.org.apache.log4j\r
+\r
diff --git a/server/org.argeo.slc.siteserver/bundles/logging/log4j.properties b/server/org.argeo.slc.siteserver/bundles/logging/log4j.properties
new file mode 100644 (file)
index 0000000..0c8ac58
--- /dev/null
@@ -0,0 +1,21 @@
+log4j.rootLogger=WARN, console
+
+## Levels
+log4j.logger.org.argeo=DEBUG
+log4j.logger.org.argeo.slc.execution.ExecutionParameterPostProcessor=TRACE
+log4j.logger.org.argeo.slc.execution.ExecutionContext=DEBUG
+log4j.logger.org.argeo.slc.execution.SimpleExecutionSpec=DEBUG
+
+log4j.logger.org.springframework=WARN
+
+log4j.logger.org.apache.catalina=INFO
+
+## Appenders
+# console is set to be a ConsoleAppender.
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+
+# console uses PatternLayout.
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n
+
+testCase=002
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/MANIFEST.MF b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..b3b78be
--- /dev/null
@@ -0,0 +1,15 @@
+Bundle-SymbolicName: org.argeo.slc.server.activemq
+Bundle-Version: 0.1.0
+Import-Package: javax.jms,
+ javax.management.j2ee.statistics,
+ org.apache.commons.logging
+Require-Bundle: org.argeo.slc.server,
+ org.argeo.slc.support.activemq,
+ org.springframework.core,
+ org.springframework.context,
+ org.springframework.beans,
+ org.springframework.oxm,
+ org.springframework.jms,
+ com.springsource.org.castor,
+ org.argeo.dep.osgi.activemq
+Spring-Context: *;create-asynchronously:=false 
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml
new file mode 100644 (file)
index 0000000..c8c8846
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+       <import resource="classpath:org/argeo/slc/activemq/spring.xml" />
+
+       <!--
+               Create embedded broker <amq:broker useJmx="false" persistent="false">
+               <amq:transportConnectors> <amq:transportConnector
+               uri="tcp://localhost:61616" /> </amq:transportConnectors>
+               </amq:broker>
+       -->
+
+       <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean">
+               <property name="config" value="classpath:activemq-conf.xml" />
+               <property name="start" value="true" />
+       </bean>
+
+
+       <bean id="template.jms.listenerContainer" parent="slcTemplate.jms.listenerContainer"
+               abstract="true">
+       </bean>
+
+       <bean id="template.jms.listenerAdapter" parent="slcTemplate.jms.listenerAdapterCastor"
+               abstract="true">
+       </bean>
+
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/activemq-conf.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/activemq-conf.xml
new file mode 100644 (file)
index 0000000..9ed5ed1
--- /dev/null
@@ -0,0 +1,23 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.xsd   
+  http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
+       
+       <broker xmlns="http://activemq.apache.org/schema/core"
+               brokerName="localhost" persistent="false">
+
+
+               <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
+               <managementContext>
+                       <managementContext createConnector="false" />
+               </managementContext>
+
+               <!-- The transport connectors ActiveMQ will listen to -->
+               <transportConnectors>
+                       <transportConnector name="openwire" uri="tcp://localhost:61616"
+                               discoveryUri="multicast://default" />
+               </transportConnectors>
+
+       </broker>
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/MANIFEST.MF b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..f79d003
--- /dev/null
@@ -0,0 +1,14 @@
+Bundle-SymbolicName: org.argeo.slc.server.hibernate
+Bundle-Version: 0.1.0
+Require-Bundle: org.argeo.slc.server,
+ org.argeo.slc.specs,
+ org.argeo.slc.support.simple,
+ org.springframework.orm,
+ org.springframework.jdbc,
+ org.springframework.context,
+ org.springframework.context.support,
+ com.springsource.net.sf.ehcache,
+ com.springsource.org.hsqldb,
+ com.springsource.org.hibernate
+Spring-Context: *;create-asynchronously:=false 
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/spring/db-osgi.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/spring/db-osgi.xml
new file mode 100644 (file)
index 0000000..e042866
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <service interface="org.argeo.slc.dao.test.tree.TreeTestResultDao"\r
+               ref="testResultDao" />\r
+       <service interface="org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao"\r
+               ref="testResultCollectionDao" />\r
+       <service interface="org.argeo.slc.dao.test.TestRunDescriptorDao"\r
+               ref="testRunDescriptorDao" />\r
+       <service interface="org.argeo.slc.dao.process.SlcExecutionDao"\r
+               ref="slcExecutionDao" />\r
+       <service interface="org.argeo.slc.dao.runtime.SlcAgentDescriptorDao"\r
+               ref="slcAgentDescriptorDao" />\r
+                \r
+       <service interface="org.hibernate.SessionFactory"\r
+               ref="sessionFactory" />\r
+                \r
+</beans:beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/spring/db.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.hibernate/META-INF/spring/db.xml
new file mode 100644 (file)
index 0000000..5e098a6
--- /dev/null
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
+       default-lazy-init="false">
+
+       <!--
+               <import
+               resource="classpath:/org/argeo/slc/hibernate/spring/applicationContext.xml"
+               />
+       -->
+
+       <!--
+               Use session factories <bean id="sessionFactory"
+               parent="${sessionFactoryParentBean}" />
+       -->
+
+       <!--
+               <bean id="sessionFactory"
+               parent="slcTemplates.sessionFactory.hibernateBasic" lazy-init="false">
+               <property name="dataSource"
+               ref="slcDefault.dataSource.inMemoryTestHSQL" /> <property
+               name="hibernateProperties"> <value><![CDATA[
+               hibernate.dialect=org.hibernate.dialect.HSQLDialect
+               hibernate.hbm2ddl.auto=create hibernate.generate_statistics=true
+               hibernate.connection.autocommit=false ]]></value> </property> </bean>
+       -->
+       <bean id="sessionFactory" parent="slcTemplates.sessionFactory.hibernateBasic">
+               <property name="dataSource" ref="dataSource" />
+               <property name="hibernateProperties">
+                       <value><![CDATA[
+                               hibernate.dialect=org.hibernate.dialect.HSQLDialect
+                               hibernate.hbm2ddl.auto=create
+                               hibernate.current_session_context_class=thread
+                       ]]></value>
+               </property>
+       </bean>
+
+       <bean id="dataSource" class="org.hsqldb.jdbc.jdbcDataSource">
+               <property name="database" value="jdbc:hsqldb:mem:test"/>
+               <property name="user" value="sa"/>
+               <property name="password" value=""/>
+               
+       </bean>
+       <!-- DAOs -->
+       <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
+               <property name="sessionFactory" ref="sessionFactory" />
+               <property name="allowCreate" value="false" />
+       </bean>
+
+       <bean id="testResultDao" parent="slcTemplates.dao.testResultDao">
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
+       </bean>
+
+       <bean id="testResultCollectionDao" parent="slcTemplates.dao.testResultCollectionDao">
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
+       </bean>
+
+       <bean id="testRunDescriptorDao" parent="slcTemplates.dao.testRunDescriptorDao">
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
+       </bean>
+
+       <bean id="slcExecutionDao" parent="slcTemplates.dao.slcExecutionDao">
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
+       </bean>
+
+       <bean id="slcAgentDescriptorDao" parent="slcTemplates.dao.slcAgentDescriptorDao">
+               <property name="hibernateTemplate" ref="hibernateTemplate" />
+       </bean>
+
+
+
+       <!-- IMPORTED -->
+       
+       <!-- 
+       <bean id="slcDefault.dataSource.inMemoryTestHSQL"
+               class="org.springframework.jdbc.datasource.SingleConnectionDataSource"
+               destroy-method="destroy">
+               <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
+               <property name="url" value="jdbc:hsqldb:mem:test" />
+               <property name="username" value="sa" />
+               <property name="password" value="" />
+               <property name="suppressClose" value="true" />
+       </bean>
+ -->
+       <bean id="slcTemplates.sessionFactory.hibernateBasic" abstract="true"
+               class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
+               <property name="mappingResources">
+                       <list>
+                               <value>
+                                       org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/test/tree/TreeTestResultCollection.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/test/TestRunDescriptor.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/process/SlcExecution.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/process/SlcExecutionSpec.hbm.xml
+                               </value>
+                               <value>
+                                       org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
+                               </value>
+                       </list>
+               </property>
+               <property name="cacheProvider" ref="slcDefault.cacheProvider.ehCache" />
+       </bean>
+
+       <bean id="slcDefault.cacheProvider.ehCache" class="net.sf.ehcache.hibernate.SingletonEhCacheProvider"
+               depends-on="slcDefault.cacheProvider.ehCacheManager">
+       </bean>
+
+       <bean id="slcDefault.cacheProvider.ehCacheManager"
+               class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
+               <property name="shared" value="true" />
+               <property name="configLocation"
+                       value="classpath:/org/argeo/slc/hibernate/cache/ehcache.xml" />
+       </bean>
+<!-- 
+       <bean id="slcDefault.sessionFactory.hibernateTestHSQL" parent="slcTemplates.sessionFactory.hibernateBasic">
+               <property name="dataSource" ref="slcDefault.dataSource.inMemoryTestHSQL" />
+               <property name="hibernateProperties">
+                       <value><![CDATA[
+                               hibernate.dialect=org.hibernate.dialect.HSQLDialect
+                               hibernate.hbm2ddl.auto=create
+                               hibernate.current_session_context_class=thread
+                       ]]></value>
+               </property>
+       </bean>
+ -->
+       <bean id="slcTemplates.dao.testResultDao"
+               class="org.argeo.slc.hibernate.test.tree.TreeTestResultDaoHibernate"
+               abstract="true">
+       </bean>
+
+       <bean id="slcTemplates.dao.testResultCollectionDao"
+               class="org.argeo.slc.hibernate.test.tree.TreeTestResultCollectionDaoHibernate"
+               abstract="true">
+       </bean>
+
+       <bean id="slcTemplates.dao.testRunDescriptorDao"
+               class="org.argeo.slc.hibernate.test.TestRunDescriptorDaoHibernate"
+               abstract="true">
+       </bean>
+
+       <bean id="slcTemplates.dao.slcExecutionDao"
+               class="org.argeo.slc.hibernate.process.SlcExecutionDaoHibernate"
+               abstract="true">
+       </bean>
+
+       <bean id="slcTemplates.dao.slcAgentDescriptorDao"
+               class="org.argeo.slc.hibernate.runtime.SlcAgentDescriptorDaoHibernate"
+               abstract="true">
+       </bean>
+
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..dd0b9fb
--- /dev/null
@@ -0,0 +1,47 @@
+Web-ContextPath: org.argeo.slc.webapp
+Bundle-Name: SLC Webapp
+Bundle-SymbolicName: org.argeo.slc.webapp
+Bundle-Version: 1.0.0
+Bundle-ClassPath: WEB-INF/classes
+Import-Package: javax.servlet,
+ javax.servlet.http,
+ javax.servlet.resources,
+ javax.servlet.jsp,
+ javax.servlet.jsp.jstl.core,
+ javax.servlet.jsp.jstl.fmt,
+ javax.servlet.jsp.jstl.tlv,
+ org.apache.taglibs.standard.resources,
+ org.apache.taglibs.standard.tag.common.core,
+ org.apache.taglibs.standard.tag.rt.core,
+ org.apache.taglibs.standard.tei,
+ org.apache.taglibs.standard.tlv,
+ org.aopalliance.aop,
+ org.springframework.aop,
+ org.springframework.aop.framework,
+ org.springframework.osgi.web.context.support,
+ org.springframework.web.context,
+ org.springframework.web.util,
+ org.apache.naming.java,
+ com.sun.xml.messaging.saaj.soap
+Require-Bundle: org.argeo.slc.server,
+ org.argeo.slc.specs,
+ org.argeo.slc.support.simple,
+ org.argeo.slc.support.activemq,
+ org.springframework.web,
+ org.springframework.web.servlet,
+ org.springframework.orm,
+ org.springframework.jms,
+ org.springframework.oxm,
+ org.springframework.ws,
+ org.springframework.xml,
+ org.springframework.jdbc,
+ org.springframework.context,
+ org.springframework.context.support,
+ com.springsource.org.castor,
+ com.springsource.net.sf.ehcache,
+ com.springsource.org.hsqldb,
+ com.springsource.org.hibernate,
+ org.argeo.dep.osgi.activemq,
+ com.springsource.org.apache.camel,
+ com.springsource.org.mortbay.util
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml
new file mode 100644 (file)
index 0000000..61b8a81
--- /dev/null
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
+       <import resource="classpath:/org/argeo/slc/server/spring/transaction.xml" />
+
+       <!--
+               <import resource="classpath:/org/argeo/slc/server/spring/jmx.xml" />
+       -->
+       
+       <import resource="osgi.xml"/>
+       
+               <!--
+               Hibernate instrumentation--> <bean id="osivInterceptor"
+               class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
+               <property name="sessionFactory" ref="sessionFactory" /> </bean>
+       
+
+       <!--
+               Transaction --> <bean id="transactionManager"
+               class="org.springframework.orm.hibernate3.HibernateTransactionManager"
+               lazy-init="false"> <property name="sessionFactory"
+               ref="sessionFactory" /> </bean>
+       
+       
+       
+       <!--
+       <bean id="activemqBroker" class="org.apache.activemq.xbean.BrokerFactoryBean">
+               <property name="config" value="WEB-INF/activemq.xml" />
+               <property name="start" value="true" />
+       </bean>
+-->
+
+       <!--  Properties -->
+       <bean
+               class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"
+               lazy-init="false">
+               <property name="contextOverride" value="true" />
+               <property name="properties">
+                       <props>
+                               <prop key="sessionFactoryParentBean">
+                                       slcServerDefault.sessionFactory.HSQL
+                </prop>
+                       </props>
+               </property>
+               <property name="ignoreUnresolvablePlaceholders" value="true" />
+       </bean>
+
+       <import resource="classpath:org/argeo/slc/activemq/spring.xml" />
+
+       <!-- ActiveMQ -->
+       <bean id="template.jms.listenerContainer" parent="slcTemplate.jms.listenerContainer"
+               abstract="true">
+       </bean>
+
+       <bean id="template.jms.listenerAdapter" parent="slcTemplate.jms.listenerAdapterCastor"
+               abstract="true">
+       </bean>
+
+
+       <!-- Services -->
+       <bean id="testManagerService" class="org.argeo.slc.services.impl.test.TestManagerServiceImpl">
+               <constructor-arg ref="testResultDao" />
+               <constructor-arg ref="testRunDescriptorDao" />
+               <constructor-arg ref="slcExecutionDao" />
+               <constructor-arg ref="testResultCollectionDao" />
+       </bean>
+
+       <bean id="agentService" class="org.argeo.slc.services.impl.runtime.AgentServiceImpl">
+               <constructor-arg ref="slcAgentDescriptorDao" />
+       </bean>
+
+       <bean id="agentService.jmsContainer.register" parent="template.jms.listenerContainer">
+               <property name="destination" ref="slcJms.destination.agent.register" />
+               <property name="messageListener">
+                       <bean parent="template.jms.listenerAdapter">
+                               <constructor-arg ref="agentService" />
+                               <property name="defaultListenerMethod" value="register" />
+                       </bean>
+               </property>
+       </bean>
+
+       <bean id="agentService.jmsContainer.unregister" parent="template.jms.listenerContainer">
+               <property name="destination" ref="slcJms.destination.agent.unregister" />
+               <property name="messageListener">
+                       <bean parent="template.jms.listenerAdapter">
+                               <constructor-arg ref="agentService" />
+                               <property name="defaultListenerMethod" value="unregister" />
+                       </bean>
+               </property>
+       </bean>
+
+
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/classes/log4j.properties b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/classes/log4j.properties
new file mode 100644 (file)
index 0000000..34f682a
--- /dev/null
@@ -0,0 +1,35 @@
+# Set root logger level to DEBUG and its only appender to A1.\r
+log4j.rootLogger=WARN, console\r
+\r
+## Levels\r
+# Slc\r
+log4j.logger.org.argeo.slc=DEBUG\r
+\r
+# Spring\r
+log4j.logger.org.springframework=INFO\r
+log4j.logger.org.springframework.transaction=WARN\r
+log4j.logger.org.springframework.orm.hibernate3=WARN\r
+log4j.logger.org.springframework.orm.hibernate3.HibernateTransactionManager=WARN\r
+\r
+# Hibernate\r
+log4j.logger.org.hibernate=WARN\r
+log4j.logger.org.hibernate.stat=INFO\r
+log4j.logger.org.hibernate.SQL=WARN\r
+log4j.logger.org.hibernate.transaction=WARN\r
+#log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
+#log4j.logger.org.hibernate.type=TRACE\r
+\r
+# Active MQ\r
+log4j.logger.org.apache.activemq.web.MessageListenerServlet=WARN\r
+\r
+# EhCache\r
+log4j.logger.net.sf.ehcache=WARN\r
+\r
+## Appenders\r
+# A1 is set to be a ConsoleAppender.\r
+log4j.appender.console=org.apache.log4j.ConsoleAppender\r
+\r
+# A1 uses PatternLayout.\r
+log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
+\r
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/doc-servlet.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/doc-servlet.xml
new file mode 100644 (file)
index 0000000..3b1714f
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:aop="http://www.springframework.org/schema/aop"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
+
+       <import
+               resource="classpath:/org/argeo/slc/server/spring/slc-doc-servlet.xml" />
+
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/osgi.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/osgi.xml
new file mode 100644 (file)
index 0000000..6426dc9
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <reference interface="org.argeo.slc.dao.test.tree.TreeTestResultDao"\r
+               id="testResultDao" />\r
+       <reference interface="org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao"\r
+               id="testResultCollectionDao" />\r
+       <reference interface="org.argeo.slc.dao.test.TestRunDescriptorDao"\r
+               id="testRunDescriptorDao" />\r
+       <reference interface="org.argeo.slc.dao.process.SlcExecutionDao"\r
+               id="slcExecutionDao" />\r
+       <reference interface="org.argeo.slc.dao.runtime.SlcAgentDescriptorDao"\r
+               id="slcAgentDescriptorDao" />\r
+\r
+       <reference interface="org.hibernate.SessionFactory"\r
+               id="sessionFactory" />\r
+\r
+</beans:beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/slc-service-servlet.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/slc-service-servlet.xml
new file mode 100644 (file)
index 0000000..11ae538
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:aop="http://www.springframework.org/schema/aop"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
+
+       <import
+               resource="classpath:/org/argeo/slc/server/spring/slc-service-servlet.xml" />
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/slc-ws-servlet.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/slc-ws-servlet.xml
new file mode 100644 (file)
index 0000000..18dce9a
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import resource="classpath:/org/argeo/slc/server/spring/slc-ws-servlet.xml"/>
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..ef74dca
--- /dev/null
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+       version="2.5">
+
+       <display-name>SLC Web Application</display-name>
+
+       <!-- SERVICE servlet -->
+       <servlet>
+               <servlet-name>slc-service</servlet-name>
+               <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+               <init-param>
+                       <param-name>contextClass</param-name>
+                       <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
+               </init-param>
+       </servlet>
+
+       <servlet-mapping>
+               <servlet-name>slc-service</servlet-name>
+               <url-pattern>*.service</url-pattern>
+       </servlet-mapping>
+
+       <!-- WS servlet -->
+       <servlet>
+               <servlet-name>slc-ws</servlet-name>
+               <servlet-class>
+                       org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
+               <init-param>
+                       <param-name>contextClass</param-name>
+                       <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
+               </init-param>
+       </servlet>
+
+       <servlet-mapping>
+               <servlet-name>slc-ws</servlet-name>
+               <url-pattern>/slcService/*</url-pattern>
+       </servlet-mapping>
+
+       <!-- XSLT servlet -->
+       <servlet>
+               <servlet-name>xslt</servlet-name>
+               <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+               <init-param>
+                       <param-name>contextClass</param-name>
+                       <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
+               </init-param>
+       </servlet>
+
+       <servlet-mapping>
+               <servlet-name>xslt</servlet-name>
+               <url-pattern>*.xslt</url-pattern>
+       </servlet-mapping>
+
+       <!-- DOC servlet -->
+       <servlet>
+               <servlet-name>doc</servlet-name>
+               <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+               <init-param>
+                       <param-name>contextClass</param-name>
+                       <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
+               </init-param>
+       </servlet>
+
+       <servlet-mapping>
+               <servlet-name>doc</servlet-name>
+               <url-pattern>*.xls</url-pattern>
+       </servlet-mapping>
+       <servlet-mapping>
+               <servlet-name>doc</servlet-name>
+               <url-pattern>*.pdf</url-pattern>
+       </servlet-mapping>
+
+       <!-- General -->
+       <context-param>
+               <param-name>contextConfigLocation</param-name>
+               <param-value>/WEB-INF/applicationContext.xml</param-value>
+       </context-param>
+
+       <listener>
+               <display-name>Spring Context</display-name>
+               <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+       </listener>
+       <context-param>
+               <param-name>contextClass</param-name>
+               <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
+       </context-param>
+
+       <!-- Env refs
+       <resource-env-ref>
+               <resource-env-ref-name>jdbc/mainDs</resource-env-ref-name>
+               <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
+       </resource-env-ref> -->
+
+       <!-- Log4j configContext loader config -->
+       <listener>
+               <display-name>Log4j</display-name>
+               <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+       </listener>
+       <context-param>
+               <param-name>log4jConfigLocation</param-name>
+               <param-value>/WEB-INF/classes/log4j.properties</param-value>
+       </context-param>
+       <context-param>
+               <param-name>log4jRefreshInterval</param-name>
+               <param-value>5000</param-value>
+       </context-param>
+
+
+       <!-- Active MQ -->
+       <context-param>
+               <param-name>org.apache.activemq.brokerURL</param-name>
+               <param-value>vm://localhost</param-value>
+       </context-param>
+
+       <context-param>
+               <param-name>org.apache.activemq.embeddedBroker</param-name>
+               <param-value>false</param-value>
+       </context-param>
+
+       <servlet>
+               <servlet-name>MessageListenerServlet</servlet-name>
+               <servlet-class>org.apache.activemq.web.MessageListenerServlet</servlet-class>
+               <load-on-startup>1</load-on-startup>
+       </servlet>
+
+       <servlet-mapping>
+               <servlet-name>MessageListenerServlet</servlet-name>
+               <url-pattern>/amq/*</url-pattern>
+       </servlet-mapping>
+
+       <filter>
+               <filter-name>session</filter-name>
+               <filter-class>org.apache.activemq.web.SessionFilter</filter-class>
+       </filter>
+
+       <filter-mapping>
+               <filter-name>session</filter-name>
+               <url-pattern>/amq/*</url-pattern>
+       </filter-mapping>
+</web-app>
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt-servlet.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt-servlet.xml
new file mode 100644 (file)
index 0000000..ddfd925
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:aop="http://www.springframework.org/schema/aop"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
+
+       <import
+               resource="classpath:/org/argeo/slc/server/spring/slc-xslt-servlet.xml" />
+
+       <bean name="/resultView.xslt"
+               class="org.argeo.slc.web.mvc.result.GetResultController">
+               <constructor-arg ref="testResultDao" />
+               <property name="viewName" value="resultView" />
+       </bean>
+
+       <bean name="/resultViewXml.xslt"
+               class="org.argeo.slc.web.mvc.result.GetResultController">
+               <constructor-arg ref="testResultDao" />
+               <property name="viewName" value="viewXml" />
+       </bean>
+
+       <bean name="/resultCollectionViewXml.xslt"
+               class="org.argeo.slc.web.mvc.result.GetResultCollectionController">
+               <constructor-arg ref="testResultCollectionDao" />
+               <property name="viewName" value="viewXml" />
+       </bean>
+
+
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt/resultView.xsl b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt/resultView.xsl
new file mode 100644 (file)
index 0000000..e9989bd
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<xsl:stylesheet version="1.0"\r
+       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+       xmlns:slc="http://argeo.org/projects/slc/schemas"\r
+       exclude-result-prefixes="slc">\r
+\r
+       <xsl:output method="html" omit-xml-declaration="yes" />
+       
+\r
+       <xsl:template match="/">\r
+               <html>\r
+                       <head>\r
+                               <title>Result</title>\r
+                       </head>\r
+                       <body style="font-family: sans-serif">\r
+                               <h1>\r
+                                       Result\r
+                                       <xsl:value-of select="slc:tree-test-result/@uuid" />\r
+                               </h1>\r
+                               <xsl:for-each\r
+                                       select="slc:tree-test-result/slc:result-parts/slc:result-part">\r
+                                       <h2>\r
+                                               <xsl:value-of select="@path" />\r
+                                       </h2>\r
+                                       <table>\r
+                                               <xsl:for-each\r
+                                                       select="slc:part-sub-list/slc:parts/slc:simple-result-part">\r
+                                                       <tr>\r
+                                                               <xsl:choose>\r
+                                                                       <xsl:when\r
+                                                                               test="slc:status = 'PASSED' ">\r
+                                                                               <td style="color:green">\r
+                                                                                       <xsl:value-of\r
+                                                                                               select="slc:message" />\r
+                                                                               </td>\r
+                                                                       </xsl:when>\r
+                                                                       <xsl:otherwise>\r
+                                                                               <td style="color:red">\r
+                                                                                       <xsl:value-of\r
+                                                                                               select="slc:message" />\r
+                                                                               </td>\r
+                                                                       </xsl:otherwise>\r
+                                                               </xsl:choose>\r
+                                                       </tr>\r
+                                               </xsl:for-each>\r
+                                       </table>\r
+                               </xsl:for-each>\r
+                       </body>\r
+               </html>\r
+       </xsl:template>\r
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt/viewXml.xsl b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/xslt/viewXml.xsl
new file mode 100644 (file)
index 0000000..87d6371
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<xsl:stylesheet version="1.0"\r
+       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+       xmlns:slc="http://argeo.org/projects/slc/schemas"\r
+       exclude-result-prefixes="slc">\r
+\r
+       <xsl:template match="/">
+               <xsl:copy-of select="*"/>\r
+       </xsl:template>\r
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/index.jsp b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/index.jsp
new file mode 100644 (file)
index 0000000..1c97269
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>\r
+<%@ page language="java" contentType="text/html"%>\r
+<%\r
+response.sendRedirect("argeo-ria/index.html");\r
+%>\r
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/style.css b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/style.css
new file mode 100644 (file)
index 0000000..102b4ee
--- /dev/null
@@ -0,0 +1,174 @@
+/* Generic Selectors */\r
+body {\r
+       font-family: sans-serif;\r
+       font-size: 12px;\r
+       color: black;\r
+       background-color: white;\r
+}\r
+\r
+li {\r
+       list-style-type: none;\r
+}\r
+\r
+h1 {\r
+       font-family: sans-serif;\r
+       font-size: 16px;\r
+       font-weight: bold;\r
+       color: #000000;\r
+       padding: 0px 0px 5px 0px;\r
+       margin: 0px;\r
+}\r
+\r
+h2 {\r
+       font-family: sans-serif;\r
+       font-size: 14px;\r
+       font-weight: bold;\r
+       color: #000000;\r
+       padding: 5px 0px 5px 0px;\r
+       margin: 0px;\r
+       margin-top: 5px;\r
+}\r
+\r
+/* Special titles */\r
+h3.executionStep{\r
+       font-family: sans-serif;\r
+       font-size: 10px;\r
+       font-style: italic;\r
+       color: #000000;\r
+       padding: 5px 0px 5px 0px;\r
+       margin: 0px;\r
+       margin-top: 5px;\r
+}\r
+\r
+table,form {\r
+       margin: 0px;\r
+}\r
+\r
+img {\r
+       border: none;\r
+}\r
+\r
+div {\r
+       font-size: 100%;\r
+}\r
+\r
+tr.list:hover {\r
+       background-color: lightgrey;\r
+}\r
+\r
+td.list {\r
+       border-top: 1px solid lighgrey;\r
+       padding: 2px 20px 2px 2px;\r
+       padding-right: 15px;\r
+}\r
+\r
+th {\r
+       font-size: 12px;\r
+       padding: 2px 20px 2px 2px;\r
+       vertical-align: top;\r
+       text-align: left;\r
+}\r
+\r
+td {\r
+       font-size: 12px;\r
+       padding: 1px;\r
+       vertical-align: middle;\r
+       text-align: left;\r
+}\r
+\r
+.passed {\r
+       color: green;\r
+}\r
+\r
+.failed {
+       color: red;
+}
+
+.error {
+       color: purple;
+}
+
+/**************** Navigation ****************/\r
+td.nav1 {\r
+       padding: 5px 0px 0px 0px;\r
+       font-size: 12px;\r
+       font-weight: bold;\r
+}\r
+\r
+td.nav2 {\r
+       padding: 0px 0px 0px 5px;\r
+       font-size: 12px;\r
+}\r
+\r
+/**************** Forms ****************/\r
+input.submit {\r
+       border: solid 1px grey;\r
+       background-color: lightgrey;\r
+       align: right;\r
+}\r
+\r
+input.submit:hover {\r
+       border: solid 1px #3399FF;\r
+       background-color: white;\r
+       color: #3399FF;\r
+}\r
+\r
+input.std {\r
+       border: solid 1px lightgrey;\r
+       padding: 1px;\r
+       margin: 2px;\r
+}\r
+\r
+.formError {\r
+       color: red;\r
+       padding: 1px;\r
+       margin: 2px;\r
+       font-weight: bold;\r
+}\r
+\r
+/**************** Pseudo classes ****************/\r
+a:link {\r
+       color: #0066CC;\r
+       text-decoration: none;\r
+}\r
+\r
+a:visited {\r
+       color: #0066CC;\r
+       text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+       color: #3399FF;\r
+       text-decoration: none;\r
+}\r
+\r
+/************************* ID's *************************/\r
+#main {\r
+       position: absolute;\r
+       margin-left: 120px;\r
+       padding-top: 110px;\r
+}\r
+\r
+#navigation {\r
+       position: absolute;\r
+       width: 100px;\r
+       height: 800px;\r
+       border-right: 1px solid #0066CC;\r
+       font-weight: normal;\r
+       margin-top: 110px;\r
+       margin-left: 10px;\r
+}\r
+\r
+#banner {\r
+       position: absolute;\r
+       width: 400px;\r
+       height: 100px;\r
+}\r
+\r
+#upperRight {\r
+       position: absolute;\r
+       top: 0;\r
+       right: 0;\r
+       margin-top: 20px;\r
+       margin-right: 10px;\r
+}
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/META-INF/MANIFEST.MF b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..a6623f9
--- /dev/null
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0\r
+Archiver-Version: Plexus Archiver\r
+Created-By: Apache Maven\r
+Built-By: mbaudier\r
+Build-Jdk: 1.6.0_0\r
+Web-ContextPath: simple-web-app\r
+Bundle-ManifestVersion: 2\r
+Bundle-Name: Simple OSGi War\r
+Bundle-SymbolicName: org.springframework.osgi.samples.simplewebapp\r
+Bundle-ClassPath: WEB-INF/classes\r
+Import-Package: javax.servlet,javax.servlet.http,\r
+ javax.servlet.resources,javax.servlet.jsp,\r
+ javax.servlet.jsp.jstl.core,javax.ser\r
+ vlet.jsp.jstl.fmt,javax.servlet.jsp.jstl.tlv,\r
+ org.apache.taglibs.standard.resources,org.apa\r
+ che.taglibs.standard.tag.common.core,org.apache.tagli\r
+ bs.standard.tag.rt.core,org.apache.taglibs.standard.t\r
+ ei,org.apache.taglibs.standard.tlv\r
+\r
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/log4j.properties b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/log4j.properties
new file mode 100644 (file)
index 0000000..92f4b25
--- /dev/null
@@ -0,0 +1,9 @@
+log4j.rootCategory=WARN, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout.ConversionPattern=%t %p [%c{2}] - %m%n
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.threshold=TRACE
+
+
+log4j.logger.org.springframework.osgi=INFO
+#log4j.logger.org.springframework=TRACE
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.class b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.class
new file mode 100644 (file)
index 0000000..47bb073
Binary files /dev/null and b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.class differ
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.java b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.java
new file mode 100644 (file)
index 0000000..af46db5
--- /dev/null
@@ -0,0 +1,58 @@
+/*\r
+ * Copyright 2006-2008 the original author or authors.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.springframework.osgi.samples.simplewebapp.servlet;\r
+\r
+import java.io.IOException;\r
+\r
+import javax.servlet.ServletException;\r
+import javax.servlet.ServletOutputStream;\r
+import javax.servlet.http.HttpServlet;\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+/**\r
+ * A simple, "hellow world" service running inside OSGi.\r
+ * \r
+ * @author Costin Leau\r
+ * \r
+ */\r
+public class HelloOsgiWorldServlet extends HttpServlet {\r
+\r
+       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\r
+               addHelloWorld(resp, req.getMethod());\r
+       }\r
+\r
+       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\r
+               addHelloWorld(resp, req.getMethod());\r
+       }\r
+\r
+       public String getServletInfo() {\r
+               return "Simple Osgi World Servlet";\r
+       }\r
+\r
+       private void addHelloWorld(HttpServletResponse response, String method) throws IOException {\r
+               response.setContentType("text/html");\r
+\r
+               ServletOutputStream out = response.getOutputStream();\r
+               out.println("<html>");\r
+               out.println("<head><title>Hello Osgi World</title></head>");\r
+               out.println("<body>");\r
+               out.println("<h1>Hello OSGi World</h1>");\r
+               out.println("<h2>http method used:" + method + "</h2>");\r
+               out.println("</body></html>");\r
+       }\r
+}\r
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.class b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.class
new file mode 100644 (file)
index 0000000..54b5312
Binary files /dev/null and b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.class differ
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.java b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.java
new file mode 100644 (file)
index 0000000..8e7db75
--- /dev/null
@@ -0,0 +1,131 @@
+/*\r
+ * Copyright 2006-2008 the original author or authors.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.springframework.osgi.samples.simplewebapp.servlet;\r
+\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.OutputStream;\r
+import java.net.URL;\r
+import java.net.URLConnection;\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+import java.util.TreeSet;\r
+\r
+import javax.servlet.ServletException;\r
+import javax.servlet.ServletOutputStream;\r
+import javax.servlet.http.HttpServlet;\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+/**\r
+ * Simple servlet that serves resources from its war.\r
+ * \r
+ * @author Costin Leau\r
+ * \r
+ */\r
+public class ResourceServingServlet extends HttpServlet {\r
+\r
+       private static final String SLASH = "/";\r
+       private static final String RESOURCE_PARAM = "resource";\r
+\r
+\r
+       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\r
+               serveResource(req, resp);\r
+       }\r
+\r
+       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\r
+               serveResource(req, resp);\r
+       }\r
+\r
+       public String getServletInfo() {\r
+               return "Resource Serving Servlet";\r
+       }\r
+\r
+       private void serveResource(HttpServletRequest request, HttpServletResponse response) throws IOException {\r
+\r
+               ServletOutputStream out = response.getOutputStream();\r
+\r
+               String resourceName = request.getParameter(RESOURCE_PARAM);\r
+               if (resourceName == null || resourceName.trim().length() < 1) {\r
+                       out.println("No resource specified, returning the list of available resources...");\r
+                       listAvailableResources(response);\r
+               }\r
+\r
+               else {\r
+\r
+                       if (!resourceName.startsWith(SLASH))\r
+                               resourceName = SLASH + resourceName;\r
+\r
+                       URL sourceURL = getServletContext().getResource(resourceName);\r
+\r
+                       if (sourceURL == null) {\r
+                               out.println("Resource [" + resourceName + "] not found, returning the list of available resources...");\r
+                               listAvailableResources(response);\r
+                       }\r
+                       else {\r
+                               URLConnection connection = sourceURL.openConnection();\r
+                               connection.setUseCaches(false);\r
+                               response.setContentLength(connection.getContentLength());\r
+                               response.setContentType(connection.getContentType());\r
+                               sendStreamToClient(connection.getInputStream(), out);\r
+                       }\r
+               }\r
+               out.close();\r
+       }\r
+\r
+       private void listAvailableResources(HttpServletResponse response) throws IOException {\r
+               Set sortedResources = new TreeSet();\r
+\r
+               discoverFolderContent(sortedResources, SLASH);\r
+               response.setContentType("text/plain");\r
+               ServletOutputStream out = response.getOutputStream();\r
+               for (Iterator iterator = sortedResources.iterator(); iterator.hasNext();) {\r
+                       out.println((String) iterator.next());\r
+               }\r
+       }\r
+\r
+       private void discoverFolderContent(Set aggregatedContent, String path) {\r
+               Set resources = getServletContext().getResourcePaths(path);\r
+               for (Iterator resourceIterator = resources.iterator(); resourceIterator.hasNext();) {\r
+                       String resource = (String) resourceIterator.next();\r
+                       aggregatedContent.add(resource);\r
+                       if (resource.endsWith(SLASH)) {\r
+                               // recursively add folder\r
+                               discoverFolderContent(aggregatedContent, resource);\r
+                       }\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Copies the bytes from one {@link InputStream} to an {@link OutputStream}.\r
+        * \r
+        * @param source\r
+        * @param target\r
+        * @throws IOException\r
+        */\r
+       private void sendStreamToClient(InputStream source, OutputStream target) throws IOException {\r
+               try {\r
+                       int i;\r
+                       while ((i = source.read()) != -1)\r
+                               target.write(i);\r
+                       target.flush();\r
+               }\r
+               finally {\r
+                       source.close();\r
+               }\r
+       }\r
+}\r
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/web.xml b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..3fb0b6a
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"\r
+       version="2.4">\r
+\r
+       <display-name>Simple Osgi WebApp Bundle</display-name>\r
+       <description>Simple OSGi War</description>\r
+\r
+       <welcome-file-list>\r
+               <welcome-file>index.html</welcome-file>\r
+       </welcome-file-list>\r
+\r
+       <servlet>\r
+               <servlet-name>HelloOsgiWorldServlet</servlet-name>\r
+               <servlet-class>\r
+                       org.springframework.osgi.samples.simplewebapp.servlet.HelloOsgiWorldServlet\r
+               </servlet-class>\r
+       </servlet>\r
+\r
+       <servlet>\r
+               <servlet-name>ResourceServlet</servlet-name>\r
+               <servlet-class>\r
+                       org.springframework.osgi.samples.simplewebapp.servlet.ResourceServingServlet\r
+               </servlet-class>\r
+       </servlet>\r
+\r
+       <servlet-mapping>\r
+               <servlet-name>HelloOsgiWorldServlet</servlet-name>\r
+               <url-pattern>/helloWorldServlet</url-pattern>\r
+       </servlet-mapping>\r
+\r
+       <servlet-mapping>\r
+               <servlet-name>ResourceServlet</servlet-name>\r
+               <url-pattern>/resourceServlet</url-pattern>\r
+       </servlet-mapping>\r
+       \r
+</web-app>\r
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/hello-osgi-world.jsp b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/hello-osgi-world.jsp
new file mode 100644 (file)
index 0000000..10f396e
--- /dev/null
@@ -0,0 +1,52 @@
+<%@ page info="a hello world example" %>\r
+<%@ page import="java.util.*,java.text.*"%>\r
+\r
+<html>\r
+<head>\r
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+       <link rel="stylesheet" href="styles/springsource.css" type="text/css" />\r
+       <title>Hello OSGi World</title>\r
+</head>\r
+\r
+<body>\r
+<div id="main_wrapper">\r
+<h1>Hello <%=request.getRemoteAddr()%>, from OSGi World!</h1>\r
+<p>This JSP page (if properly compiled), should display various information about the current HTTP session.\r
+\r
+  <h2>HTTP Session info</h2>\r
+  \r
+  <% \r
+       Format formatter = DateFormat.getDateTimeInstance();\r
+  %>\r
+  \r
+  <table>\r
+    <tr><td>Id: </td><td><%=session.getId()%></td></tr>\r
+    <tr><td>Creation Date:</td><td><%=formatter.format(new Date(session.getCreationTime()))%></td></tr>\r
+    <tr><td>MaxInactiveInterval:</td><td><%=session.getMaxInactiveInterval()%> sec </td></tr>\r
+  </table>\r
+  <h3>Session Attributes</h3>\r
+  <table>\r
+      <tr><th>Name</th><th>Value</th></tr>\r
+      \r
+      <%\r
+         for (Enumeration attributeNames = session.getAttributeNames(); attributeNames.hasMoreElements();) {\r
+                         String attributeName = (String) attributeNames.nextElement();\r
+                         Object attributeValue = session.getAttribute(attributeName);\r
+      %>\r
+      <tr><td><%=attributeName%></td><td><%=attributeValue%></td></tr>\r
+      \r
+      <%\r
+         }\r
+      %>\r
+  </table>\r
+  \r
+  <table class="footer">\r
+    <tr>\r
+      <td><a href="./">Home</a></td>\r
+      <td align="right"><img src="./images/springsource-logo.png"/></td>\r
+       </tr>\r
+  </table>\r
+\r
+</div>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/bullet.gif b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/bullet.gif
new file mode 100644 (file)
index 0000000..5909c25
Binary files /dev/null and b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/bullet.gif differ
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource-logo.png b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource-logo.png
new file mode 100644 (file)
index 0000000..e170f8a
Binary files /dev/null and b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource-logo.png differ
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource_banner.png b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource_banner.png
new file mode 100644 (file)
index 0000000..e807f4e
Binary files /dev/null and b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/images/springsource_banner.png differ
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/index.html b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/index.html
new file mode 100644 (file)
index 0000000..b34144c
--- /dev/null
@@ -0,0 +1,110 @@
+<HTML><HEAD><TITLE>Spring-DM Samples: Simple WebApp</TITLE>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<link rel="stylesheet" href="styles/springsource.css" type="text/css" />\r
+<title>Hello OSGi World</title>\r
+</head>\r
+\r
+</HEAD>\r
+\r
+<BODY bgColor=white>\r
+<div id="main_wrapper">\r
+  <h1>\r
+  Spring-DM Simple OSGi Web Application\r
+  </h1>\r
+\r
+  <h2>Introduction</h2>\r
+       This application demonstrates the use of web applications (WARs)\r
+       inside OSGi through Spring Dynamic Modules.\r
+       You can view static resources (like this page), servlets and\r
+       JSPs. The next section describes the dynamic pages available in this WAR.\r
\r
+  <h2>Sample content</h2>\r
+  \r
+  <p>You can select one of the following links to interact with the servlets and JSPs\r
+  available in this sample.\r
+  </p>\r
+  \r
+  <h3>Servlets</h3> \r
+  \r
+  The application contains two servlets:\r
+  <ul>\r
+         <li>Hello OSGi World servlet\r
+         <p/>\r
+         Simply click on the button below (which will send a\r
+         a <tt>POST</tt> request to a hello world servlet).\r
+         <form action="helloWorldServlet" method="POST">\r
+               <input type="submit" value="Call Hello World Servlet"/>\r
+         </form>\r
+    </li>\r
+    <li>\r
+      A OSGi content serving servlet\r
+      \r
+      <p/> The servlet sends to the browser\r
+      the raw content of resources found inside the bundle. This main usage of this servlet\r
+      is to see, direclty from the web application, the servlet and JSP <a href="#sources">sources</a>.\r
+\r
+         <!--\r
+      <h4>Tip</h4>\r
+            \r
+      The Content Servlet can serve <i>any</i> resource from the OSGi space through Spring-DM\r
+         Spring-DM <tt>ResourceLoader</tt>. If no prefix is specified, resources are resolved from\r
+         the servlet own bundle. However, by using <tt>classpath:</tt>, <tt>osgibundlejar:</tt> you can get access to the other <i>spaces</i>\r
+         defined by OSGi (for more information, see OsgiBundleResourceLoader <a href="http://static.springframework.org/osgi/docs/current/api/org/springframework/osgi/io/OsgiBundleResourceLoader.html">javadoc</a>).\r
+         <br/>\r
+         \r
+         <form action="contentServlet" method="GET">\r
+           <input type="\r
+               <input type="submit" value="Get resource">\r
+         </form>\r
+         -->\r
+         \r
+    </li>\r
+  </ul>\r
+  \r
+  <h3>Java Server Pages</h3>\r
+  The sample application provides two types of Java Server Pages:\r
+  <ul>\r
+     <li>A <a href="hello-osgi-world.jsp">bare-bone</a> page that accesses the session</li>\r
+     <li>A <a href="jsp-tag-osgi-world.jsp">tag-based</a> page that uses the standard taglib </li>\r
+  </ul>\r
+  \r
\r
+  <p/>\r
+  While the servlets/pages are simplistic, they show the main functionality working inside an OSGi platform.\r
+  \r
+  <h2>Sources</h2><a name="sources"> </a>\r
+  To view the Servlet and JSP sources directly from the browser, use one of the links above. The content itself\r
+  is served through a Servlet (the Content Servlet below) that sends to the browser the content of the files \r
+  found in its bundle classpath.\r
+  \r
+  <ul>\r
+       <li><a href="./resourceServlet?resource=/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/HelloOsgiWorldServlet.java">Hello World Servlet</a></li>\r
+       <li><a href="./resourceServlet?resource=/WEB-INF/classes/org/springframework/osgi/samples/simplewebapp/servlet/ResourceServingServlet.java">Resource Serving Servlet</a></li>\r
+       <li><a href="./resourceServlet?resource=/hello-osgi-world.jsp">bare-bone JSP</a></li>\r
+       <li><a href="./resourceServlet?resource=/jsp-tag-osgi-world.jsp">tag-based JSP</a></li>\r
+       <li><a href="./resourceServlet?resource=/WEB-INF/web.xml">Web application <tt>web.xml</tt></a></li>\r
+       <li><a href="./resourceServlet?resource=">WAR OSGi bundle content</a></li>\r
+  </ul>\r
+  \r
+  <h2>Requirements</h2> \r
+  \r
+  This sample requires:\r
+  <ul>\r
+    <li>an OSGi 4.0+ platform</li>\r
+    <li>Spring-DM 1.1 + dependencies</li>\r
+    <li>Apache Tomcat 5.5.x+</li>\r
+    <li>Apache Jasper 2 Engine </li>\r
+  </ul>\r
+  \r
+  Note that all the dependencies are automatically downloaded when running the sample.\r
+  \r
+  <table class="footer">\r
+    <tr>\r
+      <td><a href="./">Home</a></td>\r
+      <td align="right"><img src="./images/springsource-logo.png"/></td>\r
+       </tr>\r
+  </table>\r
\r
+</div>\r
+</BODY>\r
+</HTML>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/jsp-tag-osgi-world.jsp b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/jsp-tag-osgi-world.jsp
new file mode 100644 (file)
index 0000000..cf27a14
--- /dev/null
@@ -0,0 +1,52 @@
+<%@ page info="an OSGi JSP page with taglibs" %>\r
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>\r
+\r
+<html>\r
+<head>\r
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+       <link rel="stylesheet" href="styles/springsource.css" type="text/css" />\r
+       <title>Hello OSGi World</title>\r
+</head>\r
+\r
+<body>\r
+<div id="main_wrapper">\r
+<h1>JSP taglibs page</h1>\r
+\r
+<p>This JSP page uses the standard JSTL <a href="http://java.sun.com/jsp/jstl/core">core</a> taglib to display \r
+the information about the user request. Since the WAR is deployed as an OSGi bundle, the taglib does not have to \r
+be nested inside the WAR and can be deployed, as a stand alone bundle which is then imported.\r
+\r
+<h2>Browser Information</h2>\r
+<c:out value="${header['User-Agent']}"/>\r
+\r
+<h2>Header info:</h2>\r
+\r
+ <table>\r
+    <tr>\r
+       <th>Name</th>\r
+       <th>Value</th>\r
+    </tr>\r
+       <c:forEach var="head" items="${headerValues}">\r
+         <tr>\r
+         <td><c:out value="${head.key}"/></td>\r
+         <c:forEach var="val" items="${head.value}">\r
+         <td>\r
+            <c:out value="${val}"/>\r
+         </td>\r
+         </c:forEach>\r
+         </tr>\r
+       </c:forEach>\r
+  </table>\r
+  \r
+  \r
+  <table class="footer">\r
+    <tr>\r
+      <td><a href="./">Home</a></td>\r
+      <td align="right"><img src="./images/springsource-logo.png"/></td>\r
+       </tr>\r
+  </table>\r
+\r
+</div>\r
+\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/styles/springsource.css b/server/org.argeo.slc.siteserver/bundles/simple-webapp.war/styles/springsource.css
new file mode 100644 (file)
index 0000000..1757cdb
--- /dev/null
@@ -0,0 +1,154 @@
+body, div, td {\r
+  font-family:Arial, Helvetica, sans-serif;\r
+  font-size:12px;\r
+  color:#666;\r
+}\r
+\r
+body {\r
+  background-color: #fff;\r
+  background-image: url(../images/springsource_banner.png);\r
+  background-position: top center;\r
+  background-repeat: no-repeat;\r
+  text-align:center;\r
+  min-width:600px;\r
+  margin-left: auto;\r
+  margin-right: auto;\r
+}\r
+\r
+h1{\r
+  font-family:Helvetica, sans-serif;\r
+  color:#7db223;\r
+  font-size:20px;\r
+  line-height:40px;\r
+}\r
+\r
+h2{\r
+  font-family:Helvetica, sans-serif;\r
+  color:#7db223;\r
+  font-size:18px;\r
+  line-height:36px;\r
+}\r
+\r
+h3{\r
+  font-family:Helvetica, sans-serif;\r
+  color:#7db223;\r
+  font-size:15px;\r
+  line-height:32px;\r
+}\r
+\r
+a:link{color:#7db223; text-decoration:underline; font-size:13px;}\r
+a:hover{color:#456314; text-decoration:underline; font-size:13px;}\r
+a:active{color:#7db223; text-decoration:underline; font-size:13px;}\r
+a:visited{color:#7db223; text-decoration:underline; font-size:13px;}\r
+\r
+ul {\r
+  list-style: disc url(../images/bullet.gif);\r
+}\r
+\r
+li {\r
+  padding-top:5px;\r
+}\r
+\r
+li ul {\r
+  list-style: square url(images/sub-bullet.gif);\r
+}\r
+\r
+li ul li ul {\r
+  list-style: circle none;\r
+}\r
+\r
+#main_wrapper {\r
+  margin:0 auto;\r
+  position:relative;\r
+  top: 85px;\r
+  left:20px;\r
+  width:600px;\r
+  text-align:left;\r
+}\r
+\r
+table {\r
+  background:#e0e7d3;\r
+  margin: 0;\r
+  border: 4px solid #e0e7d3;\r
+  border-collapse: collapse;\r
+}\r
+\r
+table table {\r
+  margin: -5px 0;\r
+  border: 0px solid #e0e7d3;\r
+  width:100%;\r
+}\r
+\r
+table td, table th {\r
+  padding:8px;\r
+}\r
+\r
+table th {\r
+  font-size:12px;\r
+  text-align: left;\r
+  font-weight: bold;\r
+}\r
+\r
+table thead {\r
+  font-weight:bold;\r
+  font-style:italic;\r
+  background-color:#c9d3b8;\r
+}\r
+\r
+caption { \r
+  caption-side: top; \r
+  width: auto;\r
+  text-align: left;\r
+  font-size:12px;\r
+  color:#848f73;\r
+  padding-bottom:4px;\r
+}\r
+\r
+\r
+fieldset {\r
+  background:#e0e7d3;\r
+  padding:8px;\r
+  padding-bottom:22px;\r
+  border: none;\r
+  width:560px;\r
+}\r
+\r
+fieldset label {\r
+  width:70px;\r
+  float:left;\r
+  margin-top:1.7em;\r
+  margin-left:20px;\r
+}\r
+\r
+fieldset textfield {\r
+  margin:3px;\r
+  height:20px; \r
+  background:#e4eadb;\r
+}\r
+\r
+fieldset textarea {\r
+  margin:3px;\r
+  height:165px;\r
+  background:#e4eadb;\r
+}\r
+\r
+fieldset input {\r
+  margin:3px;\r
+  height:20px;\r
+  background:#e4eadb;\r
+}\r
+\r
+fieldset table{width:100%;}\r
+fieldset th{padding-left:25px;}\r
+\r
+.footer {\r
+       background:#fff;\r
+       border:none;\r
+       margin-top:20px;\r
+       border-top:1px solid #999999;\r
+       width:100%;\r
+}\r
+\r
+.footer td {color:#999999;}\r
+\r
+.footer a:link {color: #7db223;}
\ No newline at end of file
index 0d0a10979f3b1fca26fea24d69995cb823825cb2..28e3c033c9a4c1a5321719a3a90afb608f6c67a7 100644 (file)
        <artifactId>org.argeo.slc.siteserver</artifactId>
        <packaging>pom</packaging>
        <name>Argeo SLC Site server</name>
+       <properties>
+               <spring-osgi.version>1.1.3</spring-osgi.version>
+               <spring.version>2.5.5</spring.version>
+       </properties>
        <build>
                <plugins>
                        <plugin>
 
                                </configuration>
                        </plugin>
+
+                       <plugin>
+                               <artifactId>maven-antrun-plugin</artifactId>
+                               <configuration>
+                                       <tasks>
+                                               <property name="xmlcommons.jar"
+                                                       location="${settings.localRepository}/org/apache/xmlcommons/com.springsource.org.apache.xmlcommons/1.3.3/com.springsource.org.apache.xmlcommons-1.3.3.jar" />
+                                               <property name="xerces.jar"
+                                                       location="${settings.localRepository}/org/apache/xerces/com.springsource.org.apache.xerces/2.8.1/com.springsource.org.apache.xerces-2.8.1.jar" />
+                                               <property name="xalan.jar"
+                                                       location="${settings.localRepository}/org/apache/xalan/com.springsource.org.apache.xalan/2.7.0/com.springsource.org.apache.xalan-2.7.0.jar" />
+
+                                               <echo message="${xmlcommons.jar}" />
+                                               <echo message="${xerces.jar}" />
+                                               <echo message="${xalan.jar}" />
+
+                                               <property name="bundles.dir" location="bundles" />
+
+                                               <java classname="org.argeo.slc.detached.launcher.Main" fork="true"
+                                                       dir="exec" jvm="${java.home}/bin/java">
+                                                       <jvmarg
+                                                               value="-Xbootclasspath/p:${xmlcommons.jar}${path.separator}${xerces.jar}${path.separator}${xalan.jar}" />
+                                                       <classpath>
+                                                               <path refid="maven.compile.classpath" />
+                                                       </classpath>
+                                                       <sysproperty key="slc.osgi.scanClasspath" value="true" />
+                                                       <sysproperty key="slc.osgi.start" value="*" />
+                                                       <sysproperty key="slc.osgi.devbundle.logging"
+                                                               value="reference:file:${bundles.dir}/logging" />
+                                                       <sysproperty key="slc.osgi.devbundle.simple-webapp"
+                                                               value="reference:file:${bundles.dir}/simple-webapp.war" />
+                                                       <sysproperty key="slc.osgi.devbundle.org.argeo.slc.webapp"
+                                                               value="reference:file:${bundles.dir}/org.argeo.slc.webapp.war" />
+                                                       <sysproperty key="slc.osgi.devbundle.org.argeo.slc.server.hibernate"
+                                                               value="reference:file:${bundles.dir}/org.argeo.slc.server.hibernate" />
+                                                       <sysproperty key="slc.osgi.devbundle.org.argeo.slc.server.activemq"
+                                                               value="reference:file:${bundles.dir}/org.argeo.slc.server.activemq" />
+                                                       <sysproperty
+                                                               key="slc.osgi.devbundle.com.springsource.org.objectweb.asm."
+                                                               value="reference:file:${settings.localRepository}/org/objectweb/asm/com.springsource.org.objectweb.asm/2.2.0/com.springsource.org.objectweb.asm-2.2.0.jar" />
+                                                       <sysproperty
+                                                               key="slc.osgi.devbundle.com.springsource.org.objectweb.asm.attrs"
+                                                               value="reference:file:${settings.localRepository}/org/objectweb/asm/com.springsource.org.objectweb.asm.attrs/1.5.3/com.springsource.org.objectweb.asm.attrs-1.5.3.jar" />
+                                               </java>
+                                       </tasks>
+                               </configuration>
+                       </plugin>
+
+
                </plugins>
        </build>
        <dependencies>
+               <!--
+                       <dependency> <groupId>org.argeo.slc</groupId>
+                       <artifactId>org.argeo.slc.webapp</artifactId> <type>war</type>
+                       </dependency> <dependency> <groupId>org.apache.archiva</groupId>
+                       <artifactId>archiva-webapp</artifactId> <type>war</type>
+                       </dependency>
+               -->
+
+               <!--  OSGI TESTS -->
+
                <dependency>
-                       <groupId>org.argeo.slc</groupId>
-                       <artifactId>org.argeo.slc.webapp</artifactId>
-                       <type>war</type>
+                       <groupId>org.argeo.slc.runtime</groupId>
+                       <artifactId>org.argeo.slc.server</artifactId>
+               </dependency>
+
+
+               <dependency>
+                       <groupId>org.hsqldb</groupId>
+                       <artifactId>com.springsource.org.hsqldb</artifactId>
+               </dependency>
+
+               <!-- OSGi integration -->
+               <dependency>
+                       <groupId>org.eclipse.osgi</groupId>
+                       <artifactId>org.eclipse.osgi</artifactId>
+               </dependency>
+
+               <dependency>
+                       <groupId>javax.annotation</groupId>
+                       <artifactId>com.springsource.javax.annotation</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>javax.persistence</groupId>
+                       <artifactId>com.springsource.javax.persistence</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>javax.xml.ws</groupId>
+                       <artifactId>com.springsource.javax.xml.ws</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>javax.xml.bind</groupId>
+                       <artifactId>com.springsource.javax.xml.bind</artifactId>
+               </dependency>
+               <!--
+                       <dependency> <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.web.extender</artifactId>
+                       </dependency> <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.extender</artifactId>
+                       </dependency> <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.web</artifactId> </dependency>
+               -->
+
+               <!--
+                       Using springsource repo <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.web.extender</artifactId>
+                       </dependency> <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.extender</artifactId>
+                       </dependency> <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>org.springframework.osgi.web</artifactId> </dependency>
+                       <dependency> <groupId>org.apache.catalina</groupId>
+                       <artifactId>com.springsource.org.apache.catalina</artifactId>
+                       </dependency> <dependency> <groupId>org.argeo.slc.dep.osgi</groupId>
+                       <artifactId>org.argeo.dep.osgi.catalina.start</artifactId>
+                       </dependency> <dependency> <groupId>javax.servlet</groupId>
+                       <artifactId>com.springsource.javax.servlet.jsp</artifactId>
+                       </dependency> <dependency> <groupId>javax.el</groupId>
+                       <artifactId>com.springsource.javax.el</artifactId> </dependency>
+                       <dependency> <groupId>javax.servlet</groupId>
+                       <artifactId>com.springsource.javax.servlet.jsp.jstl</artifactId>
+                       </dependency> <dependency> <groupId>org.apache.taglibs</groupId>
+                       <artifactId>com.springsource.org.apache.taglibs.standard</artifactId>
+                       </dependency>
+               -->
+
+               <!-- Using spring osgi repo -->
+               <dependency>
+                       <groupId>org.apache.commons</groupId>
+                       <artifactId>com.springsource.org.apache.commons.logging</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.log4j</groupId>
+                       <artifactId>
+                                       com.springsource.org.apache.log4j
+                               </artifactId>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>catalina.osgi</artifactId>
+                       <version>5.5.23-SNAPSHOT</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>catalina.start.osgi</artifactId>
+                       <version>1.0.0</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>jasper.osgi</artifactId>
+                       <version>5.5.23-SNAPSHOT</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>commons-el.osgi</artifactId>
+                       <version>1.0-SNAPSHOT</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>jstl.osgi</artifactId>
+                       <version>1.1.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>servlet-api.osgi</artifactId>
+                       <version>2.5-SNAPSHOT</version>
+                       <type>jar</type>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>jsp-api.osgi</artifactId>
+                       <version>2.0-SNAPSHOT</version>
+                       <type>jar</type>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>spring-osgi-web</artifactId>
+                       <version>${spring-osgi.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>spring-osgi-web-extender</artifactId>
+                       <version>${spring-osgi.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework.osgi</groupId>
+                       <artifactId>spring-osgi-extender</artifactId>
+                       <version>${spring-osgi.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.aopalliance</groupId>
+                       <artifactId>com.springsource.org.aopalliance</artifactId>
+                       <version>1.0.0</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-web</artifactId>
+                       <version>${spring.version}</version>
                </dependency>
                <dependency>
-                       <groupId>org.apache.archiva</groupId>
-                       <artifactId>archiva-webapp</artifactId>
-                       <type>war</type>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-context</artifactId>
+                       <version>${spring.version}</version>
                </dependency>
+
+               <dependency>
+                       <groupId>org.springframework</groupId>
+                       <artifactId>spring-webmvc</artifactId>
+                       <version>${spring.version}</version>
+               </dependency>
+
+
+               <!-- Required in JDK 1.5 -->
+               <dependency>
+                       <groupId>com.sun.xml</groupId>
+                       <artifactId>
+                               com.springsource.com.sun.xml.messaging.saaj
+                               </artifactId>
+               </dependency>
+
+               <!-- For ActiveMQ Ajax -->
+               <dependency>
+                       <groupId>org.mortbay.jetty</groupId>
+                       <artifactId>com.springsource.org.mortbay.util</artifactId>
+                       <version>6.1.9</version>
+               </dependency>
+
+               <!-- To launch OSGi -->
+               <dependency>
+                       <groupId>org.argeo.slc</groupId>
+                       <artifactId>org.argeo.slc.detached.launcher</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+
        </dependencies>
+
+       <repositories>
+               <repository>
+                       <id>spring-osgified-artifacts</id>
+                       <snapshots>
+                               <enabled>true</enabled>
+                       </snapshots>
+                       <name>Springframework Maven OSGified Artifacts Repository</name>
+                       <url>http://maven.springframework.org/osgi</url>
+               </repository>
+       </repositories>
 </project>
\ No newline at end of file