[Mulgara-svn] r1118 - in trunk: . conf lib src/jar/descriptor src/jar/server/java/org/mulgara/server src/jar/tag

pag at mulgara.org pag at mulgara.org
Fri Aug 1 05:15:38 UTC 2008


Author: pag
Date: 2008-07-31 22:15:37 -0700 (Thu, 31 Jul 2008)
New Revision: 1118

Added:
   trunk/lib/core-3.1.1.jar
   trunk/lib/jetty-6.1.11.jar
   trunk/lib/jetty-util-6.1.11.jar
   trunk/lib/jsp-2.1.jar
   trunk/lib/jsp-api-2.1.jar
   trunk/lib/servlet-api-2.5-6.1.11.jar
Removed:
   trunk/lib/javax.servlet-2.3.jar
   trunk/lib/org.mortbay.jetty-4.2.19.jar
   trunk/lib/org.mortbay.jetty.plus-4.2.19.jar
Modified:
   trunk/.classpath
   trunk/build.properties
   trunk/build.xml
   trunk/common.properties
   trunk/common.xml
   trunk/conf/mulgara-config.xml
   trunk/conf/mulgara-embedded.dtd
   trunk/conf/mulgara-embedded.xsd
   trunk/conf/mulgara-rmi.policy
   trunk/src/jar/descriptor/build.xml
   trunk/src/jar/server/java/org/mulgara/server/EmbeddedMulgaraServer.java
   trunk/src/jar/tag/build.xml
Log:
This is an integrated checkin, since each modification needs the others in
order to work.

EmbeddedMulgaraServer has been extensively reshaped. This is not its final
form, but hopefully it is easier to understand and refactor.

All static documents have been removed from the web server. This may result
in the tutorial in the webui needing to be updated since the documents to be
loaded may be elsewhere. The web server can also be disabled, either by
setting <Disabled>false</Disabled> in the Jetty section of the config file
or by defining "mulgara.http.disable" in the system properties.

The web server has also been updated from Jetty 4.2.19 to Jetty 6.1.11. This
resulted in changes to the Jetty configuration. For details see:
  * conf/mulgara-embedded.dtd (not actually used anywhere)
  * conf/mulgara-embedded.xsd (the definition)
  * conf/mulgara-config.xml (The default configuration)

The library updates also required a few updates to the build scripts in
"descriptor" and "tag".

Also updated the main build scripts to NOT delete the SableCC and
ideSupport.jar files when building the "clean" target. If you want to remove
these, then use the new "mrclean" target.



Modified: trunk/.classpath
===================================================================
--- trunk/.classpath	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/.classpath	2008-08-01 05:15:37 UTC (rev 1118)
@@ -73,8 +73,6 @@
 	<classpathentry kind="lib" path="lib/Quick4util.jar"/>
 	<classpathentry kind="lib" path="lib/Quick4rt.jar"/>
 	<classpathentry kind="lib" path="lib/plankton-1.2.6.jar"/>
-	<classpathentry kind="lib" path="lib/org.mortbay.jetty-4.2.19.jar"/>
-	<classpathentry kind="lib" path="lib/org.mortbay.jetty.plus-4.2.19.jar"/>
 	<classpathentry kind="lib" path="lib/mail-1.3.jar"/>
 	<classpathentry kind="lib" path="lib/log4j-1.2.15.jar"/>
 	<classpathentry kind="lib" path="lib/jxunit3.jar"/>
@@ -92,7 +90,6 @@
 	<classpathentry kind="lib" path="lib/jid3-0.34.jar"/>
 	<classpathentry kind="lib" path="lib/jboss-j2ee.jar"/>
 	<classpathentry kind="lib" path="lib/jaxrpc-1.4.jar"/>
-	<classpathentry kind="lib" path="lib/javax.servlet-2.3.jar"/>
 	<classpathentry kind="lib" path="lib/javacc.jar"/>
 	<classpathentry kind="lib" path="lib/jasper-runtime-4.2.29.jar"/>
 	<classpathentry kind="lib" path="lib/jasper-compiler-4.2.29.jar"/>
@@ -138,5 +135,9 @@
 	<classpathentry kind="lib" path="lib/joda-time-1.5.2.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="lib" path="lib/sesame-model-2.1.jar"/>
+	<classpathentry kind="lib" path="lib/jetty-6.1.11.jar"/>
+	<classpathentry kind="lib" path="lib/jetty-util-6.1.11.jar"/>
+	<classpathentry kind="lib" path="lib/servlet-api-2.5-6.1.11.jar"/>
+	<classpathentry kind="lib" path="lib/jsp-api-2.1.jar"/>
 	<classpathentry kind="output" path="obj/jar"/>
 </classpath>

Modified: trunk/build.properties
===================================================================
--- trunk/build.properties	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/build.properties	2008-08-01 05:15:37 UTC (rev 1118)
@@ -26,6 +26,7 @@
 #javacc.home     =/mnt/tools/lucene/javacc2.1/bin
 javacc.zip.dir  =${lib.dir}
 javacc.zip      =${javacc.zip.dir}/JavaCC.zip
+javacc.jar      =javacc.jar
 #j2ee.home      =/mnt/tools/java/j2sdkee1.3.1
 
 # Executable pathnames
@@ -122,8 +123,8 @@
 jakarta-oro.jar          =jakarta-oro-2.0.5.jar
 jca.jar                  =connector-1_5.jar
 jena.jar                 =jena-2.1.jar
-jetty.jar                =org.mortbay.jetty-4.2.19.jar
-jetty.plus.jar           =org.mortbay.jetty.plus-4.2.19.jar
+jetty.jar                =jetty-6.1.11.jar
+jetty.plus.jar           =jetty-util-6.1.11.jar
 jid3.jar                 =jid3-0.34.jar
 jmdns.jar                =jmdns-0.2.jar
 joda-time.jar            =joda-time-1.5.2.jar
@@ -144,7 +145,7 @@
 mail.jar                 =mail-1.3.jar
 saaj.jar                 =saaj-1.4.jar
 serializer.jar           =serializer-2.7.0.jar
-servlet.jar              =javax.servlet-2.3.jar
+servlet.jar              =servlet-api-2.5-6.1.11.jar
 simple-jndi.jar          =simple-jndi-0.9.jar
 sofa-doc.jar             =sofa-doc.jar
 sofa.jar                 =sofa-1.0-alpha.jar
@@ -158,3 +159,7 @@
 mulgara-sparql.jar       =mulgara-sparql-0.0.2.jar
 velocity.jar             =velocity-1.5.jar
 
+# The following are JSP libs to be removed when JSP is excised
+jsp-core.jar             =core-3.1.1.jar
+jsp.jar                  =jsp-2.1.jar
+servlet-jsp.jar          =jsp-api-2.1.jar

Modified: trunk/build.xml
===================================================================
--- trunk/build.xml	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/build.xml	2008-08-01 05:15:37 UTC (rev 1118)
@@ -512,7 +512,7 @@
           lib/${resolver-jar.jar}, lib/${dtd.jar}, lib/${jrdf.base.jar}
           lib/activation-1.0.2.jar, lib/icu4j.jar, lib/jena-2.1.jar, lib/antlr.jar,
           lib/${joda-time.jar}, lib/${commons-logging.jar}, lib/beepcore-0.9.08.jar, lib/log4j-1.2.15.jar, lib/${lucene.jar}, lib/mail-1.3.jar,
-          lib/${jetty.jar}, lib/${jetty.plus.jar}, lib/${jasper.compiler.jar}, lib/${servlet.jar}, lib/jargs-0.2.jar,
+          lib/${jetty.jar}, lib/${jetty.plus.jar}, lib/${jasper.compiler.jar}, lib/${servlet-jsp.jar}, lib/${servlet.jar}, lib/jargs-0.2.jar,
           lib/${castor-xml.jar}, lib/${castor-codegen.jar}, lib/${castor-xml-schema.jar}, lib/trove-1.0.2.jar, lib/${jrdf.jar}, lib/${saaj.jar},
           lib/${jakarta-oro.jar}, lib/jta-spec1_0_1.jar, lib/${jotm.jar}, lib/${jotm.jrmp.jar}, lib/${carol.jar}, lib/${howl.jar},
           lib/${jca.jar}, lib/${httpclient.jar}, lib/${commons-codec.jar}, lib/${mulgara-sparql.jar}, lib/${sesame-model.jar}"/>
@@ -566,7 +566,7 @@
       <zipfileset dir="${lib.dir}" prefix="lib" includes="
         ${log4j.jar}, ${icu4j.jar}, ${activation.jar}, ${beep.jar},
         ${jargs.jar}, ${jrdf.jar}, ${jetty.jar}, ${jetty.plus.jar},
-        ${servlet.jar}, ${jasper.runtime.jar}, ${jasper.compiler.jar},
+        ${servlet-jsp.jar}, ${servlet.jar}, ${jasper.runtime.jar}, ${jasper.compiler.jar},
         ${lucene.jar}, ${mail.jar}, ${castor-xml.jar}, ${castor-xml-schema.jar}, ${castor-codegen.jar}, ${trove.jar},
         ${joda-time.jar}, ${commons-logging.jar}, ${commons-httpclient.jar},
         ${commons-codec.jar}, ${emory-util.jar}, ${mulgara-sparql.jar}
@@ -830,7 +830,8 @@
       <classpath path="${lib.dir}/antlr.jar"/>
       <classpath path="${lib.dir}/barracuda-1.2.6.jar"/>
       <classpath path="${lib.dir}/beepcore-0.9.08.jar"/>
-      <classpath path="${lib.dir}/javax.servlet-2.3.jar"/>
+      <classpath path="${lib.dir}/${servlet.jar}"/>
+      <classpath path="${lib.dir}/${servlet-jsp.jar}"/>
       <classpath path="${lib.dir}/${jid3.jar}"/>
       <classpath path="${lib.dir}/jsr173_07_api.jar"/>
       <classpath path="${lib.dir}/${lucene.jar}"/>
@@ -1751,48 +1752,53 @@
                     mulgara.policy"/>
 
       <!-- third party libraries -->
-      <zipfileset src="${lib.dir}/${log4j.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${icu4j.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${activation.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${antlr.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${axis.jar}" excludes="META-INF/**, log4j.properties"/>
       <zipfileset src="${lib.dir}/${beep.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jargs.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jrdf.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${sesame-model.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jetty.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jetty.plus.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${servlet.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jasper.runtime.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jasper.compiler.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${lucene.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${mail.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${mulgara-sparql.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${carol.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${castor-xml.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${castor-xml-schema.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${castor-codegen.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${trove.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${joda-time.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${commons-discovery.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${commons-logging.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${commons-httpclient.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${commons-codec.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${emory-util.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${howl.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${icu4j.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jakarta-oro.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jargs.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jasper.runtime.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jasper.compiler.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jaxrpc.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jca.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jena.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jetty.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jetty.plus.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${joda-time.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${jotm.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${jotm.jrmp.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${carol.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${howl.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jta.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jrdf.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${jsr.173.api.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${jsr.173.ri.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jca.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${jta.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${log4j.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${lucene.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${mail.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${mulgara-sparql.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${saaj.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${axis.jar}" excludes="META-INF/**, log4j.properties"/>
-      <zipfileset src="${lib.dir}/${commons-discovery.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jaxrpc.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${serializer.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${servlet.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${sesame-model.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${trove.jar}" excludes="META-INF/**"/>
       <zipfileset src="${lib.dir}/${wsdl4j.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jakarta-oro.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${jena.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${antlr.jar}" excludes="META-INF/**"/>
-      <zipfileset src="${lib.dir}/${serializer.jar}" excludes="META-INF/**"/>
 
+      <!-- Libs needed for JSP. Remove these when JSP is eliminated. -->
+      <zipfileset src="${jsp-lib.dir}/${jsp-core.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${jsp-lib.dir}/${jsp.jar}" excludes="META-INF/**"/>
+      <zipfileset src="${lib.dir}/${servlet-jsp.jar}" excludes="META-INF/**"/>
+
       <!-- core libraries -->
       <zipfileset src="${bin.dir}/${query.jar}" excludes="META-INF/**"/>
       <zipfileset src="${bin.dir}/${driver.jar}" excludes="META-INF/**"/>

Modified: trunk/common.properties
===================================================================
--- trunk/common.properties	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/common.properties	2008-08-01 05:15:37 UTC (rev 1118)
@@ -36,7 +36,10 @@
 resolver.conf.dir     = ${conf.dir}/resolvers
 jar.obj.dir               =${obj.dir}/jar
 war.obj.dir               =${obj.dir}/war
+# Libraries directory for JSPs until we remove them
+jsp-lib.dir  =${basedir}/lib
 
+
 # Javadoc URLs
 java.javadoc  = file:${java.home}/../docs/api
 #java.javadoc = http://java.sun.com/j2se/1.4/docs/api

Modified: trunk/common.xml
===================================================================
--- trunk/common.xml	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/common.xml	2008-08-01 05:15:37 UTC (rev 1118)
@@ -85,11 +85,12 @@
 
       <classpath>
 
-        <pathelement location="${java.home}/../lib/tools.jar"/>
+        <pathelement location="${java.home}/lib/tools.jar"/>
         <pathelement location="${lib.dir}/ant-1.7.0.jar"/>
         <pathelement location="${lib.dir}/${jasper.runtime.jar}"/>
         <pathelement location="${lib.dir}/${jasper.compiler.jar}"/>
         <pathelement location="${lib.dir}/${servlet.jar}"/>
+        <pathelement location="${lib.dir}/${servlet-jsp.jar}"/>
         <pathelement location="${lib.dir}/${jetty.jar}"/>
       </classpath>
 
@@ -148,11 +149,11 @@
                        jena-*.jar, jrdf-*.jar, jxunit*.jar, castor*.jar,
                        mail-*.jar, activation-*.jar, apache-soap-*.jar,
                        axis-*.jar, saaj-*.jar, emory-*.jar, trove-*.jar,
-                       jargs-*.jar, org.mortbay.jetty*.jar, jta-spec*.jar,
+                       jargs-*.jar, jetty-*.jar, jta-spec*.jar,
                        jotm*.jar, commons-logging-*.jar, Quick4rt.jar,
                        commons-discovery-*.jar, commons-httpclient-*.jar,
                        commons-codec-*.jar, connector-*.jar, jaxrpc-*.jar,
-                       carol*.jar, howl-logger*.jar,
+                       carol*.jar, howl-logger*.jar, javax.servlet*.jar, servlet-api*.jar,
                        ${joda-time.jar}, mulgara-sparql*.jar, sesame-model-*.jar"
              excludes="jboss-j2ee.jar"/>
   </path>

Modified: trunk/conf/mulgara-config.xml
===================================================================
--- trunk/conf/mulgara-config.xml	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/conf/mulgara-config.xml	2008-08-01 05:15:37 UTC (rev 1118)
@@ -27,15 +27,13 @@
   -->
   <Jetty>
     <Disabled>false</Disabled>
-    <Listener>
+    <Connector>
       <!--<Host>localhost</Host>-->
       <Port>8080</Port>
-      <MinThreads>5</MinThreads>
-      <MaxThreads>255</MaxThreads>
+      <Acceptors>5</Acceptors>
       <MaxIdleTimeMs>60000</MaxIdleTimeMs>
-      <MaxReadTimeMs>60000</MaxReadTimeMs>
-      <LowResourcePersistTimeMs>5000</LowResourcePersistTimeMs>
-    </Listener>
+      <LowResourceMaxIdleTimeMs>5000</LowResourceMaxIdleTimeMs>
+    </Connector>
   </Jetty>
 
   <!-- The name of the server, used for RMI binding -->

Modified: trunk/conf/mulgara-embedded.dtd
===================================================================
--- trunk/conf/mulgara-embedded.dtd	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/conf/mulgara-embedded.dtd	2008-08-01 05:15:37 UTC (rev 1118)
@@ -7,17 +7,15 @@
 
   <!ELEMENT MulgaraHost (#PCDATA)>
 
-  <!ELEMENT Jetty (Listener)>
+  <!ELEMENT Jetty (Connector)>
 
-    <!ELEMENT Listener (Host?, Port, MinThreads, MaxThreads, MaxIdleTimeMs, MaxReadTimeMs, LowResourcePersistTimeMs)>
+    <!ELEMENT Connector (Host?, Port, Acceptors?, MaxIdleTimeMs?, LowResourceMaxIdleTimeMs?)>
 
       <!ELEMENT Host (#PCDATA)>
       <!ELEMENT Port (#PCDATA)>
-      <!ELEMENT MinThreads (#PCDATA)>
-      <!ELEMENT MaxThreads (#PCDATA)>
+      <!ELEMENT Acceptors (#PCDATA)>
       <!ELEMENT MaxIdleTimeMs (#PCDATA)>
-      <!ELEMENT MaxReadTimeMs (#PCDATA)>
-      <!ELEMENT LowResourcePersistTimeMs (#PCDATA)>
+      <!ELEMENT LowResourceMaxIdleTimeMs (#PCDATA)>
 
   <!ELEMENT ServerName (#PCDATA)>
 

Modified: trunk/conf/mulgara-embedded.xsd
===================================================================
--- trunk/conf/mulgara-embedded.xsd	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/conf/mulgara-embedded.xsd	2008-08-01 05:15:37 UTC (rev 1118)
@@ -13,28 +13,24 @@
     <xs:complexType>
       <xs:sequence>
         <xs:element name="Disabled" type="xs:boolean" minOccurs="0"/>
-        <xs:element ref="Listener" minOccurs="0"/>
+        <xs:element ref="Connector" minOccurs="0"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
-  <xs:element name="Listener">
+  <xs:element name="Connector">
     <xs:complexType>
       <xs:sequence>
         <xs:element ref="Host" minOccurs="0"/>
         <xs:element ref="Port"/>
-        <xs:element ref="MinThreads"/>
-        <xs:element ref="MaxThreads"/>
-        <xs:element ref="MaxIdleTimeMs"/>
-        <xs:element ref="MaxReadTimeMs"/>
-        <xs:element ref="LowResourcePersistTimeMs"/>
+        <xs:element ref="Acceptors" minOccurs="0"/>
+        <xs:element ref="MaxIdleTimeMs" minOccurs="0"/>
+        <xs:element ref="LowResourceMaxIdleTimeMs" minOccurs="0"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
-  <xs:element name="LowResourcePersistTimeMs" type="xs:int"/>
+  <xs:element name="LowResourceMaxIdleTimeMs" type="xs:int"/>
   <xs:element name="MaxIdleTimeMs" type="xs:int"/>
-  <xs:element name="MaxReadTimeMs" type="xs:int"/>
-  <xs:element name="MaxThreads" type="xs:int"/>
-  <xs:element name="MinThreads" type="xs:int"/>
+  <xs:element name="Acceptors" type="xs:int"/>
   <xs:element name="DefaultGraph" type="xs:string"/>
   <xs:element name="PersistencePath" type="xs:string"/>
   <xs:element name="Port" type="xs:int"/>

Modified: trunk/conf/mulgara-rmi.policy
===================================================================
--- trunk/conf/mulgara-rmi.policy	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/conf/mulgara-rmi.policy	2008-08-01 05:15:37 UTC (rev 1118)
@@ -12,6 +12,7 @@
   permission java.lang.RuntimePermission "setContextClassLoader";
   permission java.lang.RuntimePermission "createClassLoader";
   permission java.lang.RuntimePermission "shutdownHooks";
+  permission java.lang.RuntimePermission "setIO";
   permission java.lang.RuntimePermission "exitVM";
   permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
   permission java.net.SocketPermission "*:80", "connect,resolve";

Added: trunk/lib/core-3.1.1.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/core-3.1.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: trunk/lib/javax.servlet-2.3.jar
===================================================================
(Binary files differ)

Added: trunk/lib/jetty-6.1.11.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/jetty-6.1.11.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/lib/jetty-util-6.1.11.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/jetty-util-6.1.11.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/lib/jsp-2.1.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/jsp-2.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/lib/jsp-api-2.1.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/jsp-api-2.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: trunk/lib/org.mortbay.jetty-4.2.19.jar
===================================================================
(Binary files differ)

Deleted: trunk/lib/org.mortbay.jetty.plus-4.2.19.jar
===================================================================
(Binary files differ)

Added: trunk/lib/servlet-api-2.5-6.1.11.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/servlet-api-2.5-6.1.11.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/src/jar/descriptor/build.xml
===================================================================
--- trunk/src/jar/descriptor/build.xml	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/src/jar/descriptor/build.xml	2008-08-01 05:15:37 UTC (rev 1118)
@@ -41,6 +41,7 @@
 
     <pathelement location="${lib.dir}/${jasper.runtime.jar}"/>
     <pathelement location="${lib.dir}/${servlet.jar}"/>
+    <pathelement location="${lib.dir}/${servlet-jsp.jar}"/>
     <pathelement location="${lib.dir}/${jetty.jar}"/>
 
     <pathelement location="${dist.dir}/${driver.jar}"/>
@@ -113,8 +114,7 @@
 
   <target name="descriptor-compile"
           depends="descriptor-jsp-compile"
-          description="Compiles all descriptor related files included generated
-                       source code">
+          description="Compiles all descriptor related files included generated source code">
 
     <javac destdir="${descriptor.obj.dir}/classes" debug="on"
            deprecation="on" source="1.5">

Modified: trunk/src/jar/server/java/org/mulgara/server/EmbeddedMulgaraServer.java
===================================================================
--- trunk/src/jar/server/java/org/mulgara/server/EmbeddedMulgaraServer.java	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/src/jar/server/java/org/mulgara/server/EmbeddedMulgaraServer.java	2008-08-01 05:15:37 UTC (rev 1118)
@@ -46,19 +46,22 @@
 
 // locally written packages
 import org.mulgara.config.MulgaraConfig;
-import org.mulgara.config.Listener;
+import org.mulgara.config.Connector;
 import org.mulgara.server.SessionFactory;
 import org.mulgara.store.StoreException;
 import org.mulgara.store.xa.SimpleXAResourceException;
 import org.mulgara.util.TempDir;
+
 import static org.mulgara.server.ServerMBean.ServerState;
 
 // jetty packages
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.SocketListener;
+import org.mortbay.jetty.AbstractConnector;
+import org.mortbay.jetty.Handler;
 import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.WebApplicationContext;
-import org.mortbay.jetty.servlet.WebApplicationHandler;
+import org.mortbay.jetty.handler.ContextHandler;
+import org.mortbay.jetty.nio.BlockingChannelConnector;
+import org.mortbay.jetty.webapp.WebAppClassLoader;
+import org.mortbay.jetty.webapp.WebAppContext;
 import org.mortbay.util.MultiException;
 
 /**
@@ -142,6 +145,9 @@
   /** The system property to disable the RMI service. */
   private static final String DISABLE_RMI = "no_rmi";
 
+  /** The maximum number of acceptors that Jetty can handle. It locks above this number. */
+  private static final int WEIRD_JETTY_THREAD_LIMIT = 24;
+
   /** The Mulgara server instance. In this case, an RMIServer. */
   private ServerMBean serverManagement = null;
 
@@ -212,7 +218,7 @@
       }
   
     } catch (MultiException me) {
-      for (Exception e: (List<Exception>)me.getExceptions()) {
+      for (Throwable e: (List<Throwable>)me.getThrowables()) {
         log.error("MultiException", e);
         e.printStackTrace();
       }
@@ -595,17 +601,17 @@
           loadLoggingConfig(mulgaraConfig.getExternalConfigPaths().getMulgaraLogging());
         }
 
-        Listener httpListener = mulgaraConfig.getJetty().getListener();
+        Connector httpConnector = mulgaraConfig.getJetty().getConnector();
 
         String httpHost = (String)parser.getOptionValue(EmbeddedMulgaraOptionParser.HTTP_HOST);
-        httpHostName = (httpHost != null) ? httpHost : httpListener.getHost();
+        httpHostName = (httpHost != null || httpConnector == null) ? httpHost : httpConnector.getHost();
 
         // set the port on which to accept HTTP requests
         String httpPort = (String)parser.getOptionValue(EmbeddedMulgaraOptionParser.PORT);
         if (httpPort != null) {
           ServerInfo.setHttpPort(Integer.parseInt(httpPort));
         } else {
-          ServerInfo.setHttpPort(httpListener.getPort());
+          if (httpConnector != null) ServerInfo.setHttpPort(httpConnector.getPort());
         }
 
         // set the (RMI) name of the server, preferencing the command line
@@ -745,18 +751,26 @@
     System.setProperty("LOG_CLASSES", "org.mortbay.util.log4j.Log4jSink");
 
     // create and register a new HTTP server
-    Server server = new Server();
+    Server server;
+    if (mulgaraConfig.getJetty().getConnector() == null) {
+      // create a default server
+      server = new Server(ServerInfo.getHttpPort());
+    } else {
+      // create a server with a configured connector
+      server = new Server();
+      addConnector(server);
+    }
 
-    // add a listener to the server
-    addListener(server);
-
     // add the webapps
     addWebServicesWebAppContext(server);
     addWebUIWebAppContext(server);
 
-    // add our class loader as the classloader of all contexts
+    // add our class loader as the classloader of all contexts, unless this is a webapp in which case we wrap it
     ClassLoader classLoader = this.getClass().getClassLoader();
-    for (HttpContext context: server.getContexts()) context.setParentClassLoader(classLoader);
+    for (Handler handler: server.getChildHandlers()) {
+      if (handler instanceof WebAppContext) ((WebAppContext)handler).setClassLoader(new WebAppClassLoader(classLoader, (WebAppContext)handler));
+      else if (handler instanceof ContextHandler) ((ContextHandler)handler).setClassLoader(classLoader);
+    }
 
     // return the server
     return server;
@@ -813,31 +827,38 @@
    * @param httpServer the server to add the listener to
    * @throws UnknownHostException if an invalid hostname was specified in the Mulgara server configuration
    */
-  private void addListener(Server httpServer) throws UnknownHostException {
+  private void addConnector(Server httpServer) throws UnknownHostException {
     if (httpServer == null) throw new IllegalArgumentException("Null \"httpServer\" parameter");
 
-    log.debug("Adding socket listener");
+    if (log.isDebugEnabled()) log.debug("Adding socket listener");
 
     // create and configure a listener
-    SocketListener listener = new SocketListener();
+    AbstractConnector connector = new BlockingChannelConnector();
     if ((httpHostName != null) && !httpHostName.equals("")) {
-      listener.setHost(httpHostName);
-      log.debug("Servlet container listening on host " + this.getHttpHostName());
+      connector.setHost(httpHostName);
+      if (log.isDebugEnabled()) log.debug("Servlet container listening on host " + this.getHttpHostName());
     } else {
       httpHostName = getResolvedLocalHost();
-      log.debug("Servlet container listening on all host interfaces");
+      if (log.isDebugEnabled()) log.debug("Servlet container listening on all host interfaces");
     }
 
     // set the listener to the jetty configuration
-    Listener jettyConfig = (Listener)mulgaraConfig.getJetty().getListener();
-    listener.setPort(ServerInfo.getHttpPort());
-    listener.setMinThreads(jettyConfig.getMinThreads());
-    listener.setMaxThreads(jettyConfig.getMaxThreads());
-    listener.setMaxIdleTimeMs(jettyConfig.getMaxIdleTimeMs());
-    listener.setLowResourcePersistTimeMs(jettyConfig. getLowResourcePersistTimeMs());
+    Connector jettyConfig = (Connector)mulgaraConfig.getJetty().getConnector();
+    connector.setPort(ServerInfo.getHttpPort());
 
+    if (jettyConfig.hasMaxIdleTimeMs()) connector.setMaxIdleTime(jettyConfig.getMaxIdleTimeMs());
+    if (jettyConfig.hasLowResourceMaxIdleTimeMs()) connector.setLowResourceMaxIdleTime(jettyConfig.getLowResourceMaxIdleTimeMs());
+    if (jettyConfig.hasAcceptors()) {
+      int acceptors = jettyConfig.getAcceptors();
+      if (acceptors > WEIRD_JETTY_THREAD_LIMIT) {
+        log.warn("Acceptor threads set beyond HTTP Server limits. Reducing from" + acceptors + " to " + WEIRD_JETTY_THREAD_LIMIT);
+        acceptors = WEIRD_JETTY_THREAD_LIMIT;
+      }
+      connector.setAcceptors(acceptors);
+    }
+
     // add the listener to the http server
-    httpServer.addListener(listener);
+    httpServer.addConnector(connector);
   }
 
 
@@ -847,9 +868,6 @@
    * @throws IOException if the driver WAR file is not readable
    */
   private void addWebServicesWebAppContext(Server server) throws IOException {
-    // Create a servlet handler for web services
-    WebApplicationHandler descriptorServletHandler = new WebApplicationHandler();
-
     // get the URL to the WAR file
     URL webServicesWebAppURL = ClassLoader.getSystemResource(WEBAPP_PATH + "/" + WEBSERVICES_WEBAPP);
 
@@ -858,17 +876,15 @@
       return;
     }
 
+    String warPath = extractToTemp(WEBAPP_PATH + "/" + WEBSERVICES_WEBAPP);
+    
     // Add Descriptors and Axis
-    WebApplicationContext descriptorWARContext = server.addWebApplication(
-          null, "/" + WEBSERVICES_PATH + "/*", webServicesWebAppURL.toString());
+    WebAppContext descriptorWARContext = new WebAppContext(server, warPath, "/" + WEBSERVICES_PATH);
 
     // make some attributes available
     descriptorWARContext.setAttribute(BOUND_HOST_NAME_KEY, ServerInfo.getBoundHostname());
     descriptorWARContext.setAttribute(SERVER_MODEL_URI_KEY, ServerInfo.getServerURI().toString());
 
-    // add the handler for the servlets
-    descriptorWARContext.addHandler(descriptorServletHandler);
-
     // log that we're adding the test webapp context
     if (log.isDebugEnabled()) log.debug("Added Web Services webapp context");
   }
@@ -882,14 +898,12 @@
     if (log.isDebugEnabled()) log.debug("Adding WebUI webapp context");
 
     // get the URL to the WebUI WAR file
-    URL webUIWebAppURL = ClassLoader.getSystemResource(WEBAPP_PATH + "/" + WEBUI_WEBAPP);
+    String warPath = extractToTemp(WEBAPP_PATH + "/" + WEBUI_WEBAPP);
 
     // load the webapp if the WAR file exists
-    if (webUIWebAppURL != null) {
+    if (warPath != null) {
       // create the test webapp handler context
-      WebApplicationContext webUIWARContext =
-          server.addWebApplication(null, "/" + WEBUI_PATH + "/*", webUIWebAppURL.toString());
-      webUIWARContext.setParentClassLoader(this.getClass().getClassLoader());
+      new WebAppContext(server, warPath, "/" + WEBUI_PATH);
     } else {
       log.warn("Could not find WebUI webapp WAR file -> not adding to servlet container");
     }
@@ -897,6 +911,37 @@
 
 
   /**
+   * Extracts a resource from the environment (a jar in the classpath) and writes
+   * this to a file in the working temporary directory.
+   * @param resourceName The name of the resource. This is a relative file path in the jar file.
+   * @return The absolute path of the file the resource is extracted to, or <code>null</code>
+   *         if the resource does not exist.
+   * @throws IOException If there was an error reading the resource, or writing to the extracted file.
+   */
+  private String extractToTemp(String resourceName) throws IOException {
+    // Find the resource
+    URL resourceUrl = ClassLoader.getSystemResource(resourceName);
+    if (resourceUrl == null) return null;
+
+    // open the resource and the file where it will be copied to
+    InputStream in = resourceUrl.openStream();
+    File outFile = new File(TempDir.getTempDir(), new File(resourceName).getName());
+    log.info("Extracting: " + resourceUrl + " to " + outFile);
+    OutputStream out = new FileOutputStream(outFile);
+
+    // loop to copy from the resource to the output file
+    byte[] buffer = new byte[10240];
+    int len;
+    while ((len = in.read(buffer)) >= 0) out.write(buffer, 0, len);
+    in.close();
+    out.close();
+
+    // return the file that the resource was extracted to
+    return outFile.getAbsolutePath();
+  }
+
+
+  /**
    * Prints the usage instructions for starting the server.
    */
   public static void printUsage() {

Modified: trunk/src/jar/tag/build.xml
===================================================================
--- trunk/src/jar/tag/build.xml	2008-07-29 00:18:09 UTC (rev 1117)
+++ trunk/src/jar/tag/build.xml	2008-08-01 05:15:37 UTC (rev 1118)
@@ -23,7 +23,7 @@
 
     <pathelement path="${query.dist.dir}/${query.jar}"/>
 
-    <fileset file="${lib.dir}/javax.servlet-2.3.jar"/>
+    <fileset file="${lib.dir}/${servlet-jsp.jar}"/>
  </path>
 
   <path id="tag-test-classpath">




More information about the Mulgara-svn mailing list