diff --git a/solr/authority/conf/schema.xml b/solr/authority/conf/schema.xml new file mode 100644 index 0000000000000000000000000000000000000000..1964a8d4834d37390bcb004b8d659ecb11d67781 --- /dev/null +++ b/solr/authority/conf/schema.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" ?> +<schema name="VuFind Authority Index" version="1.2"> + <types> + <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> + <fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> + <fieldtype name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/> + <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> + <analyzer type="index"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + <analyzer type="query"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + </fieldType> + </types> + <fields> + <!-- Core Fields --> + <field name="id" type="string" indexed="true" stored="true"/> + <field name="fullrecord" type="string" indexed="false" stored="true"/> + <field name="marc_error" type="string" indexed="false" stored="true" multiValued="true"/> + <field name="allfields" type="text" indexed="true" stored="false"/> + + <!-- Extra identifiers - where did authority record originate? --> + <field name="source" type="string" indexed="true" stored="true"/> + <field name="record_type" type="string" indexed="true" stored="true"/> + <field name="lccn" type="string" indexed="true" stored="true" multiValued="true"/> + + <!-- String Fields for Exact Match / Faceting --> + <field name="heading" type="string" indexed="true" stored="true"/> + <field name="use_for" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="see_also" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="scope_note" type="string" indexed="false" stored="true" multiValued="true"/> + + <!-- Keyword Fields for Searching --> + <field name="heading_keywords" type="text" indexed="true" stored="false"/> + <field name="use_for_keywords" type="text" indexed="true" stored="false" multiValued="true"/> + <field name="see_also_keywords" type="text" indexed="true" stored="false" multiValued="true"/> + + <!-- Tracking fields to keep track of oldest and most recent index times --> + <field name="first_indexed" type="date" indexed="true" stored="true"/> + <field name="last_indexed" type="date" indexed="true" stored="true"/> + </fields> + + <uniqueKey>id</uniqueKey> + <defaultSearchField>allfields</defaultSearchField> + + <!-- CopyFields for Keyword Searching --> + <copyField source="heading" dest="heading_keywords" /> + <copyField source="use_for" dest="use_for_keywords" /> + <copyField source="see_also" dest="see_also_keywords" /> + + <!-- Default Boolean Operator --> + <solrQueryParser defaultOperator="AND"/> +</schema> diff --git a/solr/authority/conf/solrconfig.xml b/solr/authority/conf/solrconfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..7a83a0aecc63894bcc128b1063b4e505f9507e46 --- /dev/null +++ b/solr/authority/conf/solrconfig.xml @@ -0,0 +1,639 @@ +<?xml version="1.0" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<config> + + <!-- Set this to 'false' if you want solr to continue working after it has + encountered an severe configuration error. In a production environment, + you may want solr to keep working even if one handler is mis-configured. + + You may also set this to false using by setting the system property: + -Dsolr.abortOnConfigurationError=false + --> + <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError> + + <!-- Controls what version of Lucene various components of Solr + adhere to. Generally, you want to use the latest version to + get all bug fixes and improvements. It is highly recommended + that you fully re-index after changing this setting as it can + affect both how text is indexed and queried. + --> + <luceneMatchVersion>LUCENE_35</luceneMatchVersion> + + <!-- Used to specify an alternate directory to hold all index data + other than the default ./data under the Solr home. + If replication is in use, this should match the replication configuration. --> + <dataDir>${solr.solr.home:./solr}/authority</dataDir> + + <indexDefaults> + <!-- Values here affect all index writers and act as a default unless overridden. --> + <useCompoundFile>false</useCompoundFile> + <mergeFactor>10</mergeFactor> + <!-- + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <!--<maxBufferedDocs>1000</maxBufferedDocs>--> + <!-- Tell Lucene when to flush documents to disk. + Giving Lucene more memory for indexing means faster indexing at the cost of more RAM + + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <ramBufferSizeMB>32</ramBufferSizeMB> + <maxMergeDocs>2147483647</maxMergeDocs> + <writeLockTimeout>1000</writeLockTimeout> + <commitLockTimeout>10000</commitLockTimeout> + + <!-- + Expert: Turn on Lucene's auto commit capability. + + TODO: Add recommendations on why you would want to do this. + + NOTE: Despite the name, this value does not have any relation to Solr's autoCommit functionality + + --> + <!--<luceneAutoCommit>false</luceneAutoCommit>--> + <!-- + Expert: + The Merge Policy in Lucene controls how merging is handled by Lucene. The default in 2.3 is the LogByteSizeMergePolicy, previous + versions used LogDocMergePolicy. + + LogByteSizeMergePolicy chooses segments to merge based on their size. The Lucene 2.2 default, LogDocMergePolicy chose when + to merge based on number of documents + + Other implementations of MergePolicy must have a no-argument constructor + --> + <!--<mergePolicy>org.apache.lucene.index.LogByteSizeMergePolicy</mergePolicy>--> + + <!-- + Expert: + The Merge Scheduler in Lucene controls how merges are performed. The ConcurrentMergeScheduler (Lucene 2.3 default) + can perform merges in the background using separate threads. The SerialMergeScheduler (Lucene 2.2 default) does not. + --> + <!--<mergeScheduler>org.apache.lucene.index.ConcurrentMergeScheduler</mergeScheduler>--> + + <!-- + As long as Solr is the only process modifying your index, it is + safe to use Lucene's in process locking mechanism. But you may + specify one of the other Lucene LockFactory implementations in + the event that you have a custom situation. + + none = NoLockFactory (typically only used with read only indexes) + single = SingleInstanceLockFactory (suggested) + native = NativeFSLockFactory + simple = SimpleFSLockFactory + + ('simple' is the default for backwards compatibility with Solr 1.2) + --> + <lockType>single</lockType> + + <!-- TODO: check if this are needed --> + <maxFieldLength>10000</maxFieldLength> + + </indexDefaults> + + <mainIndex> + <!-- options specific to the main on-disk lucene index --> + <useCompoundFile>false</useCompoundFile> + <ramBufferSizeMB>32</ramBufferSizeMB> + <mergeFactor>10</mergeFactor> + <maxMergeDocs>2147483647</maxMergeDocs> + <maxFieldLength>10000</maxFieldLength> + + <!-- If true, unlock any held write or commit locks on startup. + This defeats the locking mechanism that allows multiple + processes to safely access a lucene index, and should be + used with care. --> + <unlockOnStartup>false</unlockOnStartup> + </mainIndex> + + <!-- the default high-performance update handler --> + <updateHandler class="solr.DirectUpdateHandler2"> + + <!-- autocommit pending docs if certain criteria are met --> + <autoCommit> + <maxDocs>10000</maxDocs> + <maxTime>20000</maxTime> + </autoCommit> + + <!-- The RunExecutableListener executes an external command. + exe - the name of the executable to run + dir - dir to use as the current working directory. default="." + wait - the calling thread waits until the executable returns. default="true" + args - the arguments to pass to the program. default=nothing + env - environment variables to set. default=nothing + --> + <!-- A postCommit event is fired after every commit or optimize command + <listener event="postCommit" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + <arr name="args"> <str>arg1</str> <str>arg2</str> </arr> + <arr name="env"> <str>MYVAR=val1</str> </arr> + </listener> + --> + <!-- A postOptimize event is fired only after every optimize command, useful + in conjunction with index distribution to only distribute optimized indicies + <listener event="postOptimize" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + </listener> + --> + + </updateHandler> + + + <query> + <!-- Maximum number of clauses in a boolean query... can affect + range or prefix queries that expand to big boolean + queries. An exception is thrown if exceeded. --> + <maxBooleanClauses>1024</maxBooleanClauses> + + + <!-- Cache used by SolrIndexSearcher for filters (DocSets), + unordered sets of *all* documents that match a query. + When a new searcher is opened, its caches may be prepopulated + or "autowarmed" using data from caches in the old searcher. + autowarmCount is the number of items to prepopulate. For LRUCache, + the autowarmed items will be the most recently accessed items. + Parameters: + class - the SolrCache implementation (currently only LRUCache) + size - the maximum number of entries in the cache + initialSize - the initial capacity (number of entries) of + the cache. (seel java.util.HashMap) + autowarmCount - the number of entries to prepopulate from + and old cache. + <filterCache + class="solr.LRUCache" + size="512" + initialSize="512" + autowarmCount="256"/> + --> + <filterCache + class="solr.LRUCache" + size="300000" + initialSize="300000" + autowarmCount="50000"/> + + <!-- queryResultCache caches results of searches - ordered lists of + document ids (DocList) based on a query, a sort, and the range + of documents requested. + <queryResultCache + class="solr.LRUCache" + size="512" + initialSize="512" + autowarmCount="256"/> + --> + <queryResultCache + class="solr.LRUCache" + size="100000" + initialSize="5000" + autowarmCount="5000"/> + + <!-- documentCache caches Lucene Document objects (the stored fields for each document). + Since Lucene internal document ids are transient, this cache will not be autowarmed. --> + <documentCache + class="solr.LRUCache" + size="50000" + initialSize="50000" + autowarmCount="10000"/> + + <!-- If true, stored fields that are not requested will be loaded lazily. + --> + <enableLazyFieldLoading>false</enableLazyFieldLoading> + + <!-- Example of a generic cache. These caches may be accessed by name + through SolrIndexSearcher.getCache(),cacheLookup(), and cacheInsert(). + The purpose is to enable easy caching of user/application level data. + The regenerator argument should be specified as an implementation + of solr.search.CacheRegenerator if autowarming is desired. --> + <!-- + <cache name="myUserCache" + class="solr.LRUCache" + size="4096" + initialSize="1024" + autowarmCount="1024" + regenerator="org.mycompany.mypackage.MyRegenerator" + /> + --> + + <!-- An optimization that attempts to use a filter to satisfy a search. + If the requested sort does not include score, then the filterCache + will be checked for a filter matching the query. If found, the filter + will be used as the source of document ids, and then the sort will be + applied to that. --> + <useFilterForSortedQuery>true</useFilterForSortedQuery> + + <!-- An optimization for use with the queryResultCache. When a search + is requested, a superset of the requested number of document ids + are collected. For example, if a search for a particular query + requests matching documents 10 through 19, and queryWindowSize is 50, + then documents 0 through 50 will be collected and cached. Any further + requests in that range can be satisfied via the cache. --> + <queryResultWindowSize>50</queryResultWindowSize> + + <!-- Maximum number of documents to cache for any entry in the + queryResultCache. --> + <queryResultMaxDocsCached>200</queryResultMaxDocsCached> + + <!-- This entry enables an int hash representation for filters (DocSets) + when the number of items in the set is less than maxSize. For smaller + sets, this representation is more memory efficient, more efficient to + iterate over, and faster to take intersections. --> + <HashDocSet maxSize="3000" loadFactor="0.75"/> + + <!-- a newSearcher event is fired whenever a new searcher is being prepared + and there is a current searcher handling requests (aka registered). --> + <!-- QuerySenderListener takes an array of NamedList and executes a + local query request for each NamedList in sequence. --> + <!-- + <listener event="newSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst> + <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst> + </arr> + </listener> + --> + + <!-- a firstSearcher event is fired whenever a new searcher is being + prepared but there is no current registered searcher to handle + requests or to gain autowarming data from. --> + <!-- + <listener event="firstSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst> + </arr> + </listener> + --> + + <!-- If a search request comes in and there is no current registered searcher, + then immediately register the still warming searcher and use it. If + "false" then all requests will block until the first searcher is done + warming. --> + <useColdSearcher>false</useColdSearcher> + + <!-- Maximum number of searchers that may be warming in the background + concurrently. An error is returned if this limit is exceeded. Recommend + 1-2 for read-only slaves, higher for masters w/o cache warming. --> + <maxWarmingSearchers>4</maxWarmingSearchers> + + </query> + + <!-- + Let the dispatch filter handler /select?qt=XXX + handleSelect=true will use consistent error handling for /select and /update + handleSelect=false will use solr1.1 style error formatting + --> + <requestDispatcher handleSelect="true" > + <!--Make sure your system has some authentication before enabling remote streaming! --> + <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> + + <!-- Set HTTP caching related parameters (for proxy caches and clients). + + To get the behaviour of Solr 1.2 (ie: no caching related headers) + use the never304="true" option and do not specify a value for + <cacheControl> + --> + <!-- <httpCaching never304="true"> --> + <httpCaching lastModifiedFrom="openTime" + etagSeed="Solr"> + <!-- lastModFrom="openTime" is the default, the Last-Modified value + (and validation against If-Modified-Since requests) will all be + relative to when the current Searcher was opened. + You can change it to lastModFrom="dirLastMod" if you want the + value to exactly corrispond to when the physical index was last + modified. + + etagSeed="..." is an option you can change to force the ETag + header (and validation against If-None-Match requests) to be + differnet even if the index has not changed (ie: when making + significant changes to your config file) + + lastModifiedFrom and etagSeed are both ignored if you use the + never304="true" option. + --> + <!-- If you include a <cacheControl> directive, it will be used to + generate a Cache-Control header, as well as an Expires header + if the value contains "max-age=" + + By default, no Cache-Control header is generated. + + You can use the <cacheControl> option even if you have set + never304="true" + --> + <!-- <cacheControl>max-age=30, public</cacheControl> --> + </httpCaching> + </requestDispatcher> + + <!-- requestHandler plugins... incoming queries will be dispatched to the + correct handler based on the qt (query type) param matching the + name of registered handlers. + The "standard" request handler is the default and will be used if qt + is not specified in the request. + --> + <requestHandler name="standard" class="solr.StandardRequestHandler" default="true"> + <!-- default values for query parameters may optionally be defined here + <lst name="defaults"> + <int name="rows">10</int> + <str name="fl">*</str> + <str name="version">2.1</str> + <lst> + --> + <lst name="defaults"> + <str name="echoParam">explicit</str> + </lst> + </requestHandler> + + <!-- DisMaxRequestHandler is an example of a request handler that + supports optional parameters which are passed to + its init() method. + --> + <requestHandler name="dismax" class="solr.DisMaxRequestHandler" > + <lst name="defaults"> + <float name="tie">0.01</float> + <str name="qf"> + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + </str> + <str name="pf"> + text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9 + </str> + <str name="bf"> + ord(poplarity)^0.5 recip(rord(price),1,1000,1000)^0.3 + </str> + <str name="fl"> + id,name,price,score + </str> + <str name="mm"> + 2<-1 5<-2 6<90% + </str> + <int name="ps">100</int> + </lst> + </requestHandler> + <!-- Note how you can register the same handler multiple times with + different names (and different init parameters) + --> + <requestHandler name="partitioned" class="solr.DisMaxRequestHandler" > + <lst name="defaults"> + <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0</str> + <str name="mm">2<-1 5<-2 6<90%</str> + <!-- This is an example of using Date Math to specify a constantly + moving date range in a config... + --> + <str name="bq">incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2</str> + </lst> + <!-- In addition to defaults, "appends" params can be specified + to identify values which should be appended to the list of + multi-val params from the query (or the existing "defaults"). + + In this example, the param "fq=instock:true" will be appended to + any query time fq params the user may specify, as a mechanism for + partitioning the index, independent of any user selected filtering + that may also be desired (perhaps as a result of faceted searching). + + NOTE: there is *absolutely* nothing a client can do to prevent these + "appends" values from being used, so don't use this mechanism + unless you are sure you always want it. + --> + <lst name="appends"> + <str name="fq">inStock:true</str> + </lst> + <!-- "invariants" are a way of letting the Solr maintainer lock down + the options available to Solr clients. Any params values + specified here are used regardless of what values may be specified + in either the query, the "defaults", or the "appends" params. + + In this example, the facet.field and facet.query params are fixed, + limiting the facets clients can use. Faceting is not turned on by + default - but if the client does specify facet=true in the request, + these are the only facets they will be able to see counts for; + regardless of what other facet.field or facet.query params they + may specify. + + NOTE: there is *absolutely* nothing a client can do to prevent these + "invariants" values from being used, so don't use this mechanism + unless you are sure you always want it. + --> + <lst name="invariants"> + <str name="facet.field">cat</str> + <str name="facet.field">manu_exact</str> + <str name="facet.query">price:[* TO 500]</str> + <str name="facet.query">price:[500 TO *]</str> + </lst> + </requestHandler> + + <requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> + <lst name="defaults"> + <str name="mlt.fl">manu,cat</str> + <int name="mlt.mindf">1</int> + </lst> + </requestHandler> + + <!-- Search component for extracting terms --> + <searchComponent name="term" class="org.apache.solr.handler.component.TermsComponent"> + </searchComponent> + + <!-- + + Search components are registered to SolrCore and used by Search Handlers + + By default, the following components are avaliable: + + <searchComponent name="query" class="org.apache.solr.handler.component.QueryComponent" /> + <searchComponent name="facet" class="org.apache.solr.handler.component.FacetComponent" /> + <searchComponent name="mlt" class="org.apache.solr.handler.component.MoreLikeThisComponent" /> + <searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" /> + <searchComponent name="debug" class="org.apache.solr.handler.component.DebugComponent" /> + + If you register a searchComponent to one of the standard names, that will be used instead. + + --> + + <requestHandler name="/search" class="org.apache.solr.handler.component.SearchHandler"> + <lst name="defaults"> + <str name="echoParams">explicit</str> + </lst> + <!-- + By default, this will register the following components: + + <arr name="components"> + <str>query</str> + <str>facet</str> + <str>mlt</str> + <str>highlight</str> + <str>debug</str> + </arr> + + To insert handlers before or after the 'standard' components, use: + + <arr name="first-components"> + <str>first</str> + </arr> + + <arr name="last-components"> + <str>last</str> + </arr> + + --> + </requestHandler> + + <!-- Request handler to extract terms --> + <requestHandler name="/term" class="org.apache.solr.handler.component.SearchHandler"> + <arr name="components"> + <str>term</str> + </arr> + </requestHandler> + + <!-- Update request handler. + + Note: Since solr1.1 requestHandlers requires a valid content type header if posted in + the body. For example, curl now requires: -H 'Content-type:text/xml; charset=utf-8' + The response format differs from solr1.1 formatting and returns a standard error code. + + To enable solr1.1 behavior, remove the /update handler or change its path + + "update.processor.class" is the class name for the UpdateRequestProcessor. It is initalized + only once. This can not be changed for each request. + --> + <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" > + <!-- + <str name="update.processor.class">org.apache.solr.handler.UpdateRequestProcessor</str> + --> + </requestHandler> + + <!-- + Analysis request handler. Since Solr 1.3. Use to returnhow a document is analyzed. Useful + for debugging and as a token server for other types of applications + --> + <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" > + <!-- + <str name="update.processor.class">org.apache.solr.handler.UpdateRequestProcessor</str> + --> + </requestHandler> + + <!-- CSV update handler, loaded on demand --> + <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" /> + + + <!-- + Admin Handlers - This will register all the standard admin RequestHandlers. Adding + this single handler is equivolent to registering: + + <requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" /> + <requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" /> + <requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" /> + <requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" /> + <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" /> + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + + If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using: + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + <lst name="invariants"> + <str name="hidden">synonyms.txt</str> + <str name="hidden">anotherfile.txt</str> + </lst> + </requestHandler> + --> + <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> + + <!-- ping/healthcheck --> + <requestHandler name="/admin/ping" class="PingRequestHandler"> + <lst name="defaults"> + <str name="qt">standard</str> + <str name="q">solrpingquery</str> + <str name="echoParams">all</str> + </lst> + </requestHandler> + + <!-- Echo the request contents back to the client --> + <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > + <lst name="defaults"> + <str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' --> + <str name="echoHandler">true</str> + </lst> + </requestHandler> + + <searchComponent class="solr.HighlightComponent" name="highlight"> + <highlighting> + <!-- Configure the standard fragmenter --> + <!-- This could most likely be commented out in the "default" case --> + <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true"> + <lst name="defaults"> + <int name="hl.fragsize">100</int> + </lst> + </fragmenter> + + <!-- A regular-expression-based fragmenter (f.i., for sentence extraction) --> + <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> + <lst name="defaults"> + <!-- slightly smaller fragsizes work better because of slop --> + <int name="hl.fragsize">70</int> + <!-- allow 50% slop on fragment sizes --> + <float name="hl.regex.slop">0.5</float> + <!-- a basic sentence pattern --> + <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str> + </lst> + </fragmenter> + + <!-- Configure the standard formatter --> + <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true"> + <lst name="defaults"> + <str name="hl.simple.pre"><![CDATA[<em>]]></str> + <str name="hl.simple.post"><![CDATA[</em>]]></str> + </lst> + </formatter> + </highlighting> + </searchComponent> + + <!-- queryResponseWriter plugins... query responses will be written using the + writer specified by the 'wt' request parameter matching the name of a registered + writer. + The "standard" writer is the default and will be used if 'wt' is not specified + in the request. XMLResponseWriter will be used if nothing is specified here. + The json, python, and ruby writers are also available by default. + + <queryResponseWriter name="standard" class="org.apache.solr.request.XMLResponseWriter"/> + <queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/> + <queryResponseWriter name="python" class="org.apache.solr.request.PythonResponseWriter"/> + <queryResponseWriter name="ruby" class="org.apache.solr.request.RubyResponseWriter"/> + + <queryResponseWriter name="custom" class="com.example.MyResponseWriter"/> + --> +<!-- + XSLT response writer (SOLR-49) + Changes to XSLT transforms are taken into account every xsltCacheLifetimeSeconds at most. + --> + <queryResponseWriter + name="xslt" + class="org.apache.solr.response.XSLTResponseWriter" + > + <int name="xsltCacheLifetimeSeconds">5</int> + </queryResponseWriter> + + <!-- config for the admin interface --> + <admin> + <defaultQuery>shakespeare</defaultQuery> + + <!-- configure a healthcheck file for servers behind a loadbalancer + <healthcheck type="file">server-enabled</healthcheck> + --> + </admin> + +</config> + diff --git a/solr/biblio/conf/admin-extra.html b/solr/biblio/conf/admin-extra.html new file mode 100644 index 0000000000000000000000000000000000000000..aa739da862cf99b76b75b6f3ccee23efdfd2321b --- /dev/null +++ b/solr/biblio/conf/admin-extra.html @@ -0,0 +1,31 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- The content of this page will be statically included into the top +of the admin page. Uncomment this as an example to see there the content +will show up. + +<hr> +<i>This line will appear before the first table</i> +<tr> +<td colspan="2"> +This row will be appended to the end of the first table +</td> +</tr> +<hr> + +--> diff --git a/solr/biblio/conf/elevate.xml b/solr/biblio/conf/elevate.xml new file mode 100644 index 0000000000000000000000000000000000000000..7630ebe20fb91d4a6564785d01884d577a2fdc20 --- /dev/null +++ b/solr/biblio/conf/elevate.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- If this file is found in the config directory, it will only be + loaded once at startup. If it is found in Solr's data + directory, it will be re-loaded every commit. +--> + +<elevate> + <query text="foo bar"> + <doc id="1" /> + <doc id="2" /> + <doc id="3" /> + </query> + + <query text="ipod"> + <doc id="MA147LL/A" /> <!-- put the actual ipod at the top --> + <doc id="IW-02" exclude="true" /> <!-- exclude this cable --> + </query> + +</elevate> diff --git a/solr/biblio/conf/protwords.txt b/solr/biblio/conf/protwords.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/solr/biblio/conf/schema.xml b/solr/biblio/conf/schema.xml new file mode 100644 index 0000000000000000000000000000000000000000..5b786c38462c552b8837a8924f4fbd7983781148 --- /dev/null +++ b/solr/biblio/conf/schema.xml @@ -0,0 +1,225 @@ +<?xml version="1.0" ?> +<schema name="VuFind Bibliographic Index" version="1.2"> + <types> + <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> + <fieldType name="textFacet" class="solr.TextField" sortMissingLast="true" omitNorms="true"> + <analyzer> + <tokenizer class="solr.KeywordTokenizerFactory"/> + <!-- strip trailing punctuation from facets: --> + <filter class="solr.PatternReplaceFilterFactory" pattern="(?<!\b[A-Z])[.\s]*$" replacement="" replace="first"/> + </analyzer> + </fieldType> + <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> + <analyzer type="index"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> + <filter class="solr.SnowballPorterFilterFactory" language="English"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + <analyzer type="query"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> + <filter class="solr.SnowballPorterFilterFactory" language="English"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + </fieldType> + <!-- Text Field without Stemming and Synonyms --> + <fieldType name="textProper" class="solr.TextField" positionIncrementGap="100"> + <analyzer type="index"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + <analyzer type="query"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + </fieldType> + <!-- Basic Text Field for use with Spell Correction --> + <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100"> + <analyzer> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + </fieldType> + <!-- More advanced spell checking field. --> + <fieldType name="textSpellShingle" class="solr.TextField" positionIncrementGap="100"> + <analyzer type="index"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> + <filter class="solr.ShingleFilterFactory" maxShingleSize="2" outputUnigrams="false"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + <analyzer type="query"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> + <filter class="solr.ShingleFilterFactory" maxShingleSize="2" outputUnigrams="false"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + </fieldType> + <!-- Text Field for Normalized ISBN/ISSN Numbers - take first chunk of text + prior to whitespace, force to lowercase, strip non-ISBN/ISSN characters, + omit results that are empty after stripping. --> + <fieldType name="isn" class="solr.TextField" positionIncrementGap="100"> + <analyzer> + <tokenizer class="solr.PatternTokenizerFactory" pattern="^(\S*)\s*.*$" group="1"/> + <filter class="solr.LowerCaseFilterFactory"/> + <filter class="solr.PatternReplaceFilterFactory" pattern="[^0-9x]" replacement="" replace="all"/> + <filter class="solr.LengthFilterFactory" min="1" max="100" /> + </analyzer> + </fieldType> + <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/> + </types> + <fields> + <!-- Core Fields --> + <field name="id" type="string" indexed="true" stored="true"/> + <field name="fullrecord" type="string" indexed="false" stored="true"/> + <field name="marc_error" type="string" indexed="false" stored="true" multiValued="true"/> + <field name="allfields" type="text" indexed="true" stored="false"/> + <field name="allfields_unstemmed" type="textProper" indexed="true" stored="false"/> + <field name="fulltext" type="text" indexed="true" stored="false"/> + <field name="fulltext_unstemmed" type="textProper" indexed="true" stored="false"/> + <field name="spelling" type="textSpell" indexed="true" stored="true"/> + <field name="spellingShingle" type="textSpellShingle" indexed="true" stored="true" multiValued="true"/> + <!-- Institutional Fields --> + <field name="institution" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="collection" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="building" type="string" indexed="true" stored="true" multiValued="true"/> + <!-- Generic Fields --> + <field name="language" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="format" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="author" type="textProper" indexed="true" stored="true" termVectors="true"/> + <field name="author-letter" type="string" indexed="true" stored="true"/> + <field name="authorStr" type="textFacet" indexed="true" stored="false"/> + <field name="title" type="text" indexed="true" stored="true"/> + <field name="title_sort" type="string" indexed="true" stored="true"/> + <field name="title_sub" type="text" indexed="true" stored="true"/> + <field name="title_short" type="text" indexed="true" stored="true"/> + <field name="title_full" type="text" indexed="true" stored="true"/> + <field name="title_full_unstemmed" type="textProper" indexed="true" stored="true"/> + <field name="title_fullStr" type="string" indexed="true" stored="true"/> + <field name="title_auth" type="text" indexed="true" stored="true"/> + <field name="physical" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="publisher" type="textProper" indexed="true" stored="true" multiValued="true"/> + <field name="publisherStr" type="string" indexed="true" stored="false" multiValued="true"/> + <field name="publishDate" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="publishDateSort" type="string" indexed="true" stored="false"/> + <field name="edition" type="string" indexed="true" stored="true"/> + <field name="description" type="text" indexed="true" stored="true"/> + <field name="contents" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="url" type="string" indexed="false" stored="true" multiValued="true"/> + <field name="thumbnail" type="string" indexed="false" stored="true"/> + <!-- Catalog Specific Fields --> + <field name="lccn" type="string" indexed="true" stored="true"/> + <field name="ctrlnum" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="isbn" type="isn" indexed="true" stored="true" multiValued="true"/> + <field name="issn" type="isn" indexed="true" stored="true" multiValued="true"/> + <field name="oclc_num" type="string" indexed="true" stored="true" multiValued="true" /> + <field name="callnumber" type="string" indexed="true" stored="true"/> + <field name="callnumber-a" type="string" indexed="true" stored="true"/> + <field name="callnumber-first" type="string" indexed="true" stored="true"/> + <field name="callnumber-first-code" type="string" indexed="true" stored="true"/> + <field name="callnumber-subject" type="string" indexed="true" stored="true"/> + <field name="callnumber-subject-code" type="string" indexed="true" stored="true"/> + <field name="callnumber-label" type="string" indexed="true" stored="true"/> + <field name="dewey-hundreds" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="dewey-tens" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="dewey-ones" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="dewey-full" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="dewey-sort" type="string" indexed="true" stored="true" /> + <field name="dewey-raw" type="string" indexed="true" stored="true" /> + <field name="author2" type="textProper" indexed="true" stored="true" multiValued="true"/> + <field name="author2Str" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="author2-role" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="author_fuller" type="textProper" indexed="true" stored="true" /> + <field name="author_additional" type="textProper" indexed="true" stored="true" multiValued="true"/> + <field name="author_additionalStr" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="title_alt" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="title_old" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="title_new" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="dateSpan" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="series" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="series2" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="topic" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="topic_unstemmed" type="textProper" indexed="true" stored="false" multiValued="true"/> + <field name="topic_facet" type="textFacet" indexed="true" stored="true" multiValued="true"/> + <field name="topic_browse" type="string" indexed="true" stored="false" multiValued="true"/> + <field name="author_browse" type="string" indexed="true" stored="false" multiValued="true"/> + <field name="genre" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="genre_facet" type="textFacet" indexed="true" stored="true" multiValued="true"/> + <field name="geographic" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="geographic_facet" type="textFacet" indexed="true" stored="true" multiValued="true"/> + <field name="era" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="era_facet" type="textFacet" indexed="true" stored="true" multiValued="true"/> + <field name="illustrated" type="string" indexed="true" stored="true" multiValued="false"/> + <field name="long_lat" type="textFacet" indexed="true" stored="true" multiValued="false"/> + <!-- Container fields (i.e. for describing journal containing an article) --> + <field name="container_title" type="text" indexed="true" stored="true"/> + <field name="container_volume" type="text" indexed="true" stored="true"/> + <field name="container_issue" type="text" indexed="true" stored="true"/> + <field name="container_start_page" type="text" indexed="true" stored="true"/> + <field name="container_reference" type="text" indexed="true" stored="true"/> + <!-- Used for loading correct record driver --> + <field name="recordtype" type="string" indexed="false" stored="true"/> + <!-- Tracking fields to keep track of oldest and most recent index times --> + <field name="first_indexed" type="date" indexed="true" stored="true"/> + <field name="last_indexed" type="date" indexed="true" stored="true"/> + <!-- Dynamic fields for customization without schema modification --> + <dynamicField name="*_date" type="date" indexed="true" stored="true"/> + <dynamicField name="*_date_mv" type="date" indexed="true" stored="true" multiValued="true"/> + <dynamicField name="*_isn" type="isn" indexed="true" stored="true"/> + <dynamicField name="*_isn_mv" type="isn" indexed="true" stored="true" multiValued="true"/> + <dynamicField name="*_str" type="string" indexed="true" stored="true"/> + <dynamicField name="*_str_mv" type="string" indexed="true" stored="true" multiValued="true"/> + <dynamicField name="*_txt" type="text" indexed="true" stored="true"/> + <dynamicField name="*_txt_mv" type="text" indexed="true" stored="true" multiValued="true"/> + <dynamicField name="*_txtF" type="textFacet" indexed="true" stored="true"/> + <dynamicField name="*_txtF_mv" type="textFacet" indexed="true" stored="true" multiValued="true"/> + <dynamicField name="*_txtP" type="textProper" indexed="true" stored="true"/> + <dynamicField name="*_txtP_mv" type="textProper" indexed="true" stored="true" multiValued="true"/> + </fields> + <uniqueKey>id</uniqueKey> + <defaultSearchField>allfields</defaultSearchField> + <!-- CopyFields for Spelling --> + <!-- ** Basic, single word spelling --> + <copyField source="allfields" dest="spelling"/> + <!-- ** Complex, Shingle spelling --> + <copyField source="author" dest="spellingShingle"/> + <copyField source="title" dest="spellingShingle"/> + <copyField source="contents" dest="spellingShingle"/> + <copyField source="series" dest="spellingShingle"/> + <copyField source="topic" dest="spellingShingle"/> + <!-- CopyFields for Faceting on Text --> + <copyField source="title_full" dest="title_fullStr"/> + <copyField source="title_full" dest="title_full_unstemmed"/> + <copyField source="author" dest="authorStr"/> + <copyField source="author2" dest="author2Str"/> + <copyField source="author_additional" dest="author_additionalStr"/> + <copyField source="publisher" dest="publisherStr"/> + <copyField source="topic" dest="topic_unstemmed"/> + <copyField source="allfields" dest="allfields_unstemmed"/> + <copyField source="fulltext" dest="fulltext_unstemmed"/> + <!-- CopyFields for Alphabetic Browse --> + <copyField source="topic" dest="topic_browse"/> + <copyField source="author" dest="author_browse"/> + <copyField source="author2" dest="author_browse"/> + <!-- Default Boolean Operator --> + <solrQueryParser defaultOperator="AND"/> +</schema> diff --git a/solr/biblio/conf/scripts.conf b/solr/biblio/conf/scripts.conf new file mode 100644 index 0000000000000000000000000000000000000000..f58b262ae0c87b6bcf163a8462e57737f90dbdcc --- /dev/null +++ b/solr/biblio/conf/scripts.conf @@ -0,0 +1,24 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +user= +solr_hostname=localhost +solr_port=8983 +rsyncd_port=18983 +data_dir= +webapp_name=solr +master_host= +master_data_dir= +master_status_dir= diff --git a/solr/biblio/conf/solrconfig.xml b/solr/biblio/conf/solrconfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..ef1d5df2ee1e4fa93898e89c51868f33aba1a1df --- /dev/null +++ b/solr/biblio/conf/solrconfig.xml @@ -0,0 +1,724 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<config> + <!-- Set this to 'false' if you want solr to continue working after it has + encountered an severe configuration error. In a production environment, + you may want solr to keep working even if one handler is mis-configured. + + You may also set this to false using by setting the system property: + -Dsolr.abortOnConfigurationError=false + --> + <abortOnConfigurationError>${solr.abortOnConfigurationError:false}</abortOnConfigurationError> + + <!-- Controls what version of Lucene various components of Solr + adhere to. Generally, you want to use the latest version to + get all bug fixes and improvements. It is highly recommended + that you fully re-index after changing this setting as it can + affect both how text is indexed and queried. + --> + <luceneMatchVersion>LUCENE_35</luceneMatchVersion> + + <!-- Used to specify an alternate directory to hold all index data + other than the default ./data under the Solr home. + If replication is in use, this should match the replication configuration. --> + <dataDir>${solr.solr.home:./solr}/biblio</dataDir> + + + <indexDefaults> + <!-- Values here affect all index writers and act as a default unless overridden. --> + <useCompoundFile>false</useCompoundFile> + + <mergeFactor>10</mergeFactor> + <!-- + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <!--<maxBufferedDocs>1000</maxBufferedDocs>--> + <!-- Tell Lucene when to flush documents to disk. + Giving Lucene more memory for indexing means faster indexing at the cost of more RAM + + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <ramBufferSizeMB>32</ramBufferSizeMB> + <maxMergeDocs>2147483647</maxMergeDocs> + <maxFieldLength>10000</maxFieldLength> + <writeLockTimeout>1000</writeLockTimeout> + <commitLockTimeout>10000</commitLockTimeout> + + <!-- + Expert: Turn on Lucene's auto commit capability. + + TODO: Add recommendations on why you would want to do this. + + NOTE: Despite the name, this value does not have any relation to Solr's autoCommit functionality + + --> + <!--<luceneAutoCommit>false</luceneAutoCommit>--> + <!-- + Expert: + The Merge Policy in Lucene controls how merging is handled by Lucene. The default in 2.3 is the LogByteSizeMergePolicy, previous + versions used LogDocMergePolicy. + + LogByteSizeMergePolicy chooses segments to merge based on their size. The Lucene 2.2 default, LogDocMergePolicy chose when + to merge based on number of documents + + Other implementations of MergePolicy must have a no-argument constructor + --> + <!--<mergePolicy>org.apache.lucene.index.LogByteSizeMergePolicy</mergePolicy>--> + + <!-- + Expert: + The Merge Scheduler in Lucene controls how merges are performed. The ConcurrentMergeScheduler (Lucene 2.3 default) + can perform merges in the background using separate threads. The SerialMergeScheduler (Lucene 2.2 default) does not. + --> + <!--<mergeScheduler>org.apache.lucene.index.ConcurrentMergeScheduler</mergeScheduler>--> + + <!-- + This option specifies which Lucene LockFactory implementation to use. + + single = SingleInstanceLockFactory - suggested for a read-only index + or when there is no possibility of another process trying + to modify the index. + native = NativeFSLockFactory + simple = SimpleFSLockFactory + + (For backwards compatibility with Solr 1.2, 'simple' is the default + if not specified.) + --> + <lockType>single</lockType> + </indexDefaults> + + <mainIndex> + <!-- options specific to the main on-disk lucene index --> + <useCompoundFile>false</useCompoundFile> + <ramBufferSizeMB>32</ramBufferSizeMB> + <mergeFactor>10</mergeFactor> + <!-- Deprecated --> + <!--<maxBufferedDocs>1000</maxBufferedDocs>--> + <maxMergeDocs>2147483647</maxMergeDocs> + <maxFieldLength>10000</maxFieldLength> + + <!-- If true, unlock any held write or commit locks on startup. + This defeats the locking mechanism that allows multiple + processes to safely access a lucene index, and should be + used with care. + This is not needed if lock type is 'none' or 'single' + --> + <unlockOnStartup>false</unlockOnStartup> + + <!-- + Custom deletion policies can specified here. The class must + implement org.apache.lucene.index.IndexDeletionPolicy. + + http://lucene.apache.org/java/2_3_2/api/org/apache/lucene/index/IndexDeletionPolicy.html + + The standard Solr IndexDeletionPolicy implementation supports deleting + index commit points on number of commits, age of commit point and + optimized status. + + The latest commit point should always be preserved regardless + of the criteria. + --> + <deletionPolicy class="solr.SolrDeletionPolicy"> + <!-- Keep only optimized commit points --> + <str name="keepOptimizedOnly">false</str> + <!-- The maximum number of commit points to be kept --> + <str name="maxCommitsToKeep">1</str> + <!-- + Delete all commit points once they have reached the given age. + Supports DateMathParser syntax e.g. + + <str name="maxCommitAge">30MINUTES</str> + <str name="maxCommitAge">1DAY</str> + --> + </deletionPolicy> + + </mainIndex> + + <!-- Enables JMX if and only if an existing MBeanServer is found, use + this if you want to configure JMX through JVM parameters. Remove + this to disable exposing Solr configuration and statistics to JMX. + + If you want to connect to a particular server, specify the agentId + e.g. <jmx agentId="myAgent" /> + + If you want to start a new MBeanServer, specify the serviceUrl + e.g <jmx serviceurl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr" /> + + For more details see http://wiki.apache.org/solr/SolrJmx + --> + <jmx /> + + <!-- the default high-performance update handler --> + <updateHandler class="solr.DirectUpdateHandler2"> + + <!-- A prefix of "solr." for class names is an alias that + causes solr to search appropriate packages, including + org.apache.solr.(search|update|request|core|analysis) + --> + + <!-- Perform a <commit/> automatically under certain conditions: + maxDocs - number of updates since last commit is greater than this + maxTime - oldest uncommited update (in ms) is this long ago + --> + <autoCommit> + <maxDocs>10000</maxDocs> + <maxTime>20000</maxTime> + </autoCommit> + + <!-- The RunExecutableListener executes an external command. + exe - the name of the executable to run + dir - dir to use as the current working directory. default="." + wait - the calling thread waits until the executable returns. default="true" + args - the arguments to pass to the program. default=nothing + env - environment variables to set. default=nothing + --> + <!-- A postCommit event is fired after every commit or optimize command + <listener event="postCommit" class="solr.RunExecutableListener"> + <str name="exe">solr/bin/snapshooter</str> + <str name="dir">.</str> + <bool name="wait">true</bool> + <arr name="args"> <str>arg1</str> <str>arg2</str> </arr> + <arr name="env"> <str>MYVAR=val1</str> </arr> + </listener> + --> + <!-- A postOptimize event is fired only after every optimize command, useful + in conjunction with index distribution to only distribute optimized indicies + <listener event="postOptimize" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + </listener> + --> + + </updateHandler> + + + <query> + <!-- Maximum number of clauses in a boolean query... can affect + range or prefix queries that expand to big boolean + queries. An exception is thrown if exceeded. --> + <maxBooleanClauses>1024</maxBooleanClauses> + + + <!-- Cache used by SolrIndexSearcher for filters (DocSets), + unordered sets of *all* documents that match a query. + When a new searcher is opened, its caches may be prepopulated + or "autowarmed" using data from caches in the old searcher. + autowarmCount is the number of items to prepopulate. For LRUCache, + the autowarmed items will be the most recently accessed items. + Parameters: + class - the SolrCache implementation (currently only LRUCache) + size - the maximum number of entries in the cache + initialSize - the initial capacity (number of entries) of + the cache. (seel java.util.HashMap) + autowarmCount - the number of entries to prepopulate from + and old cache. + --> + <filterCache + class="solr.FastLRUCache" + size="300000" + initialSize="300000" + autowarmCount="50000"/> + + <!-- queryResultCache caches results of searches - ordered lists of + document ids (DocList) based on a query, a sort, and the range + of documents requested. --> + <queryResultCache + class="solr.LRUCache" + size="100000" + initialSize="100000" + autowarmCount="50000"/> + + <!-- documentCache caches Lucene Document objects (the stored fields for each document). + Since Lucene internal document ids are transient, this cache will not be autowarmed. --> + <documentCache + class="solr.LRUCache" + size="50000" + initialSize="50000" + autowarmCount="10000"/> + + <!-- If true, stored fields that are not requested will be loaded lazily. + + This can result in a significant speed improvement if the usual case is to + not load all stored fields, especially if the skipped fields are large compressed + text fields. + --> + <enableLazyFieldLoading>true</enableLazyFieldLoading> + + <!-- Example of a generic cache. These caches may be accessed by name + through SolrIndexSearcher.getCache(),cacheLookup(), and cacheInsert(). + The purpose is to enable easy caching of user/application level data. + The regenerator argument should be specified as an implementation + of solr.search.CacheRegenerator if autowarming is desired. --> + <!-- + <cache name="myUserCache" + class="solr.LRUCache" + size="4096" + initialSize="1024" + autowarmCount="1024" + regenerator="org.mycompany.mypackage.MyRegenerator" + /> + --> + + <!-- An optimization that attempts to use a filter to satisfy a search. + If the requested sort does not include score, then the filterCache + will be checked for a filter matching the query. If found, the filter + will be used as the source of document ids, and then the sort will be + applied to that. + <useFilterForSortedQuery>true</useFilterForSortedQuery> + --> + + <!-- An optimization for use with the queryResultCache. When a search + is requested, a superset of the requested number of document ids + are collected. For example, if a search for a particular query + requests matching documents 10 through 19, and queryWindowSize is 50, + then documents 0 through 49 will be collected and cached. Any further + requests in that range can be satisfied via the cache. --> + <queryResultWindowSize>50</queryResultWindowSize> + + <!-- Maximum number of documents to cache for any entry in the + queryResultCache. --> + <queryResultMaxDocsCached>200</queryResultMaxDocsCached> + + <!-- This entry enables an int hash representation for filters (DocSets) + when the number of items in the set is less than maxSize. For smaller + sets, this representation is more memory efficient, more efficient to + iterate over, and faster to take intersections. --> + <HashDocSet maxSize="3000" loadFactor="0.75"/> + + <!-- a newSearcher event is fired whenever a new searcher is being prepared + and there is a current searcher handling requests (aka registered). --> + <!-- QuerySenderListener takes an array of NamedList and executes a + local query request for each NamedList in sequence. --> + <listener event="newSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> + <str name="q">science art business engineering history</str> + <str name="start">0</str> + <str name="rows">10</str> + </lst> + </arr> + </listener> + + <!-- a firstSearcher event is fired whenever a new searcher is being + prepared but there is no current registered searcher to handle + requests or to gain autowarming data from. --> + <listener event="firstSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> + <str name="q">science art business engineering history</str> + <str name="facet.field">format</str> + <str name="fq">format:book</str> + </lst> + </arr> + </listener> + + <!-- If a search request comes in and there is no current registered searcher, + then immediately register the still warming searcher and use it. If + "false" then all requests will block until the first searcher is done + warming. --> + <useColdSearcher>false</useColdSearcher> + + <!-- Maximum number of searchers that may be warming in the background + concurrently. An error is returned if this limit is exceeded. Recommend + 1-2 for read-only slaves, higher for masters w/o cache warming. --> + <maxWarmingSearchers>2</maxWarmingSearchers> + + </query> + + <!-- + Let the dispatch filter handler /select?qt=XXX + handleSelect=true will use consistent error handling for /select and /update + handleSelect=false will use solr1.1 style error formatting + --> + <requestDispatcher handleSelect="true" > + <!--Make sure your system has some authentication before enabling remote streaming! --> + <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000" /> + + <!-- Set HTTP caching related parameters (for proxy caches and clients). + + To get the behaviour of Solr 1.2 (ie: no caching related headers) + use the never304="true" option and do not specify a value for + <cacheControl> + --> + <!-- <httpCaching never304="true"> --> + <httpCaching lastModifiedFrom="openTime" + etagSeed="Solr"> + <!-- lastModFrom="openTime" is the default, the Last-Modified value + (and validation against If-Modified-Since requests) will all be + relative to when the current Searcher was opened. + You can change it to lastModFrom="dirLastMod" if you want the + value to exactly corrispond to when the physical index was last + modified. + + etagSeed="..." is an option you can change to force the ETag + header (and validation against If-None-Match requests) to be + differnet even if the index has not changed (ie: when making + significant changes to your config file) + + lastModifiedFrom and etagSeed are both ignored if you use the + never304="true" option. + --> + <!-- If you include a <cacheControl> directive, it will be used to + generate a Cache-Control header, as well as an Expires header + if the value contains "max-age=" + + By default, no Cache-Control header is generated. + + You can use the <cacheControl> option even if you have set + never304="true" + --> + <!-- <cacheControl>max-age=30, public</cacheControl> --> + </httpCaching> + </requestDispatcher> + + + <!-- requestHandler plugins... incoming queries will be dispatched to the + correct handler based on the path or the qt (query type) param. + Names starting with a '/' are accessed with the a path equal to the + registered name. Names without a leading '/' are accessed with: + http://host/app/select?qt=name + If no qt is defined, the requestHandler that declares default="true" + will be used. + --> + <requestHandler name="standard" class="solr.StandardRequestHandler" default="true"> + <!-- default values for query parameters --> + <lst name="defaults"> + <str name="echoParams">explicit</str> + <!-- + <int name="rows">10</int> + <str name="fl">*</str> + <str name="version">2.1</str> + --> + <str name="spellcheck.extendedResults">true</str> + <str name="spellcheck.onlyMorePopular">true</str> + <str name="spellcheck.count">20</str> + </lst> + <arr name="last-components"> + <str>spellcheck</str> + </arr> + </requestHandler> + + <!-- the following handler will be used for eligible dismax searches defined + in web/conf/searchspecs.yaml. Searches relying on advanced features + incompatible with dismax will be sent to the standard handler instead. + You can use this handler definition to set global Dismax settings + (i.e. mm / bf). If you need different settings for different types of + searches (i.e. Title vs. Author), you can also configure individual + settings in the searchspecs.yaml file. + --> + <requestHandler name="dismax" class="solr.SearchHandler"> + <lst name="defaults"> + <str name="defType">dismax</str> + <str name="echoParams">explicit</str> + <str name="spellcheck.extendedResults">true</str> + <str name="spellcheck.onlyMorePopular">true</str> + <str name="spellcheck.count">20</str> + </lst> + <arr name="last-components"> + <str>spellcheck</str> + </arr> + </requestHandler> + + <requestHandler name="morelikethis" class="solr.MoreLikeThisHandler"> + <lst name="defaults"> + <str name="mlt.fl">title,title_short,callnumber-label,topic,language,author,publishDate</str> + <str name="mlt.qf"> + title^75 + title_short^100 + callnumber-label^400 + topic^300 + language^30 + author^75 + publishDate + </str> + <int name="mlt.mintf">1</int> + <int name="mlt.mindf">1</int> + <str name="mlt.boost">true</str> + <int name="mlt.count">5</int> + <int name="rows">5</int> + </lst> + </requestHandler> + + <requestHandler name="/browse" class="au.gov.nla.solr.handler.BrowseRequestHandler"> + <str name="authIndexPath">${solr.solr.home:./solr}/authority/index</str> + <str name="bibIndexPath">${solr.solr.home:./solr}/biblio/index</str> + + <!-- These definitions should match the field names used in the authority index. --> + <str name="preferredHeadingField">heading</str> + <str name="useInsteadHeadingField">use_for</str> + <str name="seeAlsoHeadingField">see_also</str> + <str name="scopeNoteField">scope_note</str> + + + <str name="sources">topic,author,title,lcc,dewey</str> + + <lst name="topic"> + <str name="DBpath">${solr.solr.home:./solr}/alphabetical_browse/topic_browse.db</str> + <str name="field">topic_browse</str> + </lst> + + <lst name="author"> + <str name="DBpath">${solr.solr.home:./solr}/alphabetical_browse/author_browse.db</str> + <str name="field">author_browse</str> + </lst> + + <lst name="title"> + <str name="DBpath">${solr.solr.home:./solr}/alphabetical_browse/title_browse.db</str> + <str name="field">title_fullStr</str> + </lst> + + <lst name="lcc"> + <str name="DBpath">${solr.solr.home:./solr}/alphabetical_browse/lcc_browse.db</str> + <str name="field">callnumber-a</str> + </lst> + + <lst name="dewey"> + <str name="DBpath">${solr.solr.home:./solr}/alphabetical_browse/dewey_browse.db</str> + <str name="field">dewey-raw</str> + <str name="ignoreDiacritics">yes</str> + </lst> + + </requestHandler> + + <searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent"> + <lst name="spellchecker"> + <str name="name">default</str> + <str name="field">spellingShingle</str> + <str name="accuracy">0.75</str> + <str name="spellcheckIndexDir">./spellShingle</str> + <str name="queryAnalyzerFieldType">textSpellShingle</str> + <str name="buildOnOptimize">true</str> + </lst> + <lst name="spellchecker"> + <str name="name">basicSpell</str> + <str name="field">spelling</str> + <str name="accuracy">0.75</str> + <str name="spellcheckIndexDir">./spellchecker</str> + <str name="queryAnalyzerFieldType">textSpell</str> + <str name="buildOnOptimize">true</str> + </lst> + </searchComponent> + <queryConverter name="queryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/> + + <!-- Search component for extracting terms (useful for sitemap generation) --> + <searchComponent name="term" class="org.apache.solr.handler.component.TermsComponent"> + </searchComponent> + + <!-- + + Search components are registered to SolrCore and used by Search Handlers + + By default, the following components are avaliable: + + <searchComponent name="query" class="org.apache.solr.handler.component.QueryComponent" /> + <searchComponent name="facet" class="org.apache.solr.handler.component.FacetComponent" /> + <searchComponent name="mlt" class="org.apache.solr.handler.component.MoreLikeThisComponent" /> + <searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" /> + <searchComponent name="stats" class="org.apache.solr.handler.component.StatsComponent" /> + <searchComponent name="debug" class="org.apache.solr.handler.component.DebugComponent" /> + + If you register a searchComponent to one of the standard names, that will be used instead. + + --> + + <requestHandler name="/search" class="org.apache.solr.handler.component.SearchHandler"> + <lst name="defaults"> + <str name="echoParams">explicit</str> + </lst> + <!-- + By default, this will register the following components: + + <arr name="components"> + <str>query</str> + <str>facet</str> + <str>mlt</str> + <str>highlight</str> + <str>debug</str> + </arr> + + To insert handlers before or after the 'standard' components, use: + + <arr name="first-components"> + <str>first</str> + </arr> + + <arr name="last-components"> + <str>last</str> + </arr> + + --> + <arr name="last-components"> + <str>spellcheck</str> + <str>elevator</str> + </arr> + </requestHandler> + + <!-- Request handler to extract terms (useful for sitemap generation) --> + <requestHandler name="/term" class="org.apache.solr.handler.component.SearchHandler"> + <arr name="components"> + <str>term</str> + </arr> + </requestHandler> + + <searchComponent name="elevator" class="org.apache.solr.handler.component.QueryElevationComponent" > + <!-- pick a fieldType to analyze queries --> + <str name="queryFieldType">string</str> + <str name="config-file">elevate.xml</str> + </searchComponent> + + <requestHandler name="/elevate" class="org.apache.solr.handler.component.SearchHandler" startup="lazy"> + <lst name="defaults"> + <str name="echoParams">explicit</str> + </lst> + <arr name="last-components"> + <str>elevator</str> + </arr> + </requestHandler> + + + + <!-- Update request handler. + + Note: Since solr1.1 requestHandlers requires a valid content type header if posted in + the body. For example, curl now requires: -H 'Content-type:text/xml; charset=utf-8' + The response format differs from solr1.1 formatting and returns a standard error code. + + To enable solr1.1 behavior, remove the /update handler or change its path + --> + <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> + + <!-- + Analysis request handler. Since Solr 1.3. Use to returnhow a document is analyzed. Useful + for debugging and as a token server for other types of applications + --> + <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" /> + + + <!-- CSV update handler, loaded on demand --> + <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" /> + + + <!-- + Admin Handlers - This will register all the standard admin RequestHandlers. Adding + this single handler is equivolent to registering: + + <requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" /> + <requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" /> + <requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" /> + <requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" /> + <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" /> + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + + If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using: + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + <lst name="invariants"> + <str name="hidden">synonyms.txt</str> + <str name="hidden">anotherfile.txt</str> + </lst> + </requestHandler> + --> + <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> + + <!-- ping/healthcheck --> + <requestHandler name="/admin/ping" class="PingRequestHandler"> + <lst name="defaults"> + <str name="qt">standard</str> + <str name="q">solrpingquery</str> + <str name="echoParams">all</str> + </lst> + </requestHandler> + + <!-- Echo the request contents back to the client --> + <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > + <lst name="defaults"> + <str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' --> + <str name="echoHandler">true</str> + </lst> + </requestHandler> + + <searchComponent class="solr.HighlightComponent" name="highlight"> + <highlighting> + <!-- Configure the standard fragmenter --> + <!-- This could most likely be commented out in the "default" case --> + <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true"> + <lst name="defaults"> + <int name="hl.fragsize">100</int> + </lst> + </fragmenter> + + <!-- A regular-expression-based fragmenter (f.i., for sentence extraction) --> + <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> + <lst name="defaults"> + <!-- slightly smaller fragsizes work better because of slop --> + <int name="hl.fragsize">70</int> + <!-- allow 50% slop on fragment sizes --> + <float name="hl.regex.slop">0.5</float> + <!-- a basic sentence pattern --> + <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str> + </lst> + </fragmenter> + + <!-- Configure the standard formatter --> + <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true"> + <lst name="defaults"> + <str name="hl.simple.pre"><![CDATA[<em>]]></str> + <str name="hl.simple.post"><![CDATA[</em>]]></str> + </lst> + </formatter> + </highlighting> + </searchComponent> + + <!-- queryResponseWriter plugins... query responses will be written using the + writer specified by the 'wt' request parameter matching the name of a registered + writer. + The "default" writer is the default and will be used if 'wt' is not specified + in the request. XMLResponseWriter will be used if nothing is specified here. + The json, python, and ruby writers are also available by default. + + <queryResponseWriter name="xml" class="org.apache.solr.request.XMLResponseWriter" default="true"/> + <queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/> + <queryResponseWriter name="python" class="org.apache.solr.request.PythonResponseWriter"/> + <queryResponseWriter name="ruby" class="org.apache.solr.request.RubyResponseWriter"/> + <queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/> + <queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/> + + <queryResponseWriter name="custom" class="com.example.MyResponseWriter"/> + --> + + <!-- XSLT response writer transforms the XML output by any xslt file found + in Solr's conf/xslt directory. Changes to xslt files are checked for + every xsltCacheLifetimeSeconds. + --> + <queryResponseWriter name="xslt" class="org.apache.solr.response.XSLTResponseWriter"> + <int name="xsltCacheLifetimeSeconds">5</int> + </queryResponseWriter> + + <!-- config for the admin interface --> + <admin> + <defaultQuery>shakespeare</defaultQuery> + + <!-- configure a healthcheck file for servers behind a loadbalancer + <healthcheck type="file">server-enabled</healthcheck> + --> + </admin> + +</config> diff --git a/solr/biblio/conf/stopwords.txt b/solr/biblio/conf/stopwords.txt new file mode 100644 index 0000000000000000000000000000000000000000..40a5a5fa2f1bfd48e137dbbe4a495e3550944be0 --- /dev/null +++ b/solr/biblio/conf/stopwords.txt @@ -0,0 +1,34 @@ +an +and +are +as +at +be +but +by +for +if +in +into +is +it +no +not +of +on +or +s +such +t +that +the +their +then +there +these +they +this +to +was +will +with \ No newline at end of file diff --git a/solr/biblio/conf/synonyms.txt b/solr/biblio/conf/synonyms.txt new file mode 100644 index 0000000000000000000000000000000000000000..29b05690f1af1d6927a65275c757d1a2af3710c8 --- /dev/null +++ b/solr/biblio/conf/synonyms.txt @@ -0,0 +1,5 @@ +I,i,1,one,One +II,ii,2,two,Two +III,iii,3,three,Three +IV,iv,4,four,Four +V,v,5,five,Five \ No newline at end of file diff --git a/solr/biblio/conf/xslt/example.xsl b/solr/biblio/conf/xslt/example.xsl new file mode 100644 index 0000000000000000000000000000000000000000..6832a1d4cb3093d2de50cdc38de09d11431d177f --- /dev/null +++ b/solr/biblio/conf/xslt/example.xsl @@ -0,0 +1,132 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<!-- + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + --> + +<!-- + Simple transform of Solr query results to HTML + --> +<xsl:stylesheet version='1.0' + xmlns:xsl='http://www.w3.org/1999/XSL/Transform' +> + + <xsl:output media-type="text/html; charset=UTF-8" encoding="UTF-8"/> + + <xsl:variable name="title" select="concat('Solr search results (',response/result/@numFound,' documents)')"/> + + <xsl:template match='/'> + <html> + <head> + <title><xsl:value-of select="$title"/></title> + <xsl:call-template name="css"/> + </head> + <body> + <h1><xsl:value-of select="$title"/></h1> + <div class="note"> + This has been formatted by the sample "example.xsl" transform - + use your own XSLT to get a nicer page + </div> + <xsl:apply-templates select="response/result/doc"/> + </body> + </html> + </xsl:template> + + <xsl:template match="doc"> + <xsl:variable name="pos" select="position()"/> + <div class="doc"> + <table width="100%"> + <xsl:apply-templates> + <xsl:with-param name="pos"><xsl:value-of select="$pos"/></xsl:with-param> + </xsl:apply-templates> + </table> + </div> + </xsl:template> + + <xsl:template match="doc/*[@name='score']" priority="100"> + <xsl:param name="pos"></xsl:param> + <tr> + <td class="name"> + <xsl:value-of select="@name"/> + </td> + <td class="value"> + <xsl:value-of select="."/> + + <xsl:if test="boolean(//lst[@name='explain'])"> + <xsl:element name="a"> + <!-- can't allow whitespace here --> + <xsl:attribute name="href">javascript:toggle("<xsl:value-of select="concat('exp-',$pos)" />");</xsl:attribute>?</xsl:element> + <br/> + <xsl:element name="div"> + <xsl:attribute name="class">exp</xsl:attribute> + <xsl:attribute name="id"> + <xsl:value-of select="concat('exp-',$pos)" /> + </xsl:attribute> + <xsl:value-of select="//lst[@name='explain']/str[position()=$pos]"/> + </xsl:element> + </xsl:if> + </td> + </tr> + </xsl:template> + + <xsl:template match="doc/arr" priority="100"> + <tr> + <td class="name"> + <xsl:value-of select="@name"/> + </td> + <td class="value"> + <ul> + <xsl:for-each select="*"> + <li><xsl:value-of select="."/></li> + </xsl:for-each> + </ul> + </td> + </tr> + </xsl:template> + + + <xsl:template match="doc/*"> + <tr> + <td class="name"> + <xsl:value-of select="@name"/> + </td> + <td class="value"> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:template> + + <xsl:template match="*"/> + + <xsl:template name="css"> + <script> + function toggle(id) { + var obj = document.getElementById(id); + obj.style.display = (obj.style.display != 'block') ? 'block' : 'none'; + } + </script> + <style type="text/css"> + body { font-family: "Lucida Grande", sans-serif } + td.name { font-style: italic; font-size:80%; } + td { vertical-align: top; } + ul { margin: 0px; margin-left: 1em; padding: 0px; } + .note { font-size:80%; } + .doc { margin-top: 1em; border-top: solid grey 1px; } + .exp { display: none; font-family: monospace; white-space: pre; } + </style> + </xsl:template> + +</xsl:stylesheet> diff --git a/solr/biblio/conf/xslt/example_atom.xsl b/solr/biblio/conf/xslt/example_atom.xsl new file mode 100644 index 0000000000000000000000000000000000000000..e71797219e30830a287e3cd737ee9f83b35748d7 --- /dev/null +++ b/solr/biblio/conf/xslt/example_atom.xsl @@ -0,0 +1,63 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<!-- + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + --> + +<!-- + Simple transform of Solr query results to Atom + --> + +<xsl:stylesheet version='1.0' + xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> + + <xsl:output method="xml" encoding="utf-8" /> + + <xsl:template match='/'> + <xsl:variable name="query" select="response/lst[@name='responseHeader']/lst[@name='params']/str[@name='q']"/> + <feed xmlns="http://www.w3.org/2005/Atom"> + <title>Example Solr Atom 1.0 Feed</title> + <subtitle> + This has been formatted by the sample "example_atom.xsl" transform - + use your own XSLT to get a nicer Atom feed. + </subtitle> + <author> + <name>Apache Solr</name> + <email>solr-user@lucene.apache.org</email> + </author> + <link rel="self" type="application/atom+xml" + href="http://localhost:8983/solr/q={$query}&wt=xslt&tr=atom.xsl"/> + <updated> + <xsl:value-of select="response/result/doc[position()=1]/date[@name='timestamp']"/> + </updated> + <id>tag:localhost,2007:example</id> + <xsl:apply-templates select="response/result/doc"/> + </feed> + </xsl:template> + + <!-- search results xslt --> + <xsl:template match="doc"> + <xsl:variable name="id" select="str[@name='id']"/> + <entry> + <title><xsl:value-of select="str[@name='name']"/></title> + <link href="http://localhost:8983/solr/select?q={$id}"/> + <id>tag:localhost,2007:<xsl:value-of select="$id"/></id> + <summary><xsl:value-of select="arr[@name='features']"/></summary> + <updated><xsl:value-of select="date[@name='timestamp']"/></updated> + </entry> + </xsl:template> + +</xsl:stylesheet> diff --git a/solr/biblio/conf/xslt/example_rss.xsl b/solr/biblio/conf/xslt/example_rss.xsl new file mode 100644 index 0000000000000000000000000000000000000000..57bb2799b5d953235ea23435b9e32ec9f4ce6645 --- /dev/null +++ b/solr/biblio/conf/xslt/example_rss.xsl @@ -0,0 +1,62 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<!-- + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + --> + +<!-- + Simple transform of Solr query results to RSS + --> + +<xsl:stylesheet version='1.0' + xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> + + <xsl:output method="xml" encoding="utf-8" /> + <xsl:template match='/'> + <rss version="2.0"> + <channel> + <title>Example Solr RSS 2.0 Feed</title> + <link>http://localhost:8983/solr</link> + <description> + This has been formatted by the sample "example_rss.xsl" transform - + use your own XSLT to get a nicer RSS feed. + </description> + <language>en-us</language> + <docs>http://localhost:8983/solr</docs> + <xsl:apply-templates select="response/result/doc"/> + </channel> + </rss> + </xsl:template> + + <!-- search results xslt --> + <xsl:template match="doc"> + <xsl:variable name="id" select="str[@name='id']"/> + <xsl:variable name="timestamp" select="date[@name='timestamp']"/> + <item> + <title><xsl:value-of select="str[@name='name']"/></title> + <link> + http://localhost:8983/solr/select?q=id:<xsl:value-of select="$id"/> + </link> + <description> + <xsl:value-of select="arr[@name='features']"/> + </description> + <pubDate><xsl:value-of select="$timestamp"/></pubDate> + <guid> + http://localhost:8983/solr/select?q=id:<xsl:value-of select="$id"/> + </guid> + </item> + </xsl:template> +</xsl:stylesheet> diff --git a/solr/bin/abc b/solr/bin/abc new file mode 100644 index 0000000000000000000000000000000000000000..5d48415cdd110fb8c84413010062eef8bad8c1b2 --- /dev/null +++ b/solr/bin/abc @@ -0,0 +1,176 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to make an Atomic Backup after Commit of +# a Solr Lucene collection. + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} +curl_url="" + +unset solr_hostname solr_port data_dir webapp_name user verbose debug solr_url +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-h hostname] [-p port] [-d dir] [-w webappname] [-u username] [-U url] [-v] [-V] + -h specify Solr hostname (defaults to localhost) + -p specify Solr port number + -w specify name of Solr webapp (defaults to solr) + -u specify user to sudo to before running script + -U specify full update url (overrides -h,-p,-w parameters) + -d specify directory holding index data + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts h:p:d:w:u:U:vV OPTION +do + case $OPTION in + h) + solr_hostname="$OPTARG" + ;; + p) + solr_port="$OPTARG" + ;; + d) + data_dir="$OPTARG" + ;; + w) + webapp_name="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + U) + solr_url="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +if [[ -n ${solr_url} ]] +then + curl_url=${solr_url} +else + if [[ -z ${solr_port} ]] + then + echo "Solr port number missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi + + # use default hostname if not specified + if [[ -z ${solr_hostname} ]] + then + solr_hostname=localhost + fi + + # use default webapp name if not specified + if [[ -z ${webapp_name} ]] + then + webapp_name=solr + fi + curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update +fi + +fixUser "$@" + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +logMessage sending commit to Solr server at ${curl_url} +rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<commit/>"` +if [[ $? != 0 ]] +then + logMessage failed to connect to Solr server at ${curl_url} + logMessage commit failed + logExit failed 1 +fi + +# check status of commit request +echo $rs | grep '<result.*status="0"' > /dev/null 2>&1 +if [[ $? != 0 ]] +then + logMessage commit request to Solr at ${curl_url} failed: + logMessage $rs + logExit failed 2 +fi + +# successful commit creates a snapshot file synchronously +lastsnap=`ls -drt1 ${data_dir}/snapshot.* 2> /dev/null | tail -1 ` + +if [[ $lastsnap == "" ]] +then + logMessage commit did not create snapshot at ${curl_url}, backup failed: + logExit failed 3 +fi + +name=backup.${lastsnap##*snapshot.} +temp=temp-${name} + +if [[ -d ${data_dir}/${name} ]] +then + logMessage backup directory ${data_dir}/${name} already exists + logExit aborted 1 +fi + +if [[ -d ${data_dir}/${temp} ]] +then + logMessage backingup of ${data_dir}/${name} in progress + logExit aborted 1 +fi +logMessage making backup ${data_dir}/${name} + +# clean up after INT/TERM +trap 'echo cleaning up, please wait ...;/bin/rm -rf ${data_dir}/${name} ${data_dir}/${temp};logExit aborted 13' INT TERM + +# make a backup using hard links into temporary location +# then move it into place atomically +cp -lr ${lastsnap} ${data_dir}/${temp} +mv ${data_dir}/${temp} ${data_dir}/${name} + +logExit ended 0 diff --git a/solr/bin/abo b/solr/bin/abo new file mode 100644 index 0000000000000000000000000000000000000000..dc0c1678a69f1fe9a6065164e49c6a56ba6c6fc0 --- /dev/null +++ b/solr/bin/abo @@ -0,0 +1,176 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to make an Atomic Backup after Optimize of +# a Solr Lucene collection. + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} +curl_url="" + +unset solr_hostname solr_port data_dir webapp_name user verbose debug solr_url +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-h hostname] [-p port] [-d dir] [-w webapp_name] [-u username] [-U url] [-v] [-V] + -h specify Solr hostname (defaults to localhost) + -p specify Solr port number + -w specify name of Solr webapp (defaults to solr) + -u specify user to sudo to before running script + -U specify full update url (overrides -h,-p,-w parameters) + -d specify directory holding index data (defaults to data) + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts h:p:d:w:u:U:vV OPTION +do + case $OPTION in + h) + solr_hostname="$OPTARG" + ;; + p) + solr_port="$OPTARG" + ;; + d) + data_dir="$OPTARG" + ;; + w) + webapp_name="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + U) + solr_url="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +if [[ -n ${solr_url} ]] +then + curl_url=${solr_url} +else + if [[ -z ${solr_port} ]] + then + echo "Solr port number missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi + + # use default hostname if not specified + if [[ -z ${solr_hostname} ]] + then + solr_hostname=localhost + fi + + # use default webapp name if not specified + if [[ -z ${webapp_name} ]] + then + webapp_name=solr + fi + curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update +fi + +fixUser "$@" + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +logMessage sending optimize to Solr server at ${curl_url} +rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<optimize/>"` +if [[ $? != 0 ]] +then + logMessage failed to connect to Solr server at ${curl_url} + logMessage optimize failed + logExit failed 1 +fi + +# check status of optimize request +echo $rs | grep '<result.*status="0"' > /dev/null 2>&1 +if [[ $? != 0 ]] +then + logMessage optimize request to Solr at ${curl_url} failed: + logMessage $rs + logExit failed 2 +fi + +# successful optimize creates a snapshot file synchronously +lastsnap=`ls -drt1 ${data_dir}/snapshot.* | tail -1 ` + +if [[ $lastsnap == "" ]] +then + logMessage commit did not create snapshot at ${curl_url}, backup failed: + logExit failed 3 +fi + +name=backup.${lastsnap##*snapshot.} +temp=temp-${name} + +if [[ -d ${data_dir}/${name} ]] +then + logMessage backup directory ${data_dir}/${name} already exists + logExit aborted 1 +fi + +if [[ -d ${data_dir}/${temp} ]] +then + logMessage backingup of ${data_dir}/${name} in progress + logExit aborted 1 +fi +logMessage making backup ${data_dir}/${name} + +# clean up after INT/TERM +trap 'echo cleaning up, please wait ...;/bin/rm -rf ${data_dir}/${name} ${data_dir}/${temp};logExit aborted 13' INT TERM + +# make a backup using hard links into temporary location +# then move it into place atomically +cp -lr ${lastsnap} ${data_dir}/${temp} +mv ${data_dir}/${temp} ${data_dir}/${name} + +logExit ended 0 diff --git a/solr/bin/backup b/solr/bin/backup new file mode 100644 index 0000000000000000000000000000000000000000..1fc3b185d9ecc3510fc6520cd61b1c92b9881a29 --- /dev/null +++ b/solr/bin/backup @@ -0,0 +1,108 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to make a backup of a Solr Lucene collection. + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset data_dir user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-d dir] [-u username] [-v] + -d specify directory holding index data + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts d:u:vV OPTION +do + case $OPTION in + d) + data_dir="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +fixUser "$@" + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +name=backup.`date +"%Y%m%d%H%M%S"` +temp=temp-${name} + +if [[ -d ${data_dir}/${name} ]] +then + logMessage backup directory ${data_dir}/${name} already exists + logExit aborted 1 +fi + +if [[ -d ${data_dir}/${temp} ]] +then + logMessage backingup of ${data_dir}/${name} in progress + logExit aborted 1 +fi + +# clean up after INT/TERM +trap 'echo cleaning up, please wait ...;/bin/rm -rf ${data_dir}/${name} ${data_dir}/${temp};logExit aborted 13' INT TERM + +logMessage making backup ${data_dir}/${name} + +# make a backup using hard links into temporary location +# then move it into place atomically +cp -lr ${data_dir}/index ${data_dir}/${temp} +mv ${data_dir}/${temp} ${data_dir}/${name} + +logExit ended 0 + diff --git a/solr/bin/backupcleaner b/solr/bin/backupcleaner new file mode 100644 index 0000000000000000000000000000000000000000..6c2ac7ca961a28cf152efcd32b76eaaf24e7ae55 --- /dev/null +++ b/solr/bin/backupcleaner @@ -0,0 +1,142 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to clean up backups of a Solr Lucene collection. + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset days num data_dir user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog -D <days> | -N <num> [-d dir] [-u username] [-v] + -D <days> cleanup backups more than <days> days old + -N <num> keep the most recent <num> number of backups and + cleanup up the remaining ones that are not being pulled + -d specify directory holding index data + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts D:N:d:u:vV OPTION +do + case $OPTION in + D) + days="$OPTARG" + ;; + N) + num="$OPTARG" + ;; + d) + data_dir="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -z ${days} && -z ${num} ]] +then + echo "$USAGE" + exit 1 +fi + +fixUser "$@" + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +function remove +{ + logMessage removing backup $1 + /bin/rm -rf $1 +} + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +# trap control-c +trap 'echo "caught INT/TERM, exiting now but partial cleanup may have already occured";logExit aborted 13' INT TERM + +if [[ -n ${days} ]] +then + #is maxdepth supported? + find ${data_dir} -maxdepth 0 -name foobar >/dev/null 2>&1 + if [ $? = 0 ]; then + maxdepth="-maxdepth 1" + else + unset maxdepth + fi + + logMessage cleaning up backups more than ${days} days old + for i in `find ${data_dir} ${maxdepth} -name 'backup.*' -mtime +${days} -print` + do + remove $i + done +elif [[ -n ${num} ]] +then + logMessage cleaning up all backups except for the most recent ${num} ones + unset backups count + backups=`ls -cd ${data_dir}/backup.* 2>/dev/null` + if [[ $? == 0 ]] + then + count=`echo $backups|wc -w` + startpos=`expr $num + 1` + if [[ $count -gt $num ]] + then + for i in `echo $backups|cut -f${startpos}- -d" "` + do + remove $i + done + fi + fi +fi + +logExit ended 0 + + diff --git a/solr/bin/commit b/solr/bin/commit new file mode 100644 index 0000000000000000000000000000000000000000..872e1cd260f61d315f3d74fd8eaa668328f59a72 --- /dev/null +++ b/solr/bin/commit @@ -0,0 +1,128 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to force a commit of all changes since last commit +# for a Solr server + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} +curl_url="" + +unset solr_hostname solr_port webapp_name user verbose debug solr_url +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-h hostname] [-p port] [-w webapp_name] [-u username] [-U url] [-v] [-V] + -h specify Solr hostname (defaults to localhost) + -p specify Solr port number + -w specify name of Solr webapp (defaults to solr) + -u specify user to sudo to before running script + -U specify full update url (overrides -h,-p,-w parameters) + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts h:p:w:u:U:vV OPTION +do + case $OPTION in + h) + solr_hostname="$OPTARG" + ;; + p) + solr_port="$OPTARG" + ;; + w) + webapp_name="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + U) + solr_url="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -n ${solr_url} ]] +then + curl_url=${solr_url} +else + if [[ -z ${solr_port} ]] + then + echo "Solr port number missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi + + # use default hostname if not specified + if [[ -z ${solr_hostname} ]] + then + solr_hostname=localhost + fi + + # use default webapp name if not specified + if [[ -z ${webapp_name} ]] + then + webapp_name=solr + fi + curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update +fi + +fixUser "$@" + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<commit/>"` +if [[ $? != 0 ]] +then + logMessage failed to connect to Solr server at ${curl_url} + logMessage commit failed + logExit failed 1 +fi + +# check status of commit request +echo $rs | grep '<result.*status="0"' > /dev/null 2>&1 +if [[ $? != 0 ]] +then + logMessage commit request to Solr at ${curl_url} failed: + logMessage $rs + logExit failed 2 +fi + +logExit ended 0 diff --git a/solr/bin/optimize b/solr/bin/optimize new file mode 100644 index 0000000000000000000000000000000000000000..446996e5d0d9bdca721a4b7dbf7458696ad07619 --- /dev/null +++ b/solr/bin/optimize @@ -0,0 +1,129 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to force a optimized commit of all changes since last commit +# for a Solr server + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} +curl_url="" + +unset solr_hostname solr_port webapp_name user verbose debug solr_url +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-h hostname] [-p port] [-u username] [-U url] [-v] [-V] + -h specify Solr hostname (defaults to localhost) + -p specify Solr port number + -w specify name of Solr webapp (defaults to solr) + -u specify user to sudo to before running script + -U specify full update url (overrides -h,-p,-w parameters) + -v increase verbosity + -V output debugging info +" + +# parse args +originalargs="$@" +while getopts h:p:w:u:U:vV OPTION +do + case $OPTION in + h) + solr_hostname="$OPTARG" + ;; + p) + solr_port="$OPTARG" + ;; + w) + webapp_name="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + U) + solr_url="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -n ${solr_url} ]] +then + curl_url=${solr_url} +else + if [[ -z ${solr_port} ]] + then + echo "Solr port number missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi + + # use default hostname if not specified + if [[ -z ${solr_hostname} ]] + then + solr_hostname=localhost + fi + + # use default webapp name if not specified + if [[ -z ${webapp_name} ]] + then + webapp_name=solr + fi + curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update +fi + +fixUser "$@" + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<optimize/>"` +if [[ $? != 0 ]] +then + logMessage failed to connect to Solr server at ${curl_url} + logMessage optimize failed + logExit failed 1 +fi + +# check status of optimize request +rc=`echo $rs|cut -f2 -d'"'` +if [[ $? != 0 ]] +then + logMessage optimize request to Solr at ${curl_url} failed: + logMessage $rs + logExit failed 2 +fi + +logExit ended 0 diff --git a/solr/bin/readercycle b/solr/bin/readercycle new file mode 100644 index 0000000000000000000000000000000000000000..6a99d630de076a4062c361a85cc3e13a5a21f17d --- /dev/null +++ b/solr/bin/readercycle @@ -0,0 +1,129 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to force all old readers closed and a new reader to be opened +# for a Solr server + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} +curl_url="" + +unset solr_hostname solr_port webapp_name user verbose debug solr_url +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-p hostname] [-p port] [-w webapp_name] [-u username] [-U url] [-v] [-V] + -h specify Solr hostname (defaults to localhost) + -p specify Solr port number + -w specify name of Solr webapp (defaults to solr) + -u specify user to sudo to before running script + -U specify full update url (overrides -h,-p,-w parameters) + -v increase verbosity + -V output debugging info +" + +# parse args +originalargs="$@" +while getopts h:p:w:u:U:vV OPTION +do + case $OPTION in + h) + solr_hostname="$OPTARG" + ;; + p) + solr_port="$OPTARG" + ;; + w) + webapp_name="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + U) + solr_url="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -n ${solr_url} ]] +then + curl_url=${solr_url} +else + if [[ -z ${solr_port} ]] + then + echo "Solr port number missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi + + # use default hostname if not specified + if [[ -z ${solr_hostname} ]] + then + solr_hostname=localhost + fi + + # use default webapp name if not specified + if [[ -z ${webapp_name} ]] + then + webapp_name=solr + fi + curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update +fi + +fixUser "$@" + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +rs=`curl ${curl_url} -s -H 'Content-type:text/xml; charset=utf-8' -d "<commit/>"` +if [[ $? != 0 ]] +then + logMessage failed to connect to Solr server at ${curl_url} + logMessage reader cycle failed + logExit failed 1 +fi + +# check status of commit request +echo $rs | grep '<response.*status="0"' > /dev/null 2>&1 +if [[ $? != 0 ]] +then + logMessage reader cycle request to Solr at ${curl_url} failed: + logMessage $rs + logExit failed 2 +fi + +logExit ended 0 diff --git a/solr/bin/rsyncd-disable b/solr/bin/rsyncd-disable new file mode 100644 index 0000000000000000000000000000000000000000..4affdac8552f53222a32ffa99720cb176736702d --- /dev/null +++ b/solr/bin/rsyncd-disable @@ -0,0 +1,77 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to disable rsyncd + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/rsyncd.log + +# define usage string +USAGE="\ +usage: $prog [-u username] [-v] + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts u:vV OPTION +do + case $OPTION in + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +start=`date +"%s"` + +logMessage disabled by $oldwhoami +logMessage command: $0 $@ +name=${solr_root}/logs/rsyncd-enabled + +if [[ -f ${name} ]] +then + rm -f ${name} +else + logMessage rsyncd not currently enabled + logExit exited 1 +fi + +logExit ended 0 diff --git a/solr/bin/rsyncd-enable b/solr/bin/rsyncd-enable new file mode 100644 index 0000000000000000000000000000000000000000..da2a97a59aa4141430fc8cc910b92b9f79465bc8 --- /dev/null +++ b/solr/bin/rsyncd-enable @@ -0,0 +1,76 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to enable rsyncd + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +log=${solr_root}/logs/rsyncd.log + +# define usage string +USAGE="\ +usage: $prog [-u username] [-v] + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts u:vV OPTION +do + case $OPTION in + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +start=`date +"%s"` + +logMessage enabled by $oldwhoami +logMessage command: $0 $@ +name=${solr_root}/logs/rsyncd-enabled + +if [[ -f ${name} ]] +then + logMessage rsyncd already currently enabled + logExit exited 1 +else + touch ${name} +fi + +logExit ended 0 diff --git a/solr/bin/rsyncd-start b/solr/bin/rsyncd-start new file mode 100644 index 0000000000000000000000000000000000000000..6bfc130c2ab82bb6b098823c5928046d0f209dad --- /dev/null +++ b/solr/bin/rsyncd-start @@ -0,0 +1,145 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to start rsyncd on master Solr server + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset data_dir solr_port rsyncd_port user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/rsyncd.log + +# define usage string +USAGE="\ +usage: $prog [-d dir] [-p portnum] [-u username] [-v] + -d specify directory holding index data + -p specify rsyncd port number + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts d:p:u:vV OPTION +do + case $OPTION in + d) + data_dir="$OPTARG" + ;; + p) + rsyncd_port="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +# try to determine rsyncd port number from $confFile if not specified on +# command line, default to solr_port+10000 +if [[ -z ${rsyncd_port} ]] +then + if [[ "${solr_port}" ]] + then + rsyncd_port=`expr 10000 + ${solr_port}` + else + echo "rsyncd port number missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi +fi + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +if [[ ! -f ${solr_root}/logs/rsyncd-enabled ]] +then + logMessage rsyncd disabled + exit 1 +fi + +if \ + rsync rsync://localhost:${rsyncd_port} >/dev/null 2>&1 +then + logMessage "rsyncd already running at port ${rsyncd_port}" + exit 1 +fi + +# create conf/rsyncd.conf on the fly, creating solrlogs directory if needed +if [[ ! -d ${solr_root}/conf ]] +then + mkdir ${solr_root}/conf +fi +cat <<EOF > ${solr_root}/conf/rsyncd.conf +#### rsyncd.conf file #### + +uid = $(whoami) +gid = $(whoami) +use chroot = no +list = no +pid file = ${solr_root}/logs/rsyncd.pid +log file = ${solr_root}/logs/rsyncd.log +[solr] + path = ${data_dir} + comment = Solr +EOF + +rsync --daemon --port=${rsyncd_port} --config=${solr_root}/conf/rsyncd.conf + +# first make sure rsyncd is accepting connections +i=1 +while \ + ! rsync rsync://localhost:${rsyncd_port} >/dev/null 2>&1 +do + if (( i++ > 15 )) + then + logMessage "rsyncd not accepting connections, exiting" >&2 + exit 2 + fi + sleep 1 +done + +logMessage rsyncd started with data_dir=${data_dir} and accepting requests diff --git a/solr/bin/rsyncd-stop b/solr/bin/rsyncd-stop new file mode 100644 index 0000000000000000000000000000000000000000..d19b054cffa3826690e452d6ceb9e39a0acbc0b2 --- /dev/null +++ b/solr/bin/rsyncd-stop @@ -0,0 +1,105 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to stop rsyncd on master Solr server + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/rsyncd.log + +# define usage string +USAGE="\ +usage: $prog [-u username] [-v] + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts u:vV OPTION +do + case $OPTION in + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +logMessage stopped by $oldwhoami +logMessage command: $0 $@ + +# look for pid file +if [[ ! -f ${solr_root}/logs/rsyncd.pid ]] +then + logMessage "missing rsyncd pid file ${solr_root}/logs/rsyncd.pid" + exit 2 +fi + +# get PID from file +pid=$(<${solr_root}/logs/rsyncd.pid) +if [[ -z $pid ]] +then + logMessage "unable to get rsyncd's PID" + exit 2 +fi + +kill $pid + +# wait until rsyncd dies or we time out +dead=0 +timer=0 +timeout=300 +while (( ! dead && timer < timeout )) +do + if ps -eo pid | grep -qw $pid + then + kill $pid + (( timer++ )) + sleep 1 + else + dead=1 + fi +done +if ps -eo pid | grep -qw $pid +then + logMessage rsyncd failed to stop after $timeout seconds + exit 3 +fi + +# remove rsyncd.conf +/bin/rm -f ${solr_root}/conf/rsyncd.conf diff --git a/solr/bin/scripts-util b/solr/bin/scripts-util new file mode 100644 index 0000000000000000000000000000000000000000..953bcc81efb611ae7e6e45e84b4df9c9f144d36c --- /dev/null +++ b/solr/bin/scripts-util @@ -0,0 +1,83 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# util functions used by scripts + +export PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH + +# set up variables +prog=${0##*/} + +# source the config file if present +confFile=${solr_root}/conf/scripts.conf +if [[ -f $confFile ]] +then + . $confFile +fi + +function fixUser +{ +# set user to $(whoami) if not specified + if [[ -z ${user} ]] + then + user=$(whoami) + fi + +# sudo + if [[ $(whoami) != ${user} ]] + then + sudo -u ${user} $0 "$@" + exit $? + fi + + oldwhoami=$(who -m | cut -d' ' -f1 | sed -e's/^.*!//') + + if [[ "${oldwhoami}" == "" ]] + then + oldwhoami=`ps h -Hfp $(pgrep -g0 ${0##*/}) | tail -1|cut -f1 -d" "` + fi +} + +function timeStamp +{ + date +'%Y/%m/%d %H:%M:%S' +} + +function logMessage +{ + echo $(timeStamp) $@>>$log + if [[ -n ${verbose} ]] + then + echo $@ + fi +} + +function logExit +{ + end=`date +"%s"` + diff=`expr $end - $start` + echo "$(timeStamp) $1 (elapsed time: $diff sec)">>$log + exit $2 +} + +# create logs directory if not there +if [[ ! -d ${solr_root}/logs ]] +then + mkdir ${solr_root}/logs +fi + +umask 002 diff --git a/solr/bin/snapcleaner b/solr/bin/snapcleaner new file mode 100644 index 0000000000000000000000000000000000000000..5301de3a77229f0dad83f53203409d36b8e3de21 --- /dev/null +++ b/solr/bin/snapcleaner @@ -0,0 +1,148 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to clean up snapshots of a Solr Lucene collection. + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset days num data_dir user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog -D <days> | -N <num> [-d dir] [-u username] [-v] + -D <days> cleanup snapshots more than <days> days old + -N <num> keep the most recent <num> number of snapshots and + cleanup up the remaining ones that are not being pulled + -d specify directory holding index data + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts D:N:d:u:vV OPTION +do + case $OPTION in + D) + days="$OPTARG" + ;; + N) + num="$OPTARG" + ;; + d) + data_dir="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -z ${days} && -z ${num} ]] +then + echo "$USAGE" + exit 1 +fi + +fixUser "$@" + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +function remove +{ + syncing=`ps -fwwwu ${user}|grep -w rsync|grep -v grep|grep -w $1` + if [[ -n $syncing ]] + then + logMessage $1 not removed - rsync in progress + else + logMessage removing snapshot $1 + /bin/rm -rf $1 + fi +} + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +# trap control-c +trap 'echo "caught INT/TERM, exiting now but partial cleanup may have already occured";logExit aborted 13' INT TERM + +if [[ -n ${days} ]] +then + #is maxdepth supported? + find ${data_dir} -maxdepth 0 -name foobar >/dev/null 2>&1 + if [ $? = 0 ]; then + maxdepth="-maxdepth 1" + else + unset maxdepth + fi + + logMessage cleaning up snapshots more than ${days} days old + for i in `find ${data_dir} ${maxdepth} -name 'snapshot.*' -mtime +${days} -print` + do + remove $i + done +elif [[ -n ${num} ]] +then + logMessage cleaning up all snapshots except for the most recent ${num} ones + unset snapshots count + snapshots=`ls -cd ${data_dir}/snapshot.* 2>/dev/null` + if [[ $? == 0 ]] + then + count=`echo $snapshots|wc -w` + startpos=`expr $num + 1` + if [[ $count -gt $num ]] + then + for i in `echo $snapshots|cut -f${startpos}- -d" "` + do + remove $i + done + fi + fi +fi + +logExit ended 0 + + diff --git a/solr/bin/snapinstaller b/solr/bin/snapinstaller new file mode 100644 index 0000000000000000000000000000000000000000..f716e1a0b077578fbaf0939e6f9d44407857a5e5 --- /dev/null +++ b/solr/bin/snapinstaller @@ -0,0 +1,168 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to install a snapshot into place as the Lucene collection +# for a Solr server + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset master_host master_status_dir data_dir user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-M master] [-S sdir] [-d dir] [-u username] [-v] + -M master specify hostname of master server from where to pull index + snapshot + -S specify directory holding snapshot status on master server + -d specify directory holding index data on local machine + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts M:S:d:u:vV OPTION +do + case $OPTION in + M) + master_host="$OPTARG" + ;; + S) + master_status_dir="$OPTARG" + ;; + d) + data_dir="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -z ${master_host} ]] +then + echo "name of master server missing in $confFile or command line." + echo "$USAGE" + exit 1 +fi + +if [[ -z ${master_status_dir} ]] +then + echo "directory holding snapshot status on master server missing in $confFile or command line." + echo "$USAGE" + exit 1 +fi + +fixUser "$@" + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +# assume relative path to start at ${solr_root} +if [[ "`echo ${master_status_dir}|cut -c1`" != "/" ]] +then + master_status_dir=${solr_root}/${master_status_dir} +fi + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +# get directory name of latest snapshot +name=`ls ${data_dir}|grep 'snapshot\.'|grep -v wip|sort -r|head -1` + +# clean up after INT/TERM +trap 'echo "caught INT/TERM, exiting now but partial installation may have already occured";/bin/rm -rf ${data_dir"/index.tmp$$;logExit aborted 13' INT TERM + +# is there a snapshot +if [[ "${name}" == "" ]] +then + logMessage no shapshot available + logExit ended 0 +fi + +name=${data_dir}/${name} + +# has snapshot already been installed +if [[ ${name} == `cat ${solr_root}/logs/snapshot.current 2>/dev/null` ]] +then + logMessage latest snapshot ${name} already installed + logExit ended 0 +fi + +# make sure master has directory for hold slaves stats/state +if + ! ssh -o StrictHostKeyChecking=no ${master_host} mkdir -p ${master_status_dir} +then + logMessage failed to ssh to master ${master_host}, snapshot status not updated on master +fi + +# install using hard links into temporary directory +# remove original index and then atomically copy new one into place +logMessage installing snapshot ${name} +cp -lr ${name}/ ${data_dir}/index.tmp$$ +/bin/rm -rf ${data_dir}/index +mv -f ${data_dir}/index.tmp$$ ${data_dir}/index + +# update distribution stats +echo ${name} > ${solr_root}/logs/snapshot.current + +# push stats/state to master +if + ! scp -q -o StrictHostKeyChecking=no ${solr_root}/logs/snapshot.current ${master_host}:${master_status_dir}/snapshot.current.`uname -n` +then + logMessage failed to ssh to master ${master_host}, snapshot status not updated on master +fi + +# notify Solr to open a new Searcher +logMessage notifing Solr to open a new Searcher +${solr_root}/bin/commit +if [[ $? != 0 ]] +then + logMessage failed to connect to Solr server + logMessage snapshot installed but Solr server has not open a new Searcher + logExit failed 1 +fi + +logExit ended 0 diff --git a/solr/bin/snappuller b/solr/bin/snappuller new file mode 100644 index 0000000000000000000000000000000000000000..7bab54dc60b9e9c0370f3e0f5a411fe4acfd81a4 --- /dev/null +++ b/solr/bin/snappuller @@ -0,0 +1,248 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to copy snapshots of a Solr Lucene collection from the master + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset master_host rsyncd_port master_data_dir master_status_dir snap_name +unset sizeonly stats data_dir user verbose debug compress startStatus +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-M master] [-P portnum] [-D mdir] [-S sdir] [-n snapshot] [-d dir] [-u username] [-svz] + -M master specify hostname of master server from where to pull index + snapshot + -P port specify rsyncd port number of master server from where to + pull index snapshot + -D specify directory holding index data on master server + -S specify directory holding snapshot status on master server + -n snapshot pull a specific snapshot by name + -d specify directory holding index data on local machine + -u specify user to sudo to before running script + -s use the --size-only option with rsync + -v increase verbosity (-vv show file transfer stats also) + -V output debugging info + -z enable compression of data +" + +# parse args +while getopts M:P:D:S:n:d:u:svVz OPTION +do + case $OPTION in + M) + master_host="$OPTARG" + ;; + P) + rsyncd_port="$OPTARG" + ;; + D) + master_data_dir="$OPTARG" + ;; + S) + master_status_dir="$OPTARG" + ;; + n) + snap_name="$OPTARG" + ;; + d) + data_dir="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + s) + sizeonly="--size-only" + ;; + v) + [[ -n $verbose ]] && stats="--stats" || verbose=v + ;; + V) + debug="V" + ;; + z) + compress="z" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +if [[ -z ${master_host} ]] +then + echo "name of master server missing in $confFile or command line." + echo "$USAGE" + exit 1 +fi + +# try to determine rsyncd port number from $confFile if not specified on +# command line, default to solr_port+10000 +if [[ -z ${rsyncd_port} ]] +then + if [[ "${solr_port}" ]] + then + rsyncd_port=`expr 10000 + ${solr_port}` + else + echo "rsyncd port number of master server missing in $confFile or command line." + echo "$USAGE" + exit 1 + fi +fi + +if [[ -z ${master_data_dir} ]] +then + echo "directory holding index data on master server missing in $confFile or command line." + echo "$USAGE" + exit 1 +fi + +if [[ -z ${master_status_dir} ]] +then + echo "directory holding snapshot status on master server missing in $confFile or command line." + echo "$USAGE" + exit 1 +fi + +fixUser "$@" + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +# assume relative path to start at ${solr_root} +if [[ "`echo ${master_data_dir}|cut -c1`" != "/" ]] +then + master_data_dir=${solr_root}/${master_data_dir} +fi +if [[ "`echo ${master_status_dir}|cut -c1`" != "/" ]] +then + master_status_dir=${solr_root}/${master_status_dir} +fi + +# push stats/state to master if necessary +function pushStatus +{ + scp -q -o StrictHostKeyChecking=no ${solr_root}/logs/snappuller.status ${master_host}:${master_status_dir}/snapshot.status.`uname -n` +} + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +if [[ ! -f ${solr_root}/logs/snappuller-enabled ]] +then + logMessage snappuller disabled + exit 1 +fi + +# make sure we can ssh to master +if + ! ssh -o StrictHostKeyChecking=no ${master_host} id 1>/dev/null 2>&1 +then + logMessage failed to ssh to master ${master_host} + exit 1 +fi + +# get directory name of latest snapshot if not specified on command line +if [[ -z ${snap_name} ]] +then + snap_name=`ssh -o StrictHostKeyChecking=no ${master_host} "ls ${master_data_dir}|grep 'snapshot\.'|grep -v wip|sort -r|head -1"` +fi +if [[ "${snap_name}" == "" ]] +then + logMessage no snapshot available on ${master_host} in ${master_data_dir} + logExit ended 0 +else + name=`basename ${snap_name}` +fi + +# clean up after INT/TERM +trap 'echo cleaning up, please wait ...;/bin/rm -rf ${data_dir}/${name} ${data_dir}/${name}-wip;echo ${startStatus} aborted:$(timeStamp)>${solr_root}/logs/snappuller.status;pushStatus;logExit aborted 13' INT TERM + +if [[ -d ${data_dir}/${name} || -d ${data_dir}/${name}-wip ]] +then + logMessage no new snapshot available on ${master_host} in ${master_data_dir} + logExit ended 0 +fi + +# take a snapshot of current index so that only modified files will be rsync-ed +# put the snapshot in the 'work-in-progress" directory to prevent it from +# being installed while the copying is still in progress +cp -lr ${data_dir}/index ${data_dir}/${name}-wip +# force rsync of segments and .del files since we are doing size-only +if [[ -n ${sizeonly} ]] +then + rm -f ${data_dir}/${name}-wip/segments + rm -f ${data_dir}/${name}-wip/*.del +fi + +logMessage pulling snapshot ${name} + +# make sure master has directory for hold slaves stats/state +ssh -o StrictHostKeyChecking=no ${master_host} mkdir -p ${master_status_dir} + +# start new distribution stats +rsyncStart=`date` +startTimestamp=`date -d "$rsyncStart" +'%Y%m%d-%H%M%S'` +rsyncStartSec=`date -d "$rsyncStart" +'%s'` +startStatus="rsync of `basename ${name}` started:$startTimestamp" +echo ${startStatus} > ${solr_root}/logs/snappuller.status +pushStatus + +# rsync over files that have changed +rsync -Wa${verbose}${compress} --delete ${sizeonly} \ +${stats} rsync://${master_host}:${rsyncd_port}/solr/${name}/ ${data_dir}/${name}-wip + +rc=$? +rsyncEnd=`date` +endTimestamp=`date -d "$rsyncEnd" +'%Y%m%d-%H%M%S'` +rsyncEndSec=`date -d "$rsyncEnd" +'%s'` +elapsed=`expr $rsyncEndSec - $rsyncStartSec` +if [[ $rc != 0 ]] +then + logMessage rsync failed + /bin/rm -rf ${data_dir}/${name}-wip + echo ${startStatus} failed:$endTimestamp > ${solr_root}/logs/snappuller.status + pushStatus + logExit failed 1 +fi + +# move into place atomically +mv ${data_dir}/${name}-wip ${data_dir}/${name} + +# finish new distribution stats` +echo ${startStatus} ended:$endTimestamp rsync-elapsed:${elapsed} > ${solr_root}/logs/snappuller.status +pushStatus +logExit ended 0 diff --git a/solr/bin/snappuller-disable b/solr/bin/snappuller-disable new file mode 100644 index 0000000000000000000000000000000000000000..9bf3f836eca19382d93c789b86956b955dcec495 --- /dev/null +++ b/solr/bin/snappuller-disable @@ -0,0 +1,77 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to disable snappuller + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/snappuller.log + +# define usage string +USAGE="\ +usage: $prog [-u username] [-v] + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts u:vV OPTION +do + case $OPTION in + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +start=`date +"%s"` + +logMessage disabled by $oldwhoami +logMessage command: $0 $@ +name=${solr_root}/logs/snappuller-enabled + +if [[ -f ${name} ]] +then + rm -f ${name} +else + logMessage snappuller not currently enabled + logExit exited 1 +fi + +logExit ended 0 diff --git a/solr/bin/snappuller-enable b/solr/bin/snappuller-enable new file mode 100644 index 0000000000000000000000000000000000000000..b379ba13a5fde97f1a8f327543dc634a27ef9161 --- /dev/null +++ b/solr/bin/snappuller-enable @@ -0,0 +1,77 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to enable snappuller + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/snappuller.log + +# define usage string +USAGE="\ +usage: $prog [-u username] [-v] + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts u:vV OPTION +do + case $OPTION in + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +start=`date +"%s"` + +logMessage enabled by $oldwhoami +logMessage command: $0 $@ +name=${solr_root}/logs/snappuller-enabled + +if [[ -f ${name} ]] +then + logMessage snappuller already currently enabled + logExit exited 1 +else + touch ${name} +fi + +logExit ended 0 diff --git a/solr/bin/snapshooter b/solr/bin/snapshooter new file mode 100644 index 0000000000000000000000000000000000000000..f172f7c2b0fc23244bd4f29365d585013646084e --- /dev/null +++ b/solr/bin/snapshooter @@ -0,0 +1,109 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Shell script to take a snapshot of a Solr Lucene collection. + +orig_dir=$(pwd) +cd ${0%/*}/.. +solr_root=$(pwd) +cd ${orig_dir} + +unset data_dir user verbose debug +. ${solr_root}/bin/scripts-util + +# set up variables +prog=${0##*/} +log=${solr_root}/logs/${prog}.log + +# define usage string +USAGE="\ +usage: $prog [-d dir] [-u username] [-v] + -d specify directory holding index data + -u specify user to sudo to before running script + -v increase verbosity + -V output debugging info +" + +# parse args +while getopts d:u:vV OPTION +do + case $OPTION in + d) + data_dir="$OPTARG" + ;; + u) + user="$OPTARG" + ;; + v) + verbose="v" + ;; + V) + debug="V" + ;; + *) + echo "$USAGE" + exit 1 + esac +done + +[[ -n $debug ]] && set -x + +fixUser "$@" + +# use default value for data_dir if not specified +# relative path starts at ${solr_root} +if [[ -z ${data_dir} ]] +then + data_dir=${solr_root}/data +elif [[ "`echo ${data_dir}|cut -c1`" != "/" ]] +then + data_dir=${solr_root}/${data_dir} +fi + +start=`date +"%s"` + +logMessage started by $oldwhoami +logMessage command: $0 $@ + +snap_name=snapshot.`date +"%Y%m%d%H%M%S"` +name=${data_dir}/${snap_name} +temp=${data_dir}/temp-${snap_name} + +if [[ -d ${name} ]] +then + logMessage snapshot directory ${name} already exists + logExit aborted 1 +fi + +if [[ -d ${temp} ]] +then + logMessage snapshoting of ${name} in progress + logExit aborted 1 +fi + +# clean up after INT/TERM +trap 'echo cleaning up, please wait ...;/bin/rm -rf ${name} ${temp};logExit aborted 13' INT TERM + +logMessage taking snapshot ${name} + +# take a snapshot using hard links into temporary location +# then move it into place atomically +cp -lr ${data_dir}/index ${temp} +mv ${temp} ${name} + +logExit ended 0 + diff --git a/solr/jetty/README.txt b/solr/jetty/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..ea049ef9acade924b1b1c92279e771a3e20edc0e --- /dev/null +++ b/solr/jetty/README.txt @@ -0,0 +1,141 @@ + +This is the Jetty 6 HTTP server and servlet container. + +For more information about Jetty, please see the Jetty wiki: + + http://docs.codehaus.org/display/JETTY/ + +DIRECTORY LAYOUT +================ +bin utility scripts and executables +contexts Deployment directory for context descriptors +contrib Source modules for optional jetty packages in the jetty-contrib repository, which has a larger more open group of committers +etc Configuration files +examples Example projects +extras Source modules for optional jetty packages in the main jetty repository. +javadoc Generated javadoc +lib Generated libraries +LICENSES License +logs Request log and server log files +modules Source modules for core jetty packages +patches Optional patches for source modules +pom.xml Build configuration for maven +project-website Project Website +README.txt This file +resources Directory for resources to include on classpath +start.jar Start jar for jetty +VERSION.txt Version history +webapps Deployment directory for standard webapps + + +RUNNING JETTY +============= +From the release, you can run the server with: + + java -jar start.jar + +and then point your browser at + + http://localhost:8080 + +and click to the test webapp, where there are some demos and more +information. + +The start command above is equivalent to + + java -jar start.jar etc/jetty.xml + +which gives a configuration file on the commandline. An explicit +configuration file (or multiple configuration files) may be +given to select specific configurations. + +There is also a unix start script in bin/jetty.sh that can be used +in /etc/init.d + +JETTY DEPENDENCIES +================== + +The Jetty build is rather large, because it bundles many optional +packages. + +Jetty depends ONLY on a jre 1.4 runtime and the three jars found in +the top level of the $JETTY_HOME/lib directory: + + servlet-api-2.5-$VERSION.jar + jetty-$VERSION.jar + jetty-util-$VERSION.jar + +For small foot print applications, these three jars can be +trimmed of excess classes - we will soon automate generation +of such minimal assemblies. + +The jars found in the subdirectories are all optional: + + jsp-2.0/*.jar (depends on java 2 (jre 1.4)) + jsp-2.1/*.jar (depends on java 5 (jre 1.5)) + management/*.jar + naming/*.jar + plus/*.jar + xbean/*.jar + +The start.jar includes all these options if they are +left in the lib subdirectories. + +The start.jar will also select the version of JSP to +use based on the version of the jre available. + + +RUNNING WITH JMX +================ + +The server can be run with JMX management with the command: + + java -jar start.jar etc/jetty-jmx.xml etc/jetty.xml + +This command adds the jmx configuration file before the server +configuration. + +RUNNING WITH JETTY PLUS +======================= + +The server can be run as JettyPlus (JNDI, JAAS etc.) with the +command: + + java -jar start.jar etc/jetty.xml etc/jetty-plus.xml + +This command adds the plus configuration file after the server configuration file, +although you will first need to follow the instructions inside the etc/jetty-plus.xml +file. + +RUNNING WITH OTHER CONTAINERS +============================= +If you wish to use Continuations in other containers, the jetty-util.jar +can be included in WEB-INF/lib and will provide waiting continuations + + +BUILDING JETTY +============== + +Jetty uses maven 2 as its build system. Maven will fetch +the dependancies, build the server and assemble a runnable +version: + + mvn install + +Jetty itself only needs java 1.4, however to build JSP 2.1 +support you need to use java5 AND you will need to have +cvs installed. If you want to use java1.4, +then you can use the jsp-2.0 modules instead of the +jsp-api-2.1 and jsp-2.1 modules. + + +DEPENDENCIES +============ +The only real dependancy is the servlet api, so only +the jars in the top level of the lib directory are needed +to run Jetty (and they can be trimmed from many applications). + +The jars in the subdirectories of lib are all optional, but +are included on the classpath by the standard start.jar +mechanism + diff --git a/solr/jetty/VERSION.txt b/solr/jetty/VERSION.txt new file mode 100644 index 0000000000000000000000000000000000000000..82ce9925bd84fbe8f6c5500b08d914d62f11b00c --- /dev/null +++ b/solr/jetty/VERSION.txt @@ -0,0 +1,3459 @@ +jetty-6.1.11 20 May 2008 + + JETTY-336 413 error for full header buffer + + JETTY-425 race in stopping SelectManager + + JETTY-580 Fixed SSL shutdown + + JETTY-581 ContextPath constructor + + JETTY-582 final ISO_8859_1 + + JETTY-584 handle null contextPath + + JETTY-588 handle Retry in ServletException + + JETTY-590 Digest auth domain for root context + + JETTY-592 expired timeout callback without synchronization + + JETTY-595 SessionHandler only deals with base request session + + JETTY-596 Proxy support in HttpClient + + JETTY-598 Added more reliable cometd message flush option + +jetty-6.1.10 20 May 2008 + + Use QueuedThreadPool as default + + JETTY-440 allow file name patterns for jsp compilation for jspc plugin + + JETTY-529 CNFE when deserializing Array from session resolved + + JETTY-537 JSON handles Locales + + JETTY-547 Shutdown SocketEndpoint output before close + + JETTY-550 Reading 0 bytes corrupts ServletInputStream + + JETTY-551 Upgraded to Wadi 2.0-M10 + + JETTY-556 Encode all URI fragments + + JETTY-557 Allow ServletContext.setAttribute before start + + JETTY-558 optional handling of X-Forwarded-For/Host/Server + + JETTY-566 allow for non-blocking behavior in jetty maven plugin + + JETTY-572 unique cometd client ID + + JETTY-579 osgi fixes with management and servlet resources + +jetty-6.1.9 26 March 2008 + + Make javax.servlet.jsp optional osgi import for jetty module + + Ensure Jotm tx mgr can be found in jetty-env.xml + + JETTY-399 update OpenRemoteServiceServlet to gwt 1.4 + + JETTY-471 LDAP JAAS Realm + + JETTY-475 AJP connector in RPMs + + JETTY-482 update to JETTY-399 + + JETTY-519 HttpClient does not recycle closed connection. + + JETTY-522 Add build profile for macos for setuid + + JETTY-525 Fixed decoding for long strings + + JETTY-526 Fixed MMBean fields on JMX MBeans + + JETTY-532 MBean properties for QueuedThreadPool + + JETTY-535 Fixed Bayeux server side client memory leak + + JETTY-538 test harness fix for windows + + JETTY-541 Cometd per client timeouts + +jetty-6.1.8 28 February 2008 + + Added QueuedThreadPool + + Optimized QuotedStringTokenizer.quote() + + further Optimizations and improvements of Cometd + + Optimizations and improvements of Cometd, more pooled objects + + Improved Cometd timeout handling + + Added BayeuxService + + Cookie support in BayeuxClient + + Improved Bayeux API + + add removeHandler(Handler) method to HandlerContainer interface + + Added JSON.Convertor and non static JSON instances + + Long cache for JSON + + Fixed JSON negative numbers + + JSON unquotes / + + Add "mvn jetty:stop" + + allow sessions to be periodically persisted to disk + + grizzly fixed for posts + + Add removeHandler(Handler) method to HandlerContainer interface + + Remove duplicate commons-logging jars and include sslengine in jboss sar + + Allow code ranges on ErrorPageErrorHandler + + AJP handles bad mod_jk methods + + JETTY-350 log ssl errors on SslSocketConnector + + JETTY-417 JETTY_LOGS environment variable not queried by jetty.sh + + JETTY-433 ContextDeployer constructor fails unnecessarily when using a security manager if jetty.home not set + + JETTY-434 ContextDeployer scanning of sub-directories should be optional + + JETTY-481 Handle empty Bayeux response + + JETTY-489 Improve doco on the jetty.port property for plugin + + JETTY-490 Fixed JSONEnumConvertor + + JETTY-491 opendocument mime types + + JETTY-492 Null pointer in HashSSORealm + + JETTY-493 JSON handles BigDecimals + + JETTY-498 Improved cookie parsing + + JETTY-507 Fixed encoding from JETTY-388 and test case + + JETTY-508 Extensible cometd handlers + + JETTY-509 Fixed JSONP transport for changing callback names + + JETTY-511 jetty.sh mishandled JETTY_HOME when launched from a relative path + + JETTY-512 add slf4j as optional to manifest + + JETTY-513 Terracotta session replication does not work when the initial page on each server does not set any attributes + + JETTY-515 Timer is missing scavenging Task in HashSessionManager + +jetty-6.1.7 - 22 December 2007 + + Added BayeuxService + + Added JSON.Convertor and non static JSON instances + + Add "mvn jetty:stop" + + allow sessions to be periodically persisted to disk + + Cookie support in BayeuxClient + + grizzly fixed for posts + + jetty-6.1 branch created from 6.1.6 and r593 of jetty-contrib trunk + + Optimizations and improvements of Cometd, more pooled objects + + Update java5 patch + + JETTY-386 CERT-553235 backout fix and replaced with ContextHandler.setCompactPath(boolean) + + JETTY-467 allow URL rewriting to be disabled. + + JETTY-468 unique holder names for addServletWithMapping + + JETTY-474 Fixed case sensitivity issue with HttpFields + + JETTY-486 Improved jetty.sh script + + JETTY-487 Handle empty chunked request + +jetty-6.1.6 - 18 November 2007 + + rudimentary debian packaging + + updated grizzly connector to 1.6.1 + + JETTY-455 Optional cometd id + + JETTY-459 Unable to deploy from Eclipse into the root context + + JETTY-461 fixed cometd unknown channel + + JETTY-464 typo in ErrorHandler + + JETTY-465 System.exit() in constructor exception for MultiPartOutputStream + +jetty-6.1.6rc1 - 5 November 2007 + + Upgrade jsp 2.1 to SJSAS-9_1-B58G-FCS-08_Sept_2007 + + Housekeeping on poms + + CERT VU#38616 handle single quotes in cookie names. + + Improved JSON parsing from Readers + + Moved some impl classes from jsp-api-2.1 to jsp-2.1 + + Added configuration file for capturing stderr and stdout + + Updated for dojo 1.0(rc) cometd + + Give bayeux timer name + + Give Terracotta session scavenger a name + + Jetty Eclipse Plugin 1.0.1: force copy of context file on redeploy + + JETTY-388 Handle utf-16 and other multibyte non-utf-8 form content. + + JETTY-409 String params that denote files changed to File + + JETTY-438 handle trailing . in vhosts + + JETTY-439 Fixed 100 continues clash with Connection:close + + JETTY-451 Concurrent modification of session during invalidate + + JETTY-443 windows bug causes Acceptor thread to die + + JETTY-445 removed test code + + JETTY-448 added setReuseAddress on AbstractConnector + + JETTY-450 Bad request for response sent to server + + JETTY-452 CERT VU#237888 Dump Servlet - prevent cross site scripting + + JETTY-453 updated Wadi to 2.0-M7 + + JETTY-454 handle exceptions with themselves as root cause + + JETTY-456 allow null keystore for osX + + JETTY-457 AJP certificate chains + +jetty-6.1.6rc0 - 3 October 2007 + + Added jetty.lib system property to start.config + + AJP13 Fix on chunked post + + Fix cached header optimization for extra characters + + SetUID option to support setgid + + Make mx4j used only if runtime uses jdk<1.5 + + Moved Grizzly to contrib + + Give deployment file Scanner threads a unique name + + Fix Host header for async client + + Fix typo in async client onResponsetHeader method name + + Tweak OSGi manifests to remove unneeded imports + + Allow scan interval to be set after Scanner started + + Add jetty.host system property + + Allow properties files on the XmlConfiguration command line. + + Prevent infinite loop on stopping with temp dir + + Ensure session is completed only when leaving context. + + Update terracotta to 2.4.1 and exclude ssl classes + + Update jasper2.1 to tag SJSAS-9_1-B58C-FCS-22_Aug_2007 + + Removal of unneeded dependencies from management, maven-plugin, naming & plus poms + + Adding setUsername,setGroupname to setuid and mavenizing native build + + UTF-8 for bayeux client + + CVE-2007-5615 Added protection for response splitting with bad headers. + + Cached user agents strings in the /org/mortbay/jetty/useragents resource + + Make default time format for RequestLog match NCSA default + + Use terracotta repo for build; make jetty a terracotta module + + Fix patch for java5 to include cometd module + + Added ConcatServlet to combine javascript and css + + Add ability to persist sessions with HashSessionManager + + Avoid FULL exception in window between blockForOutput and remote close + + Added JPackage RPM support + + Added JSON.Convertable + + Updated README, test index.html file and jetty-plus.xml file + + JETTY-259 SystemRoot set for windows CGI + + JETTY-311 avoid json keywords + + JETTY-376 allow anything but CRLF in reason string + + JETTY-398 Allow same WADI Dispatcher to be used across multiple web-app contexts + + JETTY-400 consume CGI stderr + + JETTY-402 keep HashUserRealm in sync with file + + JETTY-403 Allow long content length for range requests + + JETTY-404 WebAppDeployer sometimes deploys duplicate webapp + + JETTY-405 Default date formate for reqest log + + JETTY-407 AJP handles unknown content length + + JETTY-413 Make rolloveroutputstream timer daemon + + JETTY-422 Allow <Property> values to be null in config files + + JETTY-423 Ensure javax.servlet.forward parameters are latched on first forward + + JETTY-425 Handle duplicate stop calls better + + JETTY-430 improved cometd logging + + JETTY-431 HttpClient soTimeout + +jetty-6.1.5 - 19 Jul 2007 + + Upgrade to Jasper 2.1 tag SJSAS-9_1-B50G-BETA3-27_June_2007 + + Fixed GzipFilter for dispatchers + + Fixed reset of reason + + JETTY-392 - updated LikeJettyXml example + +jetty-6.1.5rc0 - 15 Jul 200 + + update terracotta session clustering to terracotta 2.4 + + SetUID option to only open connectors before setUID. + + Protect SslSelectChannelConnector from exceptions during close + + Improved Request log configuration options + + Added GzipFilter and UserAgentFilter + + make OSGi manifests for jetty jars + + update terracotta configs for tc 2.4 stable1 + + remove call to open connectors in jetty.xml + + update links on website + + make jetty plus example webapps use ContextDeployer + + Dispatch SslEngine expiry (non atomic) + + Make SLF4JLog impl public, add mbean descriptors + + SPR-3682 - dont hide forward attr in include. + + Upgrade to Jasper 2.1 tag SJSAS-9_1-B50G-BETA3-27_June_2007 + + JETTY-253 - Improved graceful shutdown + + JETTY-373 - Stop all dependent lifecycles + + JETTY-374 - HttpTesters handles large requests/responses + + JETTY-375 - IllegalStateException when committed. + + JETTY-376 - allow spaces in reason string + + JETTY-377 - allow sessions to be wrapped with AbstractSesssionManager.SessionIf + + JETTY-378 - handle JVMs with non ISO/UTF default encodings + + JETTY-380 - handle pipelines of more than 4 requests! + + JETTY-385 - EncodeURL for new sessions from dispatch + + JETTY-386 - Allow // in file resources + + +jetty-6.1.4 - 15 Jun 2007 + + fixed early open() call in NIO connectors + + JETTY-370 ensure maxIdleTime<=0 means connections never expire + + JETTY-371 Fixed chunked HEAD response + + JETTY-372 make test for cookie caching more rigorous + +jetty-6.1.4rc1 - 10 Jun 2007 + + Work around IBM JVM socket close issue + + moved documentation for jetty and jspc maven plugins to wiki + + async client improvements + + fixed handling of large streamed files + + Fixed synchronization conflict SslSelectChannel and SelectChannel + + Optional static content cache + + JETTY-310 better exception when no filter file for cometd servlet + + JETTY-323 handle htaccess without a user realm + + JETTY-346 add wildcard support to extra scan targets for maven plugin + + JETTY-355 extensible SslSelectChannelConnector + + JETTY-357 cleaned up ssl buffering + + JETTY-360 allow connectors, userRealms to be added from a <jettyConfig> for maven plugin + + JETTY-361 prevent url encoding of dir listings for non-link text + + JETTY-362 More object locks + + JETTY-365 make needClientAuth work on SslSelectChannelConnector + + JETTY-366 JETTY-368 Improved bayeux disconnect + +jetty-6.1.4rc0 - 1 Jun 2007 + + Reorganized import of contrib modules + + Unified JMX configuration + + Updated slf4j version to 1.3.1 + + Updated junit to 3.8.2 + + Allow XmlConfiguration properties to be configured + + Add (commented out) jspc precompile to test-webapp + + Add slf4j-api for upgraded version + + Change scope of fields for Session + + Add ability to run cometd webapps to maven plugin + + Delay ssl handshake until after dispatch in sslSocketConnector + + Set so_timeout during ssl handshake as an option on SslSocketConnector + + Optional send Date header. Server.setSendDateHeader(boolean) + + update etc/jetty-ssl.xml with new handshake timeout setting + + fixed JSP close handling + + improved date header handling + + fixed waiting continuation reset + + JETTY-257 fixed comet cross domain + + JETTY-309 fix applied to sslEngine + + JETTY-317 rollback inclusion of cometd jar for maven plugin + + JETTY-318 Prevent meta channels being created + + JETTY-330 Allow dependencies with scope provided for jspc plugin + + JETTY-335 SslEngine overflow fix + + JETTY-337 deprecated get/setCipherSuites and added get/setExcludeCipherSuites + + JETTY-338 protect isMoreInBuffer from destroy + + JETTY-339 MultiPartFiler deletes temp files on IOException + + JETTY-340 FormAuthentication works with null response + + JETTY-344 gready fill in ByteArrayBuffer.readFrom + + JETTY-345 fixed lost content with blocked NIO. + + JETTY-347 Fixed type util init + + JETTY-352 Object locks + +jetty-6.1.3 - 4 May 2007 + + Handle CRLF for content in header optimization + + JETTY-309 don't clear writable status until dispatch + + JETTY-315 suppressed warning + + JETTY-322 AJP13 cping and keep alive + +jetty-6.1.2 - 1 May 2007 + + Improved unavailabile handling + + sendError resets output state + + Fixed session invalidation error in WadiSessionManager + + Updated Wadi to version 2.0-M3 + + Added static member definition in WadiSessionManager + + JETTY-322 fix ajp cpong response and close handling + + JETTY-324 fix ant plugin + + JETTY-328 updated jboss + +jetty-6.1.2rc5 - 24 April 2007 + + set default keystore for SslSocketConnector + + removed some compile warnings + + Allow jsp-file to be / or /* + + JETTY-305 delayed connection destroy + + JETTY-309 handle close in multivalue connection fields. + + JETTY-309 force writable status of endpoints. + + JETTY-314 fix for possible NPE in Request.isRequestedSessionIdValid + +jetty-6.1.2rc4 - 19 April 2007 + + JETTY-294 Fixed authentication reset + + JETTY-299 handle win32 paths for object naming + + JETTY-300 removed synchronized on dispatch + + JETTY-302 correctly parse quoted content encodings + + JETTY-303 fixed dual reset of generator + + JETTY-304 Fixed authentication reset + +jetty-6.1.2rc3 - 16 April 2007 + + Improved performance and exclusions for TLD scanning + + MBean properties assume writeable unless marked RO + + refactor of SessionManager and SessionIdManager for clustering + + Improvements to allow simple setting of Cache-Control headers + + AJP redirects https requests correctly + + Fixed writes of unencoded char arrays. + + JETTY-283 Parse 206 and 304 responses in client + + JETTY-285 enable jndi for mvn jetty:run-war and jetty:run-exploded + + JETTY-289 fixed javax.net.ssl.SSLException on binary file upload + + JETTY-292 Fixed error page handler error pages + + JETTY-293 fixed NPE on fast init + + JETTY-294 Response.reset() resets headers as well as content + + JETTY-295 Optional support of authenticated welcome files + + JETTY-296 Close direct content inputstreams + + JETTY-297 Recreate tmp dir on stop/start + + JETTY-298 Names in JMX ObjectNames for context, servlets and filters + +jetty-6.1.2rc2 - 27 March 2007 + + Enable the SharedStoreContextualiser for the WadiSessionManager(Database store for clustering) + + AJP13 CPING request and CPONG response implemented + + AJP13 Shutdown Request from peer implemented + + AJP13 remoteUser, contextPath, servletPath requests implemented + + Change some JNDI logging to debug level instead of info + + Update jasper to glassfish tag SJSAS-9_1-B39-RC-14_Mar_2007 + + Optimized multi threaded init on startup servlets + + Removed unneeded specialized TagLibConfiguration class from maven plugin + + Refactor Scanner to increase code reuse with maven/ant plugins + + Added RestFilter for PUT and DELETE from Aleksi Kallio + + Make annotations work for maven plugin + + JETTY-125 maven plugin: ensure test dependencies on classpath for <useTestClasspath> + + JETTY-246 path encode cookies rather than quote + + JETTY-254 prevent close of jar entry by bad JVMs + + JETTY-256 fixed isResumed and work around JVM bug + + JETTY-258 duplicate log message in ServletHandler + + JETTY-260 Close connector before stop + + JETTY-262 Allow acceptor thread priority to be adjusted + + JETTY-263 Added implementation for authorizationType Packets + + JETTY-265 Only quote cookie values if needed + + JETTY-266 Fix deadlock with shutdown + + JETTY-271 ResourceHandler uses resource for MimeType mapping + + JETTY-272 Activate and Passivate events for sessions + + JETTY-274 Improve flushing at end of request for blocking + + JETTY-276 Partial fix for reset/close race + + JETTY-277 Improved ContextHandlerCollection + + JETTY-278 Session invalidation delay until no requests + + JETTY-278 Only unwrap one layer of ServletExceptions + + JETTY-280 Fixed deadlock with two flushing threads + + JETTY-284 Fixed stop connector race + + JETTY-286 isIntegral and isConfidential methods overridden in SslSelectChannelConnector + +jetty-6.1.2rc1 - 8 March 2007 + + TagLibConfiguration uses resource input stream + + Improved handling of early close in AJP + + add ajp connector jar to jetty-jboss sar + + Improved Context setters for wadi support + + fix Dump servlet to handle primitive array types + + handle comma separated values for the Connection: header + + Added option to allow null pathInfo within context + + BoundedThreadPool queues rather than blocks excess jobs. + + Support null pathInfo option for webservices deployed to jetty/jboss + + Workaround to call SecurityAssocation.clear() for jboss webservices calls to ejbs + + Ensure jetty/jboss uses servlet-spec classloading order + + call preDestroy() after servlet/filter destroy() + + Fix constructor for Constraint to detect wildcard role + + Added support for lowResourcesIdleTime to SelectChannelConnector + + JETTY-157 make CGI handle binary data + + JETTY-175 JDBCUserRealm use getInt instead of getObject + + JETTY-188 Use timer for session scavaging + + JETTY-235 default realm name + + JETTY-242 fix race condition with scavenging sessions when stopping + + JETTY-243 FULL + + JETTY-244 Fixed UTF-8 buffer overflow + + JETTY-245 Client API improvements + + JETTY-246 spaces in cookies + + JETTY-248 setContentLength after content written + + JETTY-250 protect attribute enumerations from modification + + JETTY-252 Fixed stats handling of close connection + + JETTY-254 prevent close of jar file by bad JVMs + +jetty-6.1.2rc0 - 15 February 2007 + + JETTY-223 Fix disassociate of UserPrincipal on dispatches + + JETTY-226 Fixed SSLEngine close issue + + JETTY-232 Fixed use of override web.xml + + JETTY-236 Buffer leak + + JETTY-237 AJPParser Buffer Data Handling + + JETTY-238 prevent form truncation + + Patches from sybase for ClientCertAuthenticator + + Coma separated cookies + + Cometd timeout clients + +jetty-6.1.2pre1 5 Feb 2007 + + JETTY-224 run build up to process-test before invoking jetty:run + + Added error handling for incorrect keystore/truststore password in SslSelectChannelConnector + + fixed bug with virtual host handling in ContextHandlerCollection + + added win32service to standard build + + refactored cometd to be continuation independent + + allow ResourceHandler to use resource base from an enclosing ContextHandler + +jetty-6.1.2pre0 1 Feb 2007 + + Fixed 1.4 method in jetty plus + + Fixed generation of errors during jsp compilation for jsp-2.1 + + Added cometd jsonp transport from aabeling + + Added terracotta cluster support for cometd + + JETTY-213 request.isUserInRole(String) fixed + + JETTY-215 exclude more transitive dependencies from tomcat jars for jsp-2.0 + + JETTY-216 handle AJP packet fragmentation + + JETTY-218 handle AJP ssl key size and integer + + JETTY-219 fixed trailing encoded chars in cookies + + JETTY-220 fixed AJP content + + JETTY-222 fix problem parsing faces-config.xml + + add support for Annotations in servlet, filter and listener sources + + improved writer buffering + + moved JSON parser to util to support reuse + + handle virtual hosts in ContextHandlerCollection + + enable SslSelectChannelConnector to modify the SslEngine's client authentication settings + +jetty-6.1.1 - 15 Jan 2007 +jetty-6.1.1rc1 - 12 Jan 2007 + + Use timers for Rollover logs and scanner + + JETTY-210 Build jsp-api-2.0 for java 1.4 + +jetty-6.1.1rc0 - 10 Jan 2007 + + Fixed unpacking WAR + + extras/win32service download only if no JavaServiceWrapper exist + + MultiPartFilter deleteFiles option + + CGI servlet fails without exception + + JETTY-209 Added ServletTester.createSocketConnector + + JETTY-210 Build servlet-api-2.5 for java 1.4 + + JETTY-211 fixed jboss build + + ensure response headers on AjaxFilter messsages turn off caching + + start webapps on deployment with jboss, use isDistributed() method from WebAppContext + + simplified chat demo + +jetty-6.1.0 - 9 Jan 2007 + + Fixed unpacking WAR +jetty-6.1.0 - 5 Jan 2007 + + Improved config of java5 threadpool + + Protect context deployer from Errors + + Added WebAppContext.setCopyWebDir to avoid JVM jar caching issues. + + GERONIMO-2677 refactor of session id handling for clustering + + ServletTester sets content length + + Added extras/win32service + + JETTY-206 fixed AJP getServerPort and getRemotePort + +jetty-6.1.0rc3 - 2 Jan 2007 + + JETTY-195 fixed ajp ssl_cert handling + + JETTY-197 fixed getRemoteHost + + JETTY-203 initialize ServletHandler if no Context instance + + JETTY-204 setuid fix + + setLocale does not use default content type + + Use standard releases of servlet and jsp APIs. + + implement resource injection and lifecycle callbacks declared in web.xml + + extras/servlet-tester + +jetty-6.1.0rc2 - 20 December 2006 + + AJP13Parser, throw IllegalStateException on unimplemented AJP13 Requests + + ContextHandlerCollection is noop with no handlers + + ensure servlets initialized if only using ServletHandler + + fixed Jetty-197 AJP13 getRemoteHost() + + Refactored AbstractSessionManager for ehcache + + ensure classpath passed to jspc contains file paths not urls + + JETTY-194 doubles slashes are significant in URIs + + JETTY-167 cometd refactor + + remove code to remove SecurityHandler if no constraints present + + JETTY-201 make run-as work for both web container and ejb container in jboss + + ensure com.sun.el.Messages.properties included in jsp-2.1 jar + +jetty-6.1.0rc1 - 14 December 2006 + + simplified idle timeout handling + + JETTY-193 MailSessionReference without authentication + + JETTY-199 newClassPathResource + + ensure unique name for ServletHolder instances + + added cache session manager(pre-alpha) + +jetty-6.1.0rc0 - 8 December 2006 + + JETTY-181 Allow injection of a java:comp Context + + JETTY-182 Optionally set JSP classpath initparameter + + Dispatcher does not protect javax.servlet attributes + + DefaultHandler links virtual hosts. + + Fixed cachesize on invalidate + + Optimization of writers + + ServletHandler allows non REQUEST exceptions to propogate + + TCK fixes from Sybase: + * Handle request content encodings + * forward query attribute fix + * session attribute listener + * Servlet role ref + * flush if content-length written + * 403 for BASIC authorization failure + * null for unknown named dispatches + + JETTY-184 cometd connect non blocking + + Support for RFC2518 102-processing response + + JETTY-123 fix improved + + Added org.mortbay.thread.concurrent.ThreadPool + + Added extras/gwt + + Fixed idle timeout + + JETTY-189 ProxyConnection + + Added spring ejb3 demo example + + update jasper to glassfish SJSAS-9_1-B27-EA-07_Dec_2006 + + fixed JETTY-185 tmp filename generation + +jetty-6.1.0pre3 - 22 November 2006 + + fixed NIO endpoint flush. Avoid duplicate sends + + CVE-2006-6969 Upgraded session ID generation to use SecureRandom + + updated glassfish jasper to tag SJSAS-9_1-B25-EA-08_Nov_2006 + + Support TLS_DHE_RSA_WITH_AES_256_CBC_SHA + + JETTY-180 XBean support for context deploy + + JETTY-154 Cookies are double quotes only + + Expose isResumed on Continuations + + Refactored AJP generator + + +jetty-6.0.2 - 22 November 2006 + + Moved all modules updates from 6.1pre2 to 6.0 + + Added concept of bufferred endpoint + + Added conversion Object -> ObjectName for the result of method calls made on MBeans + + Added DataFilter configuration to cometd + + added examples/test-jaas-webapp + + Added extraClassPath to WebAppContext + + Added hierarchical destroy of mbeans + + Added ID constructor to AbstractSessionManager.Session + + added isStopped() in LifeCycle and AbstractLifeCycle + + Added override descriptor for deployment of RO webapps + + add <Property> replacement in jetty xml config files + + alternate optimizations of writer (use -Dbuffer.writers=true) + + Allow session cookie to be refreshed + + Apply queryEncoding to getQueryString + + CGI example in test webapp + + change examples/test-jndi-webapp so it can be regularly built + + Default soLinger is -1 (disabled) + + ensure "" returned for ServletContext.getContextPath() for root context + + ensure sessions nulled out on request recycle; ensure session null after invalidate + + ensure setContextPath() works when invoked from jetty-web.xml + + fixed NIO endpoint flush. Avoid duplicate sends + + Fixed NPE in bio.SocketEndPoint.getRemoteAddr() + + Fixed resource cache flushing + + Fixed tld parsing for maven plugin + + HttpGenerator can generate requests + + Improved *-mbean.properties files and specialized some MBean + + JETTY-118 ignore extra content after close. + + JETTY-119 cleanedup Security optimizatoin + + JETTY-123 handle windows UNC paths + + JETTY-126 handle content > Integer.MAX_VALUE + + JETTY-129 ServletContextListeners called after servlets are initialized + + JETTY-151 Idle timeout only applies to blocking operations + + JETTY-151 refactored writers + + JETTY-154 Cookies are double quotes only + + JETTY-171 Fixed filter mapping + + JETTY-172 use getName() instead of toString + + JETTY-173 restore servletpath after dispatch + + Major refactor of SelectChannel EndPoint for client selector + + make .tag files work in packed wars + + Plugin shutdown context before stopping it. + + Refactored session lifecycle and additional tests + + release resource lookup in Default servlet + + (re)make JAAS classes available to webapp classloader + + Reverted UnixCrypt to use coersions (that effected results) + + Session IDs can change worker ID + + Simplified ResourceCache and Default servlet + + SocketConnector closes all connections in doStop + + Upgraded session ID generation to use SecureRandom + + updated glassfish jasper to tag SJSAS-9_1-B25-EA-08_Nov_2006 + + Support TLS_DHE_RSA_WITH_AES_256_CBC_SHA + +Jetty-5.1.14 - 9 Aug 2007 + + patched with correct version + + JETTY-155 force close with content length. + + JETTY-369 failed state in Container + +Jetty-5.1.13 + + Sourceforge 1648335: problem setting version for AJP13 + +Jetty-5.1.12 - 22 November 2006 + + Added support for TLS_DHE_RSA_WITH_AES_256_CBC_SHA + + Upgraded session ID generation to use SecureRandom + + Quote single quotes in cookies + + AJP protected against bad requests from mod_jk + + JETTY-154 Cookies ignore single quotes + +Jetty-4.2.27 - 22 November 2006 + + Upgraded session ID generation to use SecureRandom + + AJP protected against bad requests from mod_jk + +jetty-6.1.0pre2 - 20 Nov 2006 + + Added extraClassPath to WebAppContext + + Fixed resource cache flushing + + Clean up jboss module licensing + +jetty-6.1.0pre1 - 19 Nov 2006 + + Use ContextDeployer as main deployer in jetty.xml + + Added extras/jboss + + Major refactor of SelectChannel EndPoint for client selector + + Fixed NPE in bio.SocketEndPoint.getRemoteAddr() + + Reverted UnixCrypt to use coersions (that effected results) + + JETTY-151 Idle timeout only applies to blocking operations + + alternate optimizations of writer (use -Dbuffer.writers=true) + + JETTY-171 Fixed filter mapping + + JETTY-172 use getName() instead of toString + + JETTY-173 restore servletpath after dispatch + + release resource lookup in Default servlet + + Simplified ResourceCache and Default servlet + + Added override descriptor for deployment of RO webapps + + Added hierarchical destroy of mbeans + + JETTY-151 refactored writers + +jetty-6.1.0pre0 - 21 Oct 2006 + + add <Property> replacement in jetty xml config files + + make .tag files work in packed wars + + add hot deployment capability + + ensure setContextPath() works when invoked from jetty-web.xml + + ensure sessions nulled out on request recycle; ensure session null after invalidate + + ensure "" returned for ServletContext.getContextPath() for root context + + Fixed tld parsing for maven plugin + + Improved *-mbean.properties files and specialized some MBean + + Added conversion Object -> ObjectName for the result of method calls made on MBeans + + JETTY-129 ServletContextListeners called after servlets are initialized + + change examples/test-jndi-webapp so it can be regularly built + + added isStopped() in LifeCycle and AbstractLifeCycle + + fixed isUserInRole checking for JAASUserRealm + + fixed ClassCastException in JAASUserRealm.setRoleClassNames(String[]) + + add a maven-jetty-jspc-plugin to do jspc precompilation + + added examples/test-jaas-webapp + + (re)make JAAS classes available to webapp classloader + + CGI example in test webapp + + Plugin shutdown context before stopping it. + + Added concept of bufferred endpoint + + Factored ErrorPageErrorHandler out of WebAppContext + + Refactored ErrorHandler to avoid statics + + Transforming classloader does not transform resources. + + SocketConnector closes all connections in doStop + + Improved charset handling in URLs + + minor optimization of bytes to UTF8 strings + + JETTY-112 ContextHandler checks if started + + JETTY-113 support optional query char encoding on requests + + JETTY-114 removed utf8 characters from code + + JETTY-115 Fixed addHeader + + added cometd chat demo + + JETTY-119 cleanedup Security optimizatoin + + Refactored session lifecycle and additional tests + + JETTY-121 init not called on externally constructed servlets + + JETTY-124 always initialize filter caches + + JETTY-126 handle content > Integer.MAX_VALUE + + JETTY-123 handle windows UNC paths + + JETYY-120 SelectChannelConnector closes all connections on stop + + Added ID constructor to AbstractSessionManager.Session + + Allow session cookie to be refreshed + + Added DataFilter configuration to cometd + + Added extras/setuid to support start as root + + Apply queryEncoding to getQueryString + + JETTY-118 ignore extra content after close. + + HttpGenerator can generate requests + + Ported HtAccessHandler + + Start of a client API + + Session IDs can change worker ID + + Default soLinger is -1 (disabled) + + AJP Connector + +Jetty-5.1.11 - 8 October 2006 + + fixed ByteBufferOutputStream capacity calculation + + Fixed AJP handling of certificate length (1494939) + + Fixed AJP chunk header (1507377) + + Fixed order of destruction event calls + + Fix to HttpOutputStream from M.Traverso + + Default servlet only uses setContentLength on wrapped responses + +Jetty-4.2.26 - 8 October 2006 + + Backport of AJP fixes + +jetty-6.0.1 - 24 September 2006 + + fixed isUserInRole checking for JAASUserRealm + + fixed ClassCastException in JAASUserRealm.setRoleClassNames(String[]) + + Improved charset handling in URLs + + Factored ErrorPageErrorHandler out of WebAppContext + + Refactored ErrorHandler to avoid statics + + JETTY-112 ContextHandler checks if started + + JETTY-114 removed utf8 characters from code + + JETTY-115 Fixed addHeader + + JETTY-121 init not called on externally constructed servlets + + Improved charset handling in URLs + + minor optimization of bytes to UTF8 strings + + JETTY-113 support optional query char encoding on requests + + JETTY-124 always initialize filter caches + + JETYY-120 SelectChannelConnector closes all connections on stop + +jetty-6.0.0 - 10 September 2006 + + SocketConnector closes all connections in doStop + + Conveniance builder methods for listeners and filters + + Transforming classloader does not transform resources. + + Plugin shutdown context before stopping it. + +jetty-6.0.0rc4 - 5 September 2006 + + bind jetty-env.xml entries to java:comp/env + + Fix for JETTY-107. Poor cast in SessionDump demo. + + Set charset on error pages + +jetty-6.0.0rc3 - 1 September 2006 + + pulled 6.0.0 branch + + turn URLConnection caching off when searching for tlds [JETTY-103] + + Move MailSessionReference to org.mortbay.naming.factories + + Less verbose handling of BadResources from bad URLs + + Avoid double error handling of Bad requests + + don't warn for content length on head requests + + temp fix for JETTY-104 (raised glassfish ISSUE-1044) hide + JSP forced path attribute + + Fixed JETTY-68. Complete request after sendRedirect + + Transferred the sslengine patch from the patches directory to extras + +jetty-6.0.0rc2 - 25 August 2006 + + use mvn -Dslf4j=false jetty:run to disable use of slf4j logging with jdk1.4/jsp2.0 + + added org.apache.commons.logging package to system classes that can't be overridden by a webapp classloader + + mvn -Djetty.port=x jetty:run uses port number given for the default connector + + Fixed NPE when no resource cache + + Refactored WebXmlConfiguration to allow custom web.xml resource + + Moved more utility packagtes to the util jar + + Direct buffer useage is optional + + Destroy HttpConnection to improve buffer pooling + + Timestamp in StdErrLog + +jetty-6.0.0rc1 - 16 August 2006 + + Support for binding References and Referenceables and javax.mail.Sessions in JNDI + + Added TransformingWebAppClassLoader for spring 2.0 byte code modification support + + Ensure classes come before dependencies for plugin [JETTY-90] + + Fixed FD leak for bad TCP acks. JETTY-63 + + new Server().addHandler(handler) no longer throws NPE [JETTY-87] + + Change path mapping so that a path spec of /foo/* does not match /foo.bar : JETTY-88 + + add <requestLog> config param to jetty plugin + + Improve Ssl config JETTY-85 JETTY-86 (TrustManager and SecureRandom are now configurable; better handling of null/default values) + + parse jsp-property-group in web.xml for additional JSP servlet mappings + + protected setContentType from being set during include + + added toString() on JAASUserPrincipal (JETTY-91) + + added modules/spring with XmlBeanFactory configuration + + removed support for lowResources from SelectChannelConnector + + added start of cometd implementation (JSON only) + + added start of grizzly connector + + removed org.mortbay. from context system classes configuration + + -DSTOP.PORT must be specified. + + moved optional modules to extras + + fixed bug that caused Response.setStatus to ignore the provided message + + refactored resource cache + + Allow direct filling of buffers for uncached static content. + + Added simple ResourceHandler and FileServer example + +jetty-6.0.0rc0 - 7 July 2006 + + change prefix from "jetty6" to just "jetty" for plugin: eg is now mvn jetty:run + + allow <key> or <name> in <systemProperty> for plugin + + simplified jetty.xml with new constructor injections + + added setters and getters on SessionManager API for session related config: cookie name, url parameter name, domain, max age and path. + + add ability to have a lib/ext dir from which to recursively add all jars and zips to the classpath + + patch to allow Jetty to use JSP2.1 from Glassfish instead of Jasper from Tomcat + + fixed classesDirectory param for maven plugin to be configurable + + ensure explicitly set tmp directory called "work" is not deleted on exit + + ensure war is only unpacked if war is newer than "work" directory + + change name of generated tmp directory to be "Jetty_"+host+"_"+port+"_"+contextpath+"_"+virtualhost + + Cleaned up idle expiry. + + Ssl algorithm taken from system property + + Added 8 random letters&digits to Jetty-generated tmp work dir name to ensure uniqueness + + Simplify runtime resolution of JSP library for plugin + + Ensure mvn clean cleans the build + + Do not wrap EofException with EofException + + reverse order for destroy event listeners + + added StatisticsHandler and statistics on Connector. + + Simplified Servlet Context API + + Added maximum limit to filter chain cache. + + refactor HttpChannelEndPoint in preparation for SslEngine + + ContextHandlerCollection addContext and setContextClass + + Discard excess bytes in header buffer if connection is closing + + Updated javax code from http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/javax@417727 + + Threadpool does not need to be a LifeCycle + + support graceful shutdown + + Added WebAppContextClassLoader.newInstance to better support exensible loaders. + + immutable getParameterMap() + + support <load-on-startup> for SingleThreadModel + + changed ServletContext.getResourcePaths() to not return paths containing double slashes + + fixed HttpGenerator convertion of non UTF-8: JETTY-82 + + added html module from jetty 5 - but deprecated until maintainer found + +jetty-6.0.0beta17 - 1/6/2006 + + Added config to disable file memory mapped buffers for windows + + Added Request.isHandled() + + Refactored Synchronization of SelectChannelConnector + + Recovered repository from Codehaus crash + + ContextHandler.setConnectors replace setHosts + + Connector lowResourceMaxIdleTime implemented. + + Default servlet checks for aliases resources + + Added clover reports and enough tests to get >50% coverage + + Fixed IE SSL issue. + + Implemented runAs on servlets + + Flush will flush all bytes rather than just some. + + Protected WEB-INF and META-INF + + don't reset headers during forward + + BoundedThreadPool.doStop waits for threads to complete + +jetty-6.0.0beta16 - 12/5/2006 + + remove a couple of System.err.printlns + + replace backwards compativle API in UrlEncoded + +jetty-6.0.0beta15 - 11/5/2006 + + Added Server attribute org.mortbay.jetty.Request.maxFormContentSize + + Renamed NotFoundHandler to DefaultHandler + + Added automatic scan of all WEB-INF/jetty-*.xml files for plugin + + Added <scanTargets> parameter to allow other locations to scan for plugin + + Major refactor to simplify Server and handler hierarchy + + setSendServerVersion method added to Server to control sending of Server: http header + + removed SelectBlockingChannelConnector (unmaintained) + + Improved HttpException + + Moved more resources to resources + + Added ThrottlingFilter and fixed race in Continuations + + Added taglib resources to 2.1 jsp api jar + + Reset of timer task clears expiry + + improved MBeanContainer object removal + + ContextHandler.setContextPath can be called after start. + + Fixed handling of params after forward + + Added --version to start.jar + + Added embedded examples + + Simplified DefaultServlet static content buffering + + readded BoundedThreadPool shrinking (and then fixed resulting deadlock) + + improved MBean names + + improved support for java5 jconsole + + Session scavenger threads from threadpool + + Thread names include URI if debug set + + don't accept partial authority in request line. + + enforce 204 and 304 have no content + +jetty-6.0.0beta14 - 9/4/2006 + + ignore dirs and files that don't exist in plugin scanner + + added support for stopping jetty using "java -jar start.jar --stop" + + added configurability for webdefault.xml in maven plugin + + adding InvokerServlet + + added ProxyServlet + + stop JDBCUserRealm coercing all credentials to String + + Change tmp dir of plugin to work to be in line with jetty convention + + Modify plugin to select JSP impl at runtime + + Use start.config to select which JSP impl at runtime based on jdk version + + Added JSP 2.1 APIs from apache + + Added Jasper 2.1 as jesper (jasper without JCL) + + Started readding logging to jesper using jdk logging + + fixed priority of port from url over host header + + implemented request.isUserInRole + + securityHandler removed if not used. + + moved test webapps to examples directory + + improved contentType handling and test harness + + fixed forward bug (treated as include) + + fixed HttpField iterator + + added jetty-util.jar module + + added reset to Continuation + + +jetty-6.0.0beta12 - 16/3/2006 + + Fixed maven plugin JNDI for redeploys + + Fixed tld discovery for plugin (search dependencies) + + Fixed JettyPlus for root contexts + + Fixed error handling in error page + + Added JSP2.0 demos to test webapp + + Upgraded jasper to 5.5.15 + + Added provider support to SslListener + + Log ERROR for runtimeExceptions + +jetty-6.0.0beta11 - 14/3/2006 + + added JAAS + + added webapp-specific JNDI entries + + added missing Configurations for maven plugin + + fixed FORM authentication + + moved dtd and xsd to standard javax location + + added patch to use joda-time + + refactored session ID management + + refactored configuration files and start() + + fixed ; decoding in URIs + + Added HttpURI and improved UTF-8 parsing. + + refactored writers and improved UTF-8 generation. + +jetty-6.0.0beta10 25/2/2006 + + Added support for java:comp/env + + Added support for pluggable transaction manager + + Forward masks include attributes and vice versa + + Fixed default servlet handling of includes + + Additional accessors for request logging + + added getLocalPort() to connector + + Fixed content-type for range requests + + Fix for sf1435795 30sec delay from c taylor + + Fix for myfaces and include with close + + Fix sf1431936 don't chunk the chunk + + Fix http://jira.codehaus.org/browse/JETTY-6. hi byte reader + + Updates javax to MR2 release + +jetty-6.0.0beta9 9/2/2006 + + PathMap for direct context mapping. + + Refactored chat demo and upgraded prototype.js + + Continuation cleanup + + Fixed unraw decoding of query string + + Fixed dispatch of wrapped requests. + + Fixed double flush of short content. + + Added request log. + + Added CGI servlet. + + Force a tempdir to be set. + + Force jasper scratch dir. + + fixed setLocale bug sf1426940 + + Added TLD tag listener handling. + +jetty-6.0.0beta8 24/1/2006 + + fixed dispatch of new session problem. sf:1407090 + + reinstated rfc2616 test harness + + Handle pipeline requests without hangs + + Removed queue from thread pool. + + improved caching of content types + + fixed bug in overloaded write method on HttpConnection (reported against Tapestry4.0) + + hid org.apache.commons.logging and org.slf4j packages from webapp + + maven-jetty6-plugin stopped transitive inclusion of log4j and + commons-logging from commons-el for jasper + + patch to remove spurious ; in HttpFields + + improve buffer return mechanism. + + conveniance addHandler removeHandler methods + + maven-jetty6-plugin: ensure compile is done before invoking jetty + + maven-jetty6-plugin: support all types of artifact dependencies + +Jetty-6.0.0Beta7 + + Fixed infinite loop with chunk handling + + Faster header name lookup + + removed singleton Container + + reduced info verbosity + + null dispatch attributes not in names + + maven-jetty6-plugin added tmpDirectory property + + maven-jetty6-plugin stopped throwing an error if there is no target/classes directory + +Jetty-6.0.0Beta6 + + Fixed issue with blocking reads + + Fixed issue with unknown headers + + optimizations + +Jetty-6.0.0Beta5 + + Moved to SVN + + Fixed writer char[] creations + + Added management module for mbeans + +Jetty-6.0.0Beta4 + + System property support in plugin + + CVE-2006-2758 Fixed JSP visibility security issue. + + Improved jetty-web.xml access to org.mortbay classes. + + Jasper 5.5.12 + +Jetty-6.0.0Beta3 + + Fixed error in block read + + Named dispatch. + + Fixed classloader issue with server classes + +Jetty-6.0.0Beta2 + + merged util jar back into jetty jar + + Simpler continuation API + + loosely coupled with JSP servlet + + loosely coupled with SLF4J + + Improved reuse of HttpField values and cookies. + + Improved buffer return + +Jetty-6.0.0Beta1 + + Servlet 2.5 API + + SSL connector + + maven2 plugin + + shutdown hook + + refactored start/stop + + Implemented all listeners + + Error pages + + Virtual hosts + + Multiple select sets + +Jetty-6.0.0Beta0 + + Maven 2 build + + Dispatcher parameters + + UTF-8 encoding for URLs + + Fixed blocking read + +Jetty-6.0.0APLPA3 + + Added demo for Continuations + + Jasper and associated libraries. + +Jetty-6.0.0ALPHA2 + + Continuations - way cool way to suspend a request and retry later. + + Dispatchers + + Security + +Jetty-6.0.0ALPHA1 + + Filters + + web.xml handling + +Jetty-6.0.0ALPHA0 + * Totally rearchitected and rebuilt, so 10 years of cruft could be removed! + * Improved "dependancy injection" and "inversion of control" design of components + * Improved "interceptor" design of handlers + * Smart split buffer design allows large buffers to only be allocated to active connections. The + resulting memory savings allow very large buffers to be used, which increases the chance of efficient + asynchronous flushing and of avoiding chunking. + * Optional use of NIO Buffering so that efficient direct buffers and memory mapped files can be + used. + * Optional use of NIO non-blocking scheduling so that threads are not allocated per connection. + * Optional use of NIO gather writes, so that for example a HTTP header and a memory mapped + * file may be sent as sent is a single operation. + - Missing Security + - Missing Request Dispatchers + - Missing web.xml based configuration + - Missing war support + + +Jetty-5.1.11RC0 - 5 April 2006 + + stop JDBCUserRealm forcing all credentials to be String + + force close with shutdownOutput for win32 + + NPE protection if desirable client certificates + + Added provider support to SslListener + + logging improvements for servlet and runtime exceptions + + Fixed AJP handling of ;jsessionid. + + improved contentType param handling + +Jetty-5.1.10 - 5 January 2006 + + Fixed path aliasing with // on windows. + + Fix for AJP13 with multiple headers + + Fix for AJP13 with encoded path + + Remove null dispatch attributes from getAttributeNames + + Put POST content default back to iso_8859_1. GET is UTF-8 still + +Jetty-4.2.25 - 4 Jan 2006 + + Fixed aliasing of // for win32 + +Jetty-5.1.9 - 7 December 2005 + + Fixed wantClientAuth(false) overriding netClientAuth(true) + +Jetty-6.0.0betaX - + + See http://jetty.mortbay.org/jetty6 for 6.0 releases + +Jetty-5.1.8 - 7 December 2005 + + Fixed space in URL issued created in 5.1.6 + +Jetty-5.1.7 - 7 December 2005 +Jetty-5.1.7rc0 - 6 December 2005 + + improved server stats + + char encoding for MultiPartRequest + + fixed merging of POST params in dispatch query string. + + protect from NPE in dispatcher getValues + + Updated to 2.6.2 xerces + + JSP file servlet mappings copy JspServlet init params. + + Prefix servlet context logs with org.mortbay.jetty.context + + better support for URI character encodings + + use commons logging jar instead of api jar. + +Jetty-5.1.6 - 18 November 2005 + + CVE-2006-2758 Fixed JSP visibility security issue. + + Improved jetty-web.xml access to org.mortbay classes. + +Jetty-5.1.5 - 10 November 2005 + + Improved shutdown hook + + Improved URL Decoding + + Improved mapping of JSP files. + +Jetty-5.1.5rc2 - 7 October 2005 + + Reverted dispatcher params to RI rather than spec behaviour. + + ProxyHandler can handle chained proxies + + unsynchronized ContextLoader + + ReFixed merge of Dispatcher params + + public ServerMBean constructor + + UTF-8 encoding for URLs + + Response.setLocale will set locale even if getWriter called. + +Jetty-5.1.5rc1 - 23 August 2005 + + upgraded to commons logging 1.0.4 + + Release commons logging factories when stopping context. + + Fixed illegal state with chunks and 100 continue - Tony Seebregts + + Fixed PKCS12Import input string method + + Fixed merge of Dispatcher parameters + + Encoded full path in ResourceHandler directory listing + + handle extra params after charset in header + + Fixed 100-continues with chunking and early commit + +Jetty-5.1.5rc0 - 16 August 2005 + + Fixed component remove memory leak for stop/start cycles + + Facade over commons LogFactory so that discovery may be avoided. + + Applied ciphersuite patch from tonyj + + Authenticators use servlet sendError + + CGI sets SCRIPT_FILENAME + + HttpTunnel timeout + + NPE protection for double stop in ThreadedServer + + Expect continues only sent if input is read. + +Jetty-5.1.4 - 5 June 2005 + + Fixed FTP close issue. + + setup MX4J with JDK1.5 in start.config + + set classloader during webapp doStop + + NPE protection in ThreadedServer + + ModelMBean handles null signatures + + Change JAAS impl to be more flexible on finding roles + +Jetty-5.1.4rc0 - 19 April 2005 + + ServletHttpContext correctly calls super.doStop. + + HttpServer delegates component handling to Container. + + Allow ServletHandler in normal HttpContext again. + + Stop start.jar putting current directory on classpath. + + More protection from null classloaders. + + Turn off web.xml validation for JBoss. + +Jetty-5.1.3 - 7 April 2005 + + Some minor code janitorial services + +Jetty-4.2.24 - 7 April 2005 + +Jetty-5.1.3rc4 - 31 March 2005 + + Moved servlet request wrapping to enterContextScope for geronimo security + + refixed / mapping for filters + + Allow XmlConfiguration to start with no object. + + updated to mx4j 3.0.1 + + rework InitialContextFactory to use static 'default' namespace + + make java:comp/env immutable for webapps as per J2EE spec + +Jetty-5.1.3rc3 - 20 March 2005 + + removed accidental enablement of DEBUG for JettyPlus jndi in log4j.properties + + fixed "No getter or setter found" mbean errors + +Jetty-5.1.3rc2 - 16 March 2005 + + Updated JSR154Filter for ERROR dispatch + + Fixed context to _context refactory error + +Jetty-5.1.3rc1 - 13 March 2005 + + Fixed typo in context-param handling. + + update to demo site look and feel. + + Fixed principal naming in FormAuthenticator + + JettyPlus updated to JOTM 2.0.5, XAPool 1.4.2 + +Jetty-4.2.24rc1 + + Fixed principal naming in FormAuthenticator + +Jetty-5.1.3rc0 - 8 March 2005 + + Flush filter chain caches on servlet/filter change + + Fixed rollover filename format bug + + Fixed JSR154 error dispatch with explicit pass of type. + + Allow system and server classes to be configured for context loader. + + IOException if EOF read during chunk. + + Fixed HTAccess crypt salt handling. + + Added simple xpath support to XmlParser + + Added TagLibConfiguration to search for listeners in TLDs. + + Added SslListener for 1.4 JSSE API. + + Fixed moderate load preventing ThreadPool shrinking. + + Added logCookie and logLatency support to NCSARequestLog + + Added new JAAS callback to allow extra login form fields in authentication + +Jetty-4.2.24rc0 - 8 March 2005 + + Back ported Jetty 5 ThreadedServer and ThreadPool + + Added logCookie and logLatency support to NCSARequestLog + +Jetty-5.1.2 - 18 January 2005 + + Added id and ref support to XmlConfiguration + + Cleaned up AbstractSessionManager synchronization. + + Fixed potential concurrent login problem with JAAS + + Apply patch #1103953 + +Jetty-4.2.23 - 16 January 2005 + + Cleaned up AbstractSessionManager synchronization. + + Fixed potential concurrent login problem with JAAS + +Jetty-5.1.2pre0 - 22 December 2004 + + Fixed case of Cookie parameters + + Support Secure and HttpOnly in session cookies + + Modified useRequestedID handling to only use IDs from other contexts + + Added global invalidation to AbstractSessionManager + + UnavailableException handling from handle + + Fixed suffix filters + +Jetty-4.2.23RC0 - 17 December 2004 + + LineInput handles readers with small internal buffer + + Added LogStream to capture stderr and stdout to logging + + Support Secure and HttpOnly in session cookies + + Build unsealed jars + +Jetty-5.1.1 - 1 December 2004 + +Jetty-5.1.1RC1 + + Some minor findbugs code cleanups + + Made more WebApplicationHandle configuration methods public. + + Fixed ordering of filters with multiple interleaved mappings. + + Allow double // within URIs + + Applied patch for MD5 hashed credentials for MD5 + +Jetty-5.1.1RC0 - 17 November 2004 + + fix for adding recognized EventListeners + + fix commons logging imports to IbmJsseListener + + added new contributed shell start/stop script + + excluded ErrorPageHandler from standard build in extra/jdk1.2 build + +Jetty-5.1.0 - 14 November 2004 + +Jetty-5.1.RC1 - 24 October 2004 + + Allow JSSE listener to be just confidential or just integral. + + Fixed NPE for null contenttype + + improved clean targets + + when committed setHeader is a noop rather than IllegalStateException + + Partially flush writers on every write so content length can be detected. + + Build unsealed jars + + default / mapping does not apply to Filters + + many minor cleanups suggested from figbug utility + + Allow multiple accepting threads + +Jetty-5.1.RC0 - 11 October 2004 + + Fixed many minor issues from J2EE 1.4 TCK testing +See sf.net bugs 1031520 - 1032205 + + Refactored, simplified and optimized HttpOutputStream + + LineInput handles readers with small internal buffer + + Added LogStream to capture stderr and stdout to logging + + Added filter chain cache + + Added JSR77 servlet statistic support + + Refactored webapp context configurations + + Added LifeCycle events and generic container. + + Upgraded to ant-1.6 for jasper + + Fixed HTAccessHandler + + JBoss 4.0.0 support + +Jetty-5.0.0 - 10 September 2004 + +Jetty-5.0.RC4 - 5 September 2004 + + Fixed configuration of URL alias checking + + JettyJBoss: Use realm-name from web.xml if present, otherwise use security-domain from jboss-web.xml + +Jetty-5.0.RC3 - 28 August 2004 + + DIGEST auth handles qop, stale and maxNonceAge. + + Less verbose warning for non validating xml parser. + + fixed jaas logout for jetty-jboss + + fixed deployment of ejb-link elements in web.xml with jboss + + Update to jasper 5.0.27 + + Added parameters for acceptQueueSize and lowResources level. + + Changed default URI encoding to UTF-8 + + Fixes to work with java 1.5 + + JettyPlus upgrade to XAPool 1.3.3. and HSQLDB 1.7.2 + + JettyPlus addition of pluggable DataSources + + Always say close for HTTP/1.0 non keep alive. + +Jetty-4.2.22 - 23 August + + fixed jaas logout for jetty-jboss integration + + fixed deployment of ejb-link elements in web.xml for jboss + + Added parameters for acceptQueueSize and lowResources level. + +Jetty-5.0.RC2 - 2 July 2004 + + Fixed DIGEST challenge delimiters + + HTAccess calls UnixCrypt correctly + + integrated jetty-jboss with jboss-3.2.4 + + Error dispatchers are always GET requests. + + OPTIONS works for all URLs on default servlet + + add JMX support for JettyPlus + + add listing of java:comp/env for webapp with JMX + + make choice of override of JNDI ENC entries: config.xml or web.xml + + Default servlet may use only pathInfo for resource + + Fixed session leak in j2ee + + Fixed no-role security constraint combination. + + Fix to use runas roles during servlet init and destroy + + Fixed JAAS logout + + HttpContext sendError for authentication errors + +Jetty-4.2.21 - 2 July 2004 + + integrated jetty-jboss with jboss-3.2.4 + + add JMX support for JettyPlus + + add listing of java:comp/env for webapp with JMX + + make choice of override of JNDI ENC entries: config.xml or web.xml + + Fixed JAAS logout + +Jetty-5.0.RC1 - 24 May 2004 + + Changed to apache 2.0 license + + added extra/etc/start-plus.config to set up main.class for jettyplus + + maxFormContentLength may be unlimited with <0 value + + Fixed HTTP tunnel timeout setting. + + Improved handling of exception from servlet init. + + FORM auth redirects to context on a re-auth + + Handle multiple virutal hosts from JBoss 3.2.4RC2 + +Jetty-4.2.20 - 22 May 2004 + + maxFormContentLength may be unlimited with <0 value + + Fixed HTTP tunnel timeout setting. + + Improved handling of exception from servlet init. + + FORM auth redirects to context on a re-auth + +Jetty-5.0.0RC0 - 7 April 2004 + + Updated JettyPlus to JOTM 1.4.3 (carol-1.5.2, xapool-1.3.1) + + ServletContext attributes wrap HttpContext attributes. + + Factored out XML based config from WebApplicationContext + + Improved RequestLog performance + + Fixed j2se 1.3 problem with HttpFields + + Default servlet respectes servlet path + + Fixed setCharacterEncoding for parameters. + + Fixed DOS problem + + Worked around bad jboss URL handler in XMLParser + + Forced close of connections over stop/start + + ProxiedFor field support added to NCSARequestLog + + Fixed Default servlet for non empty servlet paths + + Updated mx4j to V2 + + Updated jasper to 5.0.19 + + Changed dist naming convention to lowercase + +Jetty-4.2.20RC0 - 7 April 2004 + + Worked around bad jboss URL handler in XMLParser + + Forced close of connections over stop/start + + HttpFields protected headers + + ProxiedFor field support added to NCSARequestLog + + Fixed Default servlet for non empty servlet paths + + Changed dist naming convention to lowercase + +Jetty-4.2.19 - 19 Mar 2004 + + Fixed DOS attack problem + +Jetty-5.0.beta2 - 12 Feb 2004 + + Added skeleton JMX MBean for jetty plus + + Fixed HEAD with empty chunk bug. + + Fixed jetty.home/work handling + + Fixed setDate thread safety + + Fixed SessionManager init + + Improved low thread handling + + FileResource better handles non sun JVM + + Monitor closes socket before exit + + Updated to Japser 5.0.16 + + RequestDispatcher uses request encoding for query params + + Fixed busy loop in threadpool run + + Reorganized ServletHolder init + + Added log4j context repository to jettyplus + + NPE guard for no-listener junit deployment + + Added experimental NIO listeners again. + + fixed filter dispatch configuration. + + fixed lazy authentication with FORMs + +Jetty-4.2.18 - 1 Mar 2004 + + Added log4j context repository to jettyplus + + NPE guard for no-listener junit deployment + + Improved log performance + + Fixed j2se 1.3 problem with HttpFields + + Suppress some more IOExceptions + + Default servlet respectes servlet path + +Jetty-4.2.17 - 1 Feb 2004 + + Fixed busy loop in threadpool run + + Reorganized ServletHolder init + +Jetty-4.2.16 - 30 Jan 2004 + + Fixed setDate multi-cpu race + + Improved low thread handling + + FileResource better handles non sun JVM + + Fixed HttpTunnel for JDK 1.2 + + Monitor closes socket before exit + + RequestDispatcher uses request encoding for query params + + Update jasper to 4.1.29 + +Jetty-5.0.beta1 - 24 December 2003 + + SecurityConstraints not reset by stop() on custom context + + Fixed UnixCrypt handling in HTAccessHandler + + Added patch for JBoss realm single sign on + + Reorganized FAQ + + Env variables for CGI + + Removed support for old JBoss clustering + +Jetty-4.2.15 - 24 December 2003 + + SecurityConstraints not reset by stop() on custom context + + Fixed UnixCrypt handling in HTAccessHandler + + Added patch for JBoss realm single sign on + + Environment variables for CGI + + Removed support for old JBoss clustering + +Jetty-5.0.beta0 - 22 November 2003 + + Removed support for HTTP trailers + + PathMap uses own Map.Entry impl for IBM JVMs + + Use ${jetty.home}/work or WEB-INF/work for temp directories if present + + Protect ThreadPool.run() from interrupted exceptions + + Added org.mortbay.http.ErrorHandler for error pages. + + Fixed init race in HttpFields cache + + Allow per listener handlers + + Added MsieSslHandler to handle browsers that don't grok persistent SSL (msie 5) + + Respect content length when decoding form content. + + JBoss integration uses writer rather than stream for XML config handling + + Expire pages that contain set-cookie as per RFC2109 recommendation + + Updated jasper to 5.0.14beta + + Removed the CMR/CMP distributed session implementation + +Jetty-4.2.15rc0 - 22 November 2003 + + PathMap uses own Map.Entry impl for IBM JVMs + + Race in HttpFields cache + + Use ${jetty.home}/work or WEB-INF/work for temp directories if present + + Protect ThreadPool.run() from interrupted exceptions + + Added org.mortbay.http.ErrorHandler for error pages. + + JsseListener checks UserAgent for browsers that can't grok persistent SSL (msie5) + + Removed the CMR/CMP distributed session implementation + +Jetty-4.2.14 - 04 November 2003 + + respect content length when decoding form content. + + JBoss integration uses writer rather than stream for XML config handling + + Fixed NPE in SSO + + Expire pages that contain set-cookie as per RFC2109 recommendation + +Jetty-5.0.alpha3 - 19 October 2003 + + Reworked Dispatcher to better support cross context sessions. + + Use File.toURI().toURL() when jdk 1.2 alternative is available. + + Priority added to ThreadPool + + replaced win32 service with http://wrapper.tanukisoftware.org + + FileClassPath derived from walk of classloader hierarchy. + + Implemented security constraint combinations + + Set TransactionManager on JettyPlus datasources and pools + + Fixed null pointer if no sevices configured for JettyPlus + + Updated jasper and examples to 5.0.12 + + Lazy authentication if no auth constraint. + + Restore servlet handler after dispatch + + Allow customization of HttpConnections + + Failed requests excluded from duration stats + +Jetty-4.2.14RC1 - 19 October 2003 + + Reworked Dispatcher to better support cross context sessions. + + Added UserRealm.logout and arrange for form auth + + Allow customization of HttpConnections + + Failed requests excluded from + +Jetty-4.2.14RC0 - 7 October 2003 + + Correctly setup context classloader in cross context dispatch. + + Put a semi busy loop into proxy tunnels for IE problems + + Fixed handling of error pages for IO and Servlet exceptions + + updated extra/j2ee to jboss 3.2.1+ + + Use File.toURI().toURL() when jdk 1.2 alternative is available. + + cookie timestamps are in GMT + + Priority on ThreadedServer + + replaced win32 service with http://wrapper.tanukisoftware.org + + Build fileclasspath from a walk of the classloaders + + Set TransactionManager on JettyPlus datasources and pools + + Fixed null pointer if no sevices configured for JettyPlus + + Fixed comments with embedded double dashes on jettyplus.xml file + +Jetty-5.0.alpha2 - 19 September 2003 + + Use commons logging. + + Use log4j if extra is present. + + Improved JMX start. + + Update jakarta examples + + Correctly setup context classloader in cross context dispatch. + + Turn off validation without non-xerces errors + + minor doco updates. + + moved mailing lists to sourceforge. + + Put a semi busy loop into proxy tunnels for IE problems + + MultipartRequest supports multi value headers. + + XML entity resolution uses URLs not Resources + + Implemented ServletRequestListeners as optional filter. + + Moved error page mechanism to be webapp only. + + Fixed error page handling of IO and Servlet exceptions. + +Jetty-5.0.alpha1 - 12 August 2003 + + Switched to mx4j + + Improve combinations of Security Constraints + + Implemented locale encoding mapping. + + Synced with 4.2.12 + + Updated to Jasper 5.0.7 + + Server javadoc from war + +Jetty-5.0.alpha0 - 16 Jul 2003 + + Compiled against 2.4 servlet spec. + + Implemented remote/local addr/port methods + + Updated authentication so that a normal Principal is used. + + updated to jasper 5.0.3 + + Implemented setCharaterEncoding + + Implemented filter-mapping <dispatcher> element + + Implemented Dispatcher forward attributes. + +Jetty-4.2.12 - 12 August 2003 + + Restore max inactive interval for session manager + + Removed protection of org.mortbay.http attributes + + Fixed parameter ordering for a forward request. + + Fixed up HTAccessHandler + + Improved error messages from ProxyHandler + + Added missing S to some OPTIONS strings + + Added open method to threaded server. + + FORMAuthenticator does 403 with empty error page. + + Fixed MIME types for chemicals + + Padding for IE in RootNotFoundHandler + +Jetty-4.2.11 - 12 July 2003 + + Fixed race in servlet initialization code. + + Cookie params all in lower case. + + Simplified AJP13 connection handling. + + Prevent AJP13 from reordering query. + + Support separate Monitor class for start + + Branched for Jetty 5 development. + +Jetty-4.2.10 - 7 July 2003 + + Updates to JettyPlus documentation + + Updates to Jetty tutorial for start.jar, jmx etc + +Jetty-4.2.10pre2 - 4 July 2003 + + Improvement to JettyPlus config of datasources and connection pools + + Addition of mail service for JettyPlus + + Move to Service-based architecture for JettyPlus features + + Re-implementation of JNDI + + Many improvements in JettyPlus java:comp handling + + Allow multiple security-role-ref elements per servlet. + + Handle Proxy-Connection better + + Cleaned up alias handling. + + Confidential redirection includes query + + handle multiple security role references + + Fixed cookie handling for old cookies and safari + + Restricted ports in ProxyHandler. + + URI always encodes % + + Session statistics + + XmlConfiguration can get/set fields. + +Jetty-4.2.10pre1 - 2 June 2003 + + Fixed JSP code visibility problem introduced in Jetty-4.2.10pre0 + + Added stop.jar + + Added SSO implementation for FORM authentication. + + WebApplicationContext does not reassign defaults descriptor value. + + Fixed AJP13 protocol so that request/response header enums are correct. + + Fixed form auth success redirect after retry, introduced in 4.2.9rc1 + + Trace support is now optional (in AbstractHttpHandler). + + Deprecated forced chunking. + + Form authentication remembers URL over 403 + + ProxyHandler has improved test for request content + + Removed support of org.mortbay.http.User role. + + Fixed problem with shared session for inter context dispatching. + +Jetty-4.2.10pre0 - 5 May 2003 + + Moved Log4JLogSink into JettyPlus + + Added ability to override jetty startup class by using -Djetty.server on runline + + Incorporate JettyPlus jotm etc into build. + + Massive reorg of the CVS tree. + + Incorporate jetty extra and plus into build + + Integrate with JAAS + + Apply the append flag of RolloverFileOutputStream constructor. + + RolloverFileOutputStream manages Rollover thread. + + New look and feel for www site. + + Fixed table refs in JDBCUserRealm. + + Allow params in form auth URLs + + Updated to jasper jars from tomcat 4.1.24 + + Allow query params in error page URL. + + ProxyHandler checks black and white lists for Connect. + + Merge multivalued parameters in dispatcher. + + Fixed CRLF bug in MultiPartRequest + + Warn if max form content size is reached. + + getAuthType returns CLIENT_CERT instead of CLIENT-CERT. + + getAuthType maps the HttpServletRequest final strings. + + FORM Authentication is serializable for session distribution. + +Jetty-4.2.9 - 19 March 2003 + + Conditional headers check after /dir to /dir/ redirection. + +Jetty-4.2.9rc2 - 16 March 2003 + + Fixed build.xml for source release + + Made rfc2068 PUT/POST Continues support optional. + + Defaults descriptor has context classloader set. + + Allow dispatch to j_security_check + + Added X-Forwarded-For header in ProxyHandler + + Updated included jmx jars + +Jetty-4.2.9rc1 - 6 March 2003 + + Work around URLClassloader not handling leading / + + Dump servlet can load resources for testing now. + + Added trust manager support to SunJsseListener. + + Added support for client certs to AJP13. + + Cleaned up includes + + Removed checking for single valued headers. + + Optional 2.4 behaviour for sessionDestroyed notification. + + Stop proxy url from doing user interaction. + + Turn request log buffering off by default. + + Reduced default context cache sizes (Total 1MB file 100KB). + + ProxyHandler has black and white host list. + + Added requestlog to HttpContext. + + Allow delegated creation of WebApplication derivations. + + Check Data contraints before Auth constraints + +Jetty-4.2.8_01 - 18 February 2003 + + Patched first release of 4.2.8 with correct version number + + Fixed CGI servlet to handle multiple headers. + + Added a SetResponseHeadersHandler, can set P3P headers etc. + + ProxyHandler can handle multiple cookies. + + Fixed AdminServlet to handle changed getServletPath better. + + Default servlet can have own resourceBase. + + Rolled back SocketChannelListener to 4.2.5 version + + Added option to resolve remote hostnames. Defaults to off. + + Added MBeans for Servlets and Filters + + Moved ProxyHandler to the src1.4 tree + +Jetty-4.2.7 - 4 February 2003 + + Upgraded to JSSE 1.0.3_01 to fix security problem. + + Fixed proxy tunnel for non persistent connections. + + Relative sendRedirect handles trailing / correctly. + + Changed PathMap to conform to / getServletPath handling. + +Jetty-4.2.6 - 24 January 2003 + + Improved synchronization on AbstractSessionManager. + + Allow AJP13 buffers to be resized. + + Fixed LineInput problem with expanded buffers. + + ClientCertAuthentication updates request. + + Fixed rel sendRedirects for root context. + + Added HttpContext.setHosts to restrict context by real interface. + + Added MBeans for session managers + + Improved SocketChannelListener contributed. + + Added version to HttpServerMBean. + +Jetty-4.2.5 - 14 January 2003 + + Fixed pathParam bug for ;jsessionid + + Don't process conditional headers and ranges for includes + + Added Log4jSink in the contrib directory. + + Fixed requestedSessionId null bug. + +Jetty-4.2.4 - 4 January 2003 + + Fixed stop/start handling of servlet context + + Reuse empty LogSink slots. + + HTAccessHandler checks realm as well as htpassword. + + Clear context listeners after stop. + + Clear context attributes after stop. + + Use requestedSessionId as default session ID. + + Added MBeans for handlers + + Upgraded jasper to 4.1.18 + +Jetty-4.2.4rc0 - 12 December 2002 + + Simplified ThreadedServer + + Use ThreadLocals for ByteArrayPool to avoid synchronization. + + Use Version to reset HttpFields + + Cheap clear for HttpFields + + Fixed setBufferSize NPE. + + Cleaned up some unused listener throws. + + Handle chunked form data. + + Allow empty host header. + + Avoid optional 100 continues. + + Limit form content size. + + Handle = in param values. + + Added HttpContext.flushCache + + Configurable root context. + + RootNotFoundHandler to help when no context found. + + Update jasper to 4.1.16beta + + Fixed dir listing from jars. + + Dir listings in UTF8 + + Character encoding handling for GET requests. + + Removed container transfer encoding handling. + + Improved setBufferSize handling + + Code logs objects rather than strings. + + Better access to session manager. + + Fixed isSecure and getScheme for SSL over AJP13 + + Improved ProxyHandler to the point is works well for non SSL. + + Implemented RFC2817 CONNECT in ProxyHandler + + Added gzip content encoding support to Default and ResourceHandler + +Jetty-4.2.3 - 2 December 2002 + + Removed aggressive threadpool shrinkage to avoid deadlock on SMP machines. + + Fixed some typos + + Added links to Jetty Powered page + + Clean up of ThreadedServer.stop() + + Updated bat scripts + + Added PKCS12Import class to import PKCS12 key directly + + removed old HttpContext.setDirAllowed() + + added main() to org.mortbay.http.Version + + Check form authentication config for leading / + + Cleaner servlet stop to avoid extra synchronization on handle + + org.mortbay.http.HttpContext.FileClassPathAttribute + +Jetty-4.2.2 - 20 November 2002 + + Fixed sendRedirect for non http URLS + + Fixed URI query recycling for persistent connections + + Fixed handling of empty headers + + Added EOFException to reduce log verbosity on closed connections. + + Avoided bad buffer status after closed connection. + +Jetty-4.2.1 - 18 November 2002 + + Fixed bad optimization in UrlEncoding + + Re-enabled UrlEncoding test harnesses + +Jetty-4.2.0 - 16 November 2002 + + Fixed AJP13 buffer size. + + Fixed remove listener bug. + + Fixed include of Invoker servlet. + + Restrict 304 responses to seconds time resolution. + + Use IE date formatting for speed. + + Removed jasper source and just include jars from 4.1.12 + + Worked around JVM1.3 bug for JSPs + + Lowercase jsessionid for URLs only. + + Made NCSARequestLog easier to extend. + + Added definitions for RFC2518 WebDav response codes. + + Removed remaining non portable getBytes() calls + + Added upload demo to dump servlet. + + Many more optimizations. + +Jetty-4.1.4 - 16 November + + Fixed ContextLoader parent delegation bug + + Fixed remove SocketListener bug. + + Fixed Invoker servlet for RD.include + + Use IE date formatting for last-modified efficiency + + Last modified handling uses second resolution. + + Made NCSARequestLog simpler to extend. + +Jetty-4.2.0rc1 - 2 November 2002 + + Support default mime mapping defined by * + + Recycling of HttpFields class. + + Renamed Filter application methods. + + Fixed firstWrite after commit. + + Fixed ContextLoader parent delegation bug. + + Fixed problem setting the size of chunked buffers. + + Removed unused Servlet and Servlet-Engine headers. + + Fixed servletpath on invoker for named servlets. + + Fixed directory resource bug in JarFileResource. + + Improved handling of 2 byte encoded characters within forms. + +Jetty-4.2.0rc0 - 24 October 2002 + + Greg's birthday release! + + Added embedded iso8859 writer to HttpOutputStream. + + Removed duplicate classes from jar + + Fixed RolloverFileOutputStream without date. + + Fixed SessionManager initialization + + Added authenticator to admin.xml + + Fixed Session timeout NPE. + + Jetty-4.1.3 - 24 October 2002 + + Fixed RolloverFileOutputStream without date. + + Fixed SessionManager initialization + + Added authenticator to admin.xml + + Fixed Session timeout NPE. + +Jetty-4.0.6 - 24 October 2002 + + Clear interrupted status in ThreadPool + + Fixed forward query string handling + + fixed forward attribute handling for jsp-file servlets + + Fixed setCharacterEncoding to work with getReader + + Fixed handling of relative sendRedirect after forward. + + Fixed virtual hosts temp directories. + +Jetty-4.2.0beta0 - 13 October 2002 + + New ThreadPool implementation. + + New Buffering implementation. + + New AJP13 implementation. + + Removed Dispatcher dependancy on ServletHttpContext + + getNamedDispatcher(null) returns containers default servlet. + + unquote charset in content type + + Stop/Start filters in declaration order. + + Use "standard" names for default,jsp & invoker servlets. + + Fixed caching of directories to avoid shared buffers. + + Fixed bad log dir detection + + Fix Session invalidation bug + + Build without jmx + + 404 instead of 403 for WEB-INF requests + + FORM authentication sets 403 error page + + Allow %3B encoded ; in URLs + + Allow anonymous realm + + Update jasper to 4.1.12 tag + +Jetty-4.1.2 - 13 October 2002 + + Some AJP13 optimizations. + + getNamedDispatcher(null) returns containers default servlet. + + unquote charset in content type + + Stop/Start filters in declaration order. + + Use "standard" names for default,jsp & invoker servlets. + + Fixed caching of directories to avoid shared buffers. + + Fixed bad log dir detection + + Fix Session invalidation bug + + Build without jmx + + 404 instead of 403 for WEB-INF requests + + FORM authentication sets 403 error page + + Allow %3B encoded ; in URLs + + Allow anonymous realm + + Update jasper to 4.1.12 tag + +Jetty-4.1.1 - 30 September 2002 + + Fixed client scripting vulnerability with jasper2. + + Merged LimitedNCSARequestLog into NCSARequestLog + + Fixed space in resource name handling for jdk1.4 + + Moved launcher/src to src/org/mortbay/start + + Fixed infinite recursion in JDBCUserRealm + + Avoid setting sotimeout for optimization. + + String comparison of If-Modified-Since headers. + + Touch files when expanding jars + + Deprecated maxReadTime. + + Cache directory listings. + +Jetty-4.1.0 - 22 September 2002 + + Fixed CGI+windows security hole. + + Fixed AJP13 handling of mod_jk loadbalancing. + + Stop servlets in opposite order to start. + + NCSARequest log buffered default + + WEB-INF/classes before WEB-INF/lib + + Sorted directory listings. + + Handle unremovable tempdir. + + Context Initparams to control session cookie domain, path and age. + + ClientCertAuthenticator protected from null subjectDN + + Added LimitedNCSARequestLog + + Use javac -target 1.2 for normal classes + +Jetty-4.1.0RC6 - 14 September 2002 + + Don't URL encode FileURLS. + + Improved HashUserRealm doco + + FormAuthenticator uses normal redirections now. + + Encode URLs of Authentication redirections. + + Added logon.jsp for no cookie form authentication. + + Extended Session API to pass request for jvmRoute handling + + Fixed problem with AJP 304 responses. + + Improved look and feel of demo + + Cleaned up old debug. + + Added redirect to welcome file option. + +Jetty-4.1.0RC5 - 8 September 2002 + + AJP13Listener caught up with HttpConnection changes. + + Added commandPrefix init param to CGI + + More cleanup in ThreadPool for idle death. + + Improved errors for misconfigured realms. + + Implemented security-role-ref for isUserInRole. + +Jetty-4.1.0RC4 - 30 August 2002 + + Included IbmJsseListener in the contrib directory. + + Updated jasper2 to 4.1.10 tag. + + Reverted to 302 for all redirections as all clients do not understand 303 + + Created statsLock sync objects to avoid deadlock when stopping. + +Jetty-4.1.0RC3 - 28 August 2002 + + Fixed security problem for suffix matching with trailing "/" + + addWebApplications encodes paths to allow for spaces in file names. + + Improved handling of PUT,DELETE & MOVE. + + Improved handling of path encoding in Resources for bad JVMs + + Added buffering to request log + + Created and integrated the Jetty Launcher + + Made Resource canonicalize it's base path for directories + + Allow WebApplicationHandler to be used with other handlers. + + Added defaults descriptor to addWebApplications. + + Allow FORM auth pages to be within security constraint. + +Jetty-4.1.0RC2 - 20 August 2002 + + Conveninace setClassLoaderJava2Compliant method. + + Clear interrupted status in ThreadPool + + Fixed HttpFields cache overflow + + Improved ByteArrayPool to handle multiple sizes. + + Added HttpListener.bufferReserve + + Use system line separator for log files. + + Updated to Jasper2 (4_1_9 tag) + + Build ant, src and zip versions with the release + +Jetty-4.1.0RC1 - 11 August 2002 + + Fixed forward query string handling + + Fixed setCharacterEncoding to work with getReader + + Fixed getContext to use canonical contextPathSpec + + Improved the return codes for PUT + + Made HttpServer serializable + + Updated international URI doco + + Updated jasper to CVS snapshot 200208011920 + + Fixed forward to jsp-file servlet + + Fixed handling of relative sendRedirect after forward. + +Jetty-4.1.0RC0 - 31 July 2002 + + Fixed getRealPath for packed war files. + + Changed URI default charset back to ISO_8859_1 + + Restructured Password into Password and Credentials + + Added DigestAuthenticator + + Added link to a Jetty page in Korean. + + Added ExpiryHandler which can set a default Expires header. + +Jetty-4.0.5 - 31 July 2002 + + Fixed getRealPath for packed war files. + + Reversed order of ServletContextListener.contextDestroyed calls + + Fixed getRequestURI for RD.forward to return new URI. + +Jetty-4.1.B1 - 19 July 2002 + + Updated mini.http.jar target + + CGI Servlet, pass all HTTP headers through. + + CGI Servlet, catch and report program invocation failure status. + + CGI Servlet, fixed suffix mapping problem. + + CGI Servlet, set working directory for exec + + Support HTTP/0.9 requests again + + Reversed order of ServletContextListener.contextDestroyed calls + + Moved dynamic servlet handling to Invoker servlet. + + Moved webapp resource handling to Default servlet. + + Sessions create attribute map lazily. + + Added PUT,DELETE,MOVE support to webapps. + + Added 2.4 Filter dispatching support. + +Jetty-3.1.9 - 15 July 2002 + + Allow doHead requests to be forwarded. + + Fixed race in ThreadPool for minThreads <= CPUs + +Jetty-4.1.B0 - 13 July 2002 + + Added work around of JDK1.4 bug with NIO listener + + Moved 3rd party jars to $JETTY_HOME/ext + + Fixed ThreadPool bug when minThreads <= CPUs + + close rather than disable stream after forward + + Allow filter init to access servlet context methods. + + Keep notFoundContext out of context mapping lists. + + mod_jk FAQ + + Fixed close problem with load balancer. + + Stopped RD.includes closing response. + + RD.forward changes getRequestURI. + + NCSARequestLog can log to stderr + +Jetty-4.1.D2 - 24 June 2002 + + Support trusted external authenticators. + + Moved jmx classes from JettyExtra to here. + + Set contextloader during webapplicationcontext.start + + Added AJP13 listener for apache integration. + + Fixed ChunkableOutputStream close propagation + + Better recycling of HttpRequests. + + Protect session.getAttributeNames from concurrent modifications. + + Allow comma separated cookies and headers + + Back out Don't chunk 30x empty responses. + + Conditional header tested against welcome file not directory. + + Improved ThreadedServer stopping on bad networks + + Use ThreadLocals to avoid unwrapping in Dispatcher. + +Jetty-4.0.4 - 23 June 2002 + + Back out change: Don't chunk 30x empty responses. + + Conditional header tested against welcome file not directory. + + Improved ThreadedServer stopping on bad networks + +Jetty-4.0.3 - 20 June 2002 + + WebapplicationContext.start sets context loader + + Fixed close propagation of on-chunked output streams + + Force security disassociation. + + Better recycling of HttpRequests. + + Protect session.getAttributeNames from concurrent modifications. + + Allow session manager to be initialized when set. + + Fixed japanese locale + + Allow comma separated cookies and headers + +Jetty-4.1.D1 - 8 June 2002 + + Recycle servlet requests and responses + + Added simple buffer pool. + + Reworked output buffering to keep constant sized buffers. + + Don't chunk 30x empty responses. + + Fixed "" contextPaths in Dispatcher. + + Removed race for the starting of session scavaging + + Fixed /foo/../bar// bug in canonical path. + + Merged ResourceBase and SecurityBase into HttpContext + +Jetty-4.0.2 - 6 June 2002 + + Fixed web.dtd references. + + Fixed handler/context start order. + + Added OptimizeIt plug + + Fixed /foo/../bar// bug in canonical path. + + Don't chunk 30x empty responses. + + Fixed "" contextPaths in Dispatcher. + + Removed race for the starting of session scavaging + +Jetty-3.1.8 - 6 June 2002 + + Made SecurityConstraint.addRole() require authentication. + + Fixed singled threaded dynamic servlets + + Fixed no slash context redirection. + + Fixed /foo/../bar// bug in canonical path. + +Jetty-4.1.D0 - 5 June 2002 + + The 4.1 Series started looking for even more performance +within the 2.3 specification. + + Removed the HttpMessage facade mechanism + + BRAND NEW WebApplicationHandler & WebApplicationContext + + Added TypeUtil to reduce Integer creation. + + General clean up of the API for for MBean getters/setters. + + Experimental CLIENT-CERT Authenticator + + Restructured ResourceHandler into ResourceBase + + Fixed web.dtd references. + + Fixed handler/context start order. + + Added OptimizeIt plug. + +Jetty-4.0.1 - 22 May 2002 + + Fixed contextclassloader on ServletContextEvents. + + Support graceful stopping of context and server. + + Fixed "null" return from getRealPath + + OutputStreamLogSink config improvements + + Updated jasper to 16 May snapshot + +Jetty-4.0.1RC2 - 14 May 2002 + + Better error for jre1.3 with 1.4 classes + + Cleaned up RD query string regeneration. + + 3DES Keylength was being reported as 0. Now reports 168 bits. + + Implemented the run-as servlet tag. + + Added confidential and integral redirections to HttpListener + + Fixed ServletResponse.reset() to resetBuffer. + +Jetty-4.0.1RC1 - 29 April 2002 + + Improved flushing of chunked responses + + Better handling if no realm configured. + + Expand ByteBuffer full limit with capacity. + + Fixed double filtering of welcome files. + + Fixed FORM authentication auth of login page bug. + + Fixed setTempDirectory creation bug + + Avoid flushes during RequestDispatcher.includes + +Jetty-4.0.1RC0 - 18 April 2002 + + Updated Jasper to CVS snapshot from Apr 18 18:50:59 BST 2002 + + Pass pathParams via welcome file forward for jsessionid + + Extended facade interfaces to HttpResponse.sendError + + Moved basic auth handling to HttpRequest + + AbstractSessionManager sets contextClassLoader for scavanging + + Set thread context classloader for webapp load-on-startup inits + + Added extract arg to addWebApplications + + Fixed delayed response bug: +Stopped HttpConnection consuming input from timedout connection. + + DTD allows static "Get" and "Set" methods to be invoked. + +Jetty-4.0.0 - 22 March 2002 + + Updated tutorial configure version + + Added IPAddressHandler for IP restrictions + + Updated contributors. + + Minor documentation updates. + + Jetty.sh cygwin support + +Jetty-4.0.RC3 - 20 March 2002 + + Fixed ZZZ offset format to +/-HHMM + + Updated history + + JDBCUserRealm instantiates JDBC driver + + ContextInitialized notified before load-on-startup servlets. + + Suppress WriterOutputStream warning. + + Changed html attribute order for mozilla quirk. + +Jetty-4.0.RC2 - 12 March 2002 + + Fixed security constraint problem with // + + Fixed version for String XmlConfigurations + + Fixed empty referrer in NCSA log. + + Dont try to extract directories + + Added experimental nio SocketChannelListener + + Added skeleton load balancer + + Fixed column name in JDBCUserRealm + + Remove last of the Class.forName calls. + + Removed redundant sessionID check. + + Security FAQ + + Disabled the Password EXEC mechanism by default + +Jetty-3.1.7 - 12 Mar 2002 + + Fixed security problem with constraints being bypassed with // +in URLs + +Jetty-4.0.RC1 - 06 March 2002 + + Added ContentEncodingHandler for compression. + + Fixed filter vs forward bug. + + Improved efficiency of quality list handling + + Simplified filter API to chunkable streams + + XmlParser is validating by default. use o.m.x.XmlParser.NotValidating property to change. + + contextDestroyed event sent before destruction. + + Minor changes to make HttpServer work on J2ME CVM + + Warn if jdk 1.4 classes used on JVM <1.4 + + WebApplication will use ContextLoader even without WEB-INF directory. + + FileResource depends less on FilePermissions. + + Call response.flushBuffer after service to flush wrappers. + + Empty suffix for temp directory. + + Contributors list as an image to prevent SPAM! + + Fixed recursive DEBUG loop in Logging. + + Updated jetty.sh to always respect arguments. + +Jetty-3.1.6 - 28 Feb 2002 + + Implemented 2.3 clarifications to security constraint semantics +PLEASE REVIEW YOUR SECURITY CONSTRAINTS (see README). + + Empty suffix for temp directory. + + Fixed HttpFields remove bug + + Set Listeners default scheme + + LineInput can handle any sized marks + + HttpResponse.sendError makes a better attempt at finding an error page. + + Dispatcher.forward dispatches directly to ServletHolder to avoid +premature exception handling. + +Jetty-4.0.B2 - 25 Feb 2002 + + Minor Jasper updates + + Improve handling of unknown URL protocols. + + Improved default jetty.xml + + Adjust servlet facades for welcome redirection + + User / mapping rather than /* for servlet requests to static content + + Accept jetty-web.xml or web-jetty.xml in WEB-INF + + Added optional JDK 1.4 src tree + + o.m.u.Frame uses JDK1.4 stack frame handling + + Added LoggerLogSink to direct Jetty Logs to JDK1.4 Log. + + Start ServletHandler as part of the FilterHandler start. + + Simplified addWebApplication + + Added String constructor to XmlConfiguration. + + Added org.mortbay.http.JDBCUserRealm + + Init classloader for JspServlet + + Slightly more agressive eating unused input from non persistent connection. + +Jetty-4.0.B1 - 13 Feb 2002 + + WriterOutputStream so JSPs can include static resources. + + Suppress error only for IOExceptions not derivitives. + + HttpConnection always eats unused bodies + + Merged HttpMessage and Message + + LineInput waits for LF after CF if seen CRLF before. + + Added setClassLoader and moved getFileClassPath to HttpContext + + Updated examples webapp from tomcat + + getRequestURI returns encoded path + + Servlet request destined for static content returns paths as default servlet + +Jetty-4.0.B0 - 4 Feb 2002 + + Implemented 2.3 security constraint semantics +PLEASE REVIEW YOUR SECURITY CONSTRAINTS (see README). + + Stop and remove NotFound context for HttpServer + + HttpContext destroy + + Release process builds JettyExtra + + Welcome files may be relative + + Fixed HttpFields remove bug + + Added Array element to XMLConfiguration + + Allow listener schemes to be set. + + Added index links to tutorial + + Renamed getHttpServers and added setAnonymous + + Updated crimson to 1.1.3 + + Added hack for compat tests in watchdog for old tomcat stuff + + Added AbstractSessionManager + + Support Random Session IDs in HashSessionManager. + + Common handling of TRACE + + Updated tutorial and FAQ + + Reduce object count and add hash width to StringMap + + Factor out RolloverFileOutputStream from OutputStreamLogSink + + Remove request logSink and replace with RequestLog using +RolloverFileOutputStream + + Handle special characters in resource file names better. + + Welcome file dispatch sets requestURI. + + Removed triggers from Code. + +Jetty-4.0.D4 - 14 Jan 2002 + + Prevent output after forward + + Handle ServletRequestWrappers for Generic Servlets + + Improved handling of UnavailableException + + Extract WAR files to standard temp directory + + URI uses UTF8 for % encodings. + + Added BlueRibbon campaign. + + RequestDispatcher uses cached resources for include + + Improved HttpResponsse.sendError error page matching. + + Fixed noaccess auth demo. + + FORM auth caches UserPrincipal + + Added isAuthenticated to UserPrincipal + +Jetty-4.0.D3 - 31 Dec 2001 + + Fixed cached filter wrapping. + + Fixed getLocale again + + Patch jasper to 20011229101000 + + Removed limits on mark in LineInput. + + Corrected name to HTTP_REFERER in CGI Servlet. + + Fixed UrlEncoding for % + combination. + + Generalized temp file handling + + Fixed ContextLoader lib handling. + + DateCache handles misses better. + + HttpFields uses DateCache more. + + Moved admin port to 8081 to avoid JBuilder + + Made Frame members private and fixed test harness + + cookies with maxAge==0 expire on 1 jan 1970 + + setCookie always has equals + +Jetty-3.1.5 - 11 Dec 2001 + + setCookie always has equals for cookie value + + cookies with maxage==0 expired 1 jan 1970 + + Fixed formatting of redirectURLs for NS4.08 + + Fixed ChunableInputStream.resetStream bug. + + Ignore IO errors when trying to persist connections. + + Allow POSTs to static resources. + + stopJob/killStop in ThreadPool to improve stopping +ThreadedServer on some platforms. + + Branched at Jetty_3_1 + +Jetty-4.0.D2 - 2 Dec 2001 + + Removed most of the old doco, which needs to be +rewritten and added again. + + Restructured for demo and test hierarchies + + Fixed formatting of redirect URLs. + + Removed ForwardHandler. + + Removed Demo.java (until updated). + + Made the root context a webapplication. + + Moved demo docroot/servlets to demo directory + + added addWebApplications auto discovery + + Disabled last forwarding by setPath() + + Removed Request set methods (will be replaced) + + New event model to decouple from beans container. + + Better handling of charset in form encoding. + + Allow POSTs to static resources. + + Fixed ChunableInputStream.resetStream bug. + + Ignore IO errors when trying to persist connections. + + Allow POSTs to static resources. + + stopJob/killStop in ThreadPool to improve stopping +ThreadedServer on some platforms. + +Jetty-4.0.D1 - 14 Nov 2001 + + Fixed ServletHandler with no servlets + + Fixed bug with request dispatcher parameters + + New ContextLoader implementation. + + New Dispatcher implementation + + Added Context and Session Event Handling + + Added FilterHolder + + Added FilterHandler + + Changed HandlerContext to HttpContext + + Simplified ServletHandler + + Removed destroy methods + + Simplified MultiMap + +Jetty-4.0.D0 - 06 Nov 2001 + + Branched from Jetty_3_1 == Jetty_3_1_4 + + 2.3 Servlet API + + 1.2 JSP API + + Jasper from tomcat4 + + Start SessionManager abstraction. + + Added examples webapp from tomcat4 + + Branched at Jetty_3_1 + +Jetty-3.1.4 - 06 Nov 2001 + + Added RequestLogFormat to allow extensible request logs. + + Support the ZZZ timezone offset format in DateCache + + HTAccessHandler made stricter on misconfiguration + + Generate session unbind events on a context.stop() + + Default PathMap separator changed to ":," + + PathMap now ignores paths after ; or ? characters. + + Remove old stuff from contrib that had been moved to extra + + getRealPath accepts \ URI separator on platforms using \ file separator. + +Jetty-3.1.3 - 26 Oct 2001 + + Fix security problem with trailing special characters. +Trailing %00 enabled JSP source to be viewed or other +servlets to be bypassed. + + Fixed several problems with external role authentication. +Role authentication in JBoss was not working correctly and +there were possible object leaks. The fix required an API +change to UserPrinciple and UserRealm. + + Allow a per context UserRealm instance. + + Upgraded JSSE to 1.0.2 + + Improved FORM auth handling of role failure. + + Improved Jasper debug output. + + Improved ThreadedServer timeout defaults + + Fixed binary files in CVS + + Fixed Virtual hosts to case insensitive. + + PathMap spec separator changed from ',' to ':'. May be set with +org.mortbay.http.PathMap.separators system property. + + Correct dispatch to error pages with javax attributes set. + +Jetty-3.1.2 - 13 Oct 2001 + + Fixed double entry on PathMap.getMatches + + Fixed servlet handling of non session url params. + + Fixed attr handling in XmlParser.toString + + Fixed request log date formatting + + Fixed NotFoundHandler handling of unknown methods + + Fixed FORM Authentication username. + + Fixed authentication role handling in FORM auth. + + FORM authentication passes query params. + + Added short delay to shutdown hook for JVM bug. + + Added ServletHandler.sessionCount() + + Added run target to ant + + Changed 304 responses for Opera browser. + + Changed JSESSIONID to jsessionid + + Log OK state after thread low warnings. + + Changed unsatisfiable range warnings to debug. + + Further improvements in handling of shutdown. + +Jetty-3.1.1 - 27 Sep 2001 + + Fixed jar manifest format - patched 28 Sep 2001 + + Removed JDK 1.3 dependancy + + Fixed ServletRequest.getLocale(). + + Removed incorrect warning for WEB-INF/lib jar files. + + Handle requestdispatcher during init. + + Use lowercase tags in html package to be XHTML-like. + + Correctly ignore auth-constraint descriptions. + + Reduced verbosity of bad URL errors from IIS virus attacks + +Jetty-3.1.0 - 21 Sep 2001 + + Added long overdue Tutorial documentation. + + Improved some other documentation. + + Fix ResourceHandler cache invalidate. + + Fix ServletResponse.setLocale() + + Fix reuse of Resource + + Fix Jetty.bat for spaces. + + Fix .. handling in URI + + Fix REFFERER in CGI + + Fix FORM authentication on exact patterns + + Fix flush on stop bug in logs. + + Fix param reading on CGI servlet + + New simplified jetty.bat + + Improved closing of listeners. + + Optimized List creation + + Removed win32 service.exe + + Added HandlerContext.registerHost + +Jetty-3.1.rc9 - 02 Sep 2001 + + Added bin/orgPackage.sh script to change package names. + + Changed to org.mortbay domain names. + + Form auth login and error pages relative to context path. + + Fixed handling of rel form authentication URLs + + Added support for Nonblocking listener. + + Added lowResourcePersistTimeMs for more graceful degradation when +we run out of threads. + + Patched Jasper to 3.2.3. + + Added handlerContext.setClassPaths + + Fixed bug with non cookie sessions. + + Format cookies in HttpFields. + +Jetty-3.1.rc8 - 22 Aug 2001 + + Support WEB-INF/web-jetty.xml configuration extension for webapps + + Allow per context log files. + + Updated sponsors page + + Added HttpServer statistics + + Don't add notfound context. + + Many major and minor optimizations: +* ISO8859 conversion +* Buffer allocation +* URI pathAdd +* StringMap +* URI canonicalPath +* OutputStreamLogSink replaces WriterLogSink + + Separation of URL params in HttpHandler API. + + Fixed handling of default mime types + + Allow contextpaths without leading / + + Removed race from dynamic servlet initialization. + +Jetty-3.1.rc7 - 9 Aug 2001 + + Fix bug in sendRedirect for HTTP/1.1 + + Added doco for Linux port redirection. + + Don't persist connections if low on threads. + + Added shutdown hooks to Jetty.Server to trap Ctl-C + + Fixed bug with session ID generation. + + Added FORM authentication. + + Remove old context path specs + + Added UML diagrams to Jetty architecture documentation. + + Use Enumerations to reduce conversions for servlet API. + + Optimized HttpField handling to reduce object creatiyon. + + ServletRequest SSL attributes in line with 2.2 and 2.3 specs. + + Dump Servlet displays cert chains + + Fixed redirect handling by the CGI Servlet. + + Fixed request.getPort for redirections from 80 + + Added utility methods to ServletHandler for wrapping req/res pairs. + + Added method handling to HTAccessHandler. + + ServletResponse.sendRedirect puts URLs into absolute format. + +Jetty-3.1.rc6 - 10 Jul 2001 + + Avoid script vulnerability in error pages. + + Close persistent HTTP/1.0 connections on missing Content-Length + + Use exec for jetty.sh run + + Improved SSL debugging information. + + KeyPairTool can now load cert chains. + + KeyPairTool is more robust to provider setup. + + Fixed bug in B64Code. Optimised B64Code. + + Added Client authentication to the JsseListener + + Fixed a problem with Netscape and the acrobat plugin. + + Improved debug output for IOExceptions. + + Updated to JSSE-1.0.2, giving full strength crypto. + + Win32 Service uses Jetty.Server instead of HttpServer. + + Added getResource to HandleContext. + + WebApps initialize resourceBase before start. + + Fixed XmlParser to handle xerces1.3 OK + + Added Get element to the XmlConfiguration class. + + Added Static calls to the XmlConfiguration class. + + Added debug and logging config example to demo.xml + + Moved mime types and encodings to property bundles. + + RequestDispatch.forward() uses normal HandlerContext.handle() +path if possible. + + Cleaned up destroy handling of listeners and contexts. + + Removed getConfiguration from LifeCycleThread to avoid JMX clash. + + Cleaned up Win32 Service server creation. + + Moved gimp image files to Jetty3Extra + +Jetty-3.1.rc5 - 1 May 2001 + + Added build target for mini.jetty.jar - see README. + + Major restructing of packages to separate servlet dependancies. + c.m.XML - moved XML dependant classes from c.m.Util + c.m.HTTP - No servlet or XML dependant classes: + c.m.Jetty.Servlet - moved from c.m.HTTP.Handler.Servlet + c.m.Servlet - received some servlet dependant classes from HTTP. + + Added UnixCrypt support to c.m.U.Password + + Added HTaccessHandler to authenitcate against apache .htaccess files. + + Added query param handling to ForwardHandler + + Added ServletHandler().setUsingCookies(). + + Optimized canonical path calculations. + + Warn and close connections if content-length is incorrectly set. + + Request log contains bytes actually returned. + + Fixed handling of empty responses at header commit. + + Fixed ResourceHandler handling of ;JSESSIONID + + Fixed forwarding to null pathInfo requests. + + Fixed handling of multiple cookies. + + Fixed EOF handling in MultiPartRequest. + + Fixed sync of ThreadPool idleSet. + + Fixed jetty.bat classpath problems. + +Jetty-3.0.6 - 26 Apr 2001 + + Fixed handling of empty responses at header commit. + + Fixed ResourceHandler handling of ;JSESSIONID + + Fixed forwarding to null pathInfo requests. + + Fixed EOF handlding in MultiPartRequest. + + Fixed sync of ThreadPool idleSet. + + Load-on-startup the JspServlet so that precompiled servlets work. + +Jetty-3.1.rc4 - 14 April 2001 + + Include full versions of JAXP and Crimson + + Added idle thread getter to ThreadPool. + + Load-on-startup the JspServlet so that precompiled servlets work. + + Removed stray debug println from the Frame class. + +Jetty-3.0.5 - 14 Apr 2001 + + Branched from 3.1 trunk to fix major errors + + Fixed LineInput bug EOF + + Improved flush ordering for forwarded requests. + + Turned off range handling by default until bugs resolved + + Don't chunk if content length is known. + + fixed getLocales handling of quality params + + Created better random session ID + + Resource handler strips URL params like JSESSION. + + Fixed session invalidation unbind notification to conform with spec + + Load-on-startup the JspServlet so that precompiled servlets work. + +Jetty-3.1.rc3 - 9 April 2001 + + Implemented multi-part ranges so that acrobat is happy. + + Simplified multipart response class. + + Improved flush ordering for forwarded requests. + + Improved ThreadPool stop handling + + Frame handles more JIT stacks. + + Cleaned up handling of exceptions thrown by servlets. + + Handle zero length POSTs + + Start session scavenger if needed. + + Added ContentHandler Observer to XmlParser. + + Allow webapp XmlParser to be observed for ejb-ref tags etc. + + Created better random session ID + +Jetty-3.1.rc2 - 30 Mar 2001 + + Lifecycle.start() may throw Exception + + Added MultiException to throw multiple nested exceptions. + + Improved logging of nested exceptions. + + Only one instance of default MIME map. + + Use reference JAXP1.1 for XML parsing.y + + Version 1.1 of configuration dtd supports New objects. + + Improved handling of Primitive classes in XmlConfig + + Renamed getConnection to getHttpConnection + + fixed getLocales handling of quality params + + fixed getParameter(name) handling for multiple values. + + added options to turn off ranges and chunking to support acrobat requests. + +Jetty-3.1.rc1 - 18 Mar 2001 + + Moved JMX and SASL handling to Jetty3Extra release + + Fixed problem with ServletContext.getContext(uri) + + Added Jetty documentation pages from JettyWiki + + Cleaned up build.xml script + + Minimal handling of Servlet.log before initialization. + + Various SSL cleanups + + Resource handler strips URL params like JSESSION. + +Jetty-3.1.rc0 - 23 Feb 2001 + + Added JMX management framework. + + Use Thread context classloader as default context loader parent. + + Fixed init order for unnamed servlets. + + Fixed session invalidation unbind notification to conform with spec + + Improved handling of primitives in utilities. + + Socket made available via HttpConnection. + + Improved InetAddrPort and ThreadedServer to reduce DNS lookups. + + Dynamic servlets may be restricted to Context classloader. + + Reoganized packages to allowed sealed Jars + + Changed getter and setter methods that did not conform to beans API. + +Jetty-3.0.4 - 23 Feb 2001 + + Fixed LineInput bug with split CRLF. + +Jetty-3.0.3 - 3 Feb 2001 + + Fixed pipelined request buffer bug. + + Handle empty form content without exception. + + Allow Log to be disabled before initialization. + + Included new Jetty Logo + + Implemented web.xml servlet mapping to a JSP + + Fixed handling of directories without trailing / + +Jetty-3.0.2 - 13 Jan 2001 + + Replaced ResourceHandler FIFO cache with LRU cache. + + Greatly improved buffering in ChunkableOutputStream + + Padded error bodies for IE bug. + + Improved HTML.Block efficiency + + Improved jetty.bat + + Improved jetty.sh + + Handle unknown status reasons in HttpResponse + + Ignore included response updates rather than IllegalStateException + + Removed classloading stats which were causing circular class loading problems. + + Allow '+' in path portion of a URL. + + Try ISO8859_1 encoding if can't find ISO-8859-1 + + Restructured demo site pages. + + Context specific security permissions. + + Added etc/jetty.policy as example policy file. + +Jetty-3.0.1 - 20 Dec 2000 + + Fixed value unbind notification for session invalidation. + + Removed double null check possibility from ServletHolder + +Jetty-3.0.0 - 17 Dec 2000 + + Improved jetty.sh logging + + Improved dtd resolution in XML parser. + + Fixed taglib parsing + + Fixed rel path handling in default configurations. + + Optional extract war files. + + Fixed WriterLogSink init bug + + Use inner class to avoid double null check sync problems + + Fixed rollover bug in WriterLogSink + +Jetty-3.0.0.rc8 - 13 Dec 2000 + + Optional alias checking added to FileResource. Turned on by default +on all platforms without the "/" file separator. + + Mapped *.jsp,*.jsP,*.jSp,*.jSP,*.Jsp,*.JsP,*.JSp,*.JSP + + Tidied handling of ".", ".." and "//" in resource paths + + Protected META-INF as well as WEB-INF in web applications. + + Jetty.Server catches init exceptions per server + + getSecurityHandler creates handler at position 0. + + SysV unix init script + + Improved exit admin handling + + Change PathMap handling of /* to give precedence over suffix mapping. + + Forward to welcome pages rather than redirect. + + Removed special characters from source. + + Default log options changed if in debug mode. + + Removed some unused variables. + + Added ForwardHandler + + Removed security constraint on demo admin server. + + Patched jasper to tomcat 3.2.1 + +Jetty-3.0.0.rc7 - 02 Dec 2000 + + Fixed security problem with lowercase WEB-INF uris on windows. + + Extended security constraints (see README and WebApp Demo). + + Set thread context classloader during handler start/stop calls. + + Don't set MIME-Version in response. + + Allow dynamic servlets to be served from / + + Handle multiple inits of same servlet class. + + Auto add a NotFoundHandler if needed. + + Added NotFoundServlet + + Added range handling to ResourceHandler. + + CGI servlet handles not found better. + + WEB-INF protected by NotFoundServlet rather than security constraint. + + PUT, MOVE disabled in WebApplication unless defaults file is passed. + + Conditionals apply to puts, dels and moves in ResourceHandler. + + URIs accept all characters < 0xff. + + Set the AcceptRanges header. + + Depreciated RollOverLogSink and moved functionality to an +improved WriterLogSink. + + Changed log options to less verbose defaults. + + ThreadedServer.forceStop() now makes a connection to itself to handle non-premptive close. + + Double null lock checks use ThreadPool.__nullLockChecks. + + Split Debug servlet out of Admin Servlet. + + Added Com.mortbay.HTTP.Handler.Servlet.Context.LogSink attribute +to Servlet Context. If set, it is used in preference to the system log. + +Jetty-3.0.0.rc6 - 20 Nov 2000 + + RequestDispatcher.forward() only resets buffer, not headers. + + Added ServletWriter that can be disabled. + + Resource gets systemresources from it's own classloader. + + don't include classes in release. + + Allow load-on-startup with no content. + + Fixed RollOverFileLogSink bug with extra log files. + + Improved Log defaults + + Don't start HttpServer log sink on add. + + Admin servlet uses unique links for IE. + + Added Win32 service support + + Reduced risk of double null check sync problem. + + Don't set connection:close for normal HTTP/1.0 responses. + + RequestDispatcher new queries params replace old. + + Servlet init order may be negative. + + Corrected a few of the many spelling mistakes. + + Javadoc improvements. + + Webapps serve dynamics servlets by default. + + Warn for missing WEB-INF or web.xml + + Sessions try version 1 cookies in set-cookie2 header. + + Session cookies are given context path + + Put extra server and servlet info in header. + + Version details in header can be suppressed with System property +java.com.mortbay.HTTP.Version.paranoid + + Prevent reloading dynamic servlets at different paths. + + Implemented resource aliases in HandlerContext - used by Servlet Context + + Map tablib configuration to resource aliases. + + Implemented customizable error pages. + + Simple stats in ContextLoader. + + Allow HttpMessage state to be manipulated. + + Allow multiple set cookies. + +Jetty-3.0.0.rc5 - 12 Nov 2000 + + Default writer encoding set by mime type if not explicitly set. + + Relax webapp rules, accept no web.xml or no WEB-INF + + Pass flush through ServletOut + + Avoid jprobe race warnings in DateCache + + Allow null cookie values + + Servlet exceptions cause 503 unavailable rather than 500 server error + + RequestDispatcher can dispatch static resources. + + Merged DynamicHandler into ServletHandler. + + Added debug form to Admin servlet. + + Implemented servlet load ordering. + + Moved JSP classpath hack to ServletHolder + + Removed Makefile build system. + + Many javadoc cleanups. + +Jetty-2.4.9 - 12 Nov 2000 + + HttpListener ignore InterruptedIOExceptions + + HttpListener default max idle time = 20s + + HtmlFilter handles non default encodings + + Writing HttpRequests encodes path + + HttpRequest.write uses ISO8859_1 encoding. + +Jetty-3.0.0.rc4 - 6 Nov 2000 + + Provide default JettyIndex.properties + + Fixed mis-synchronization in ThreadPool.stop() + + Fixed mime type mapping bug introduced in RC3 + + Ignore more IOExceptions (still visible with debug). + +Jetty-3.0.0.rc3 - 5 Nov 2000 + + Changed ThreadPool.stop for IBM 1.3 JVM + + Added bin/jetty.sh run script. + + upgraded build.xml to ant v1.2 + + Set MaxReadTimeMs in all examples + + Further clean up of the connection close actions + + Moved unused classes from com.mortbay.Util to com.mortbay.Tools in +new distribution package. + + Handle mime suffixes containing dots. + + Added gz tgz tar.gz .z mime mappings. + + Fixed default mimemap initialization bug + + Optimized persistent connections by recycling objects + + Added HandlerContext.setHttpServerAccess for trusted contexts. + + Set the thread context class loader in HandlerContext.handle + + Prevent servlet setAttribute calls to protected context attributes. + + Removed redundant context attributes. + + Implemented mime mapping in webapplications. + + Strip ./ from relative resources. + + Added context class path dynamic servlet demo + +Jetty-3.0.0.rc2 - 29 Oct 2000 + + Replaced ISO-8859-1 literals with StringUtil static + + Pass file based classpath to JspServlet (see README). + + Prevented multiple init of ServletHolder + + ErlEncoding treats params without values as empty rather than null. + + Accept public DTD for XmlConfiguration (old style still supported). + + Cleaned up non persistent connection close. + + Accept HTTP/1. as HTTP/1.0 (for netscape bug). + + Fixed thread name problem in ThreadPool + +Jetty-3.0.0.rc1 - 22 Oct 2000 + + Added simple admin servlet. + + Added CGI to demo + + Added HashUserRealm and cleaned up security constraints + + Added Multipart request and response classes from Jetty2 + + Moved and simplified ServletLoader to ContextLoader. + + Initialize JSP with classloader. + + All attributes in javax. java. and com.mortbay. name spaces to be set. + + Partial handling of 0.9 requests. + + removed Thread.destroy() calls. + + Cleaned up exception handling. + +Jetty-2.4.8 23 Oct 2000 + + Fixed bug with 304 replies with bodies. + + Improved win32 make files. + + Fixed closing socket problem + +Jetty-3.0.B05 - 18 Oct 2000 + + Improved null returns to get almost clean watchdog test. + + Cleaned up response committing and flushing + + Handler RFC2109 cookies (like any browser handles them!) + + Added default webapp servlet mapping /servlet/name/* + + Improved path spec interpretation by looking at 2.3 spec + + Implemented security-role-ref for servlets + + Protected servletConfig from downcast security problems + + Made test harnesses work with ant. + + improved ant documentation. + + Removed most deprecation warnings + + Fixed JarFileResource to handle jar files without directories. + + Implemented war file support + + Java2 style classloading + + Improved default log format for clarity. + + Separated context attributes and initParams. + +Jetty-3.0.B04 - 12 Oct 2000 + + Restricted context mapping to simple model for servlets. + + Fixed problem with session ID in paths + + Added modified version of JasperB3.2 for JSP + + Moved FileBase to docroot + + Merged and renamed third party jars. + + Do not try multiple servlets for a request. + + Implemented Context.getContext(uri) + + Added webdefault.xml for web applications. + + Redirect to index files, so index.jsp works. + + Filthy hack to teach jasper JspServer Jetty classpath + +Jetty-3.0.B03 - 9th Oct 2000 + + Expanded import package.*; lines + + Expanded leading tabs to spaces + + Improved Context to Handler contract. + + Parse but not handler startup ordering in web applications. + + Send request log via a LogSink + + Added append mode in RolloverFileLogSink + + Made LogSink a Lifecycle interface + + Improved handler toString + + Redirect context only paths. + + Pass object to LogSink + + Implemented request dispatching. + + Redo dynamic servlets handling + + Improved Log rollover. + + Simplified path translation and real path calculation. + + Catch stop and destroy exceptions in HttpServer.stop() + + Handle ignorable spaces in XmlConfiguration + + Handle ignorable spaces in WebApplication + + Warn about explicit sets of WebApplication + + Remove 411 checks as IE breaks this rule after redirect. + + Removed last remnants JDK 1.1 support + + Added release script + +Jetty-2.4.7 - 6th Oct 2000 + + Allow Objects to be passed to LogSink + + Set content length on errors for keep alive. + + Added encode methods to URI + + Improved win32 build + + fixes to SSL doco + + Support key and keystore passwords + + Various improvements to ServletDispatch, PropertyTree and +associated classes. + +Jetty-3.0.B02 - 24st Aug 2000 + + Fixed LineInput bug with SSL giving CR pause LF. + + Fixed HTTP/1.0 input close bug + + Fixed bug in TestRFC2616 + + Improved ThreadedServer stop and destroy + + Use resources in WebApplication + + Added CGI servlet + +Jetty-3.0.B01 - 21st Aug 2000 + + SSL implemented with JsseListener + + Partial implementation of webapp securitycontraints + + Implemented more webapp configuration + + Switched to the aelfred XML parser from microstar, which is +only partially validating, but small and lightweight + +Jetty-2.4.6 - 16th Aug 2000 + + Turn Linger off before closing sockets, to allow restart. + + JsseListener & SunJsseListener added and documented + + com.mortbay.Util.KeyPairTool added to handle openSSL SSL keys. + + Minor changes to compile with jikes. + + Added passive mode methods to FTP + +Jetty-3.0.A99 - 10 Aug 2000 + + Implemented jetty.xml configuration + + Added Xmlconfiguration utility + + ServletLoader simplied and uses ResourcePath + + Replaced FileHandler with ResourceHandler + + Use SAX XML parsing instead of DOM for space saving. + + Removed FileBase. Now use ResourceBase instead + + Added Resource abstraction + + Make it compile cleanly with jikes. + + Re-added commented out imports for JDK-1.1 compile + +Jetty-3.0.A98 - 20 July 2000 + + Implemented Jetty demos and Site as Web Application. + + Implemented WebApplicationContext + + Switched to JDK1.2 only + + ServletRequest.getServerPort() returns 80 rather than 0 + + Fixed constructor to RolloverFileLogSink + + Improved synchronization on LogSink + + Allow HttpRequest.toString() handles bad requests. + +Jetty-3.0.A97 - 13 July 2000 + + Tempory request log implementation + + Less verbose debug + + Better tuned SocketListener parameters + + Started RequestDispatcher implementation. + + Added WML mappings + + Fixed makefiles for BSD ls + + Fixed persistent commits with no content (eg redirect+keep-alive). + + Implemented servlet isSecure(). + + Implemented servlet getLocale(s). + + Formatted version in server info string. + + Protect setContentLength from a late set in default servlet +HEAD handling. + + Added error handling to LifeCycleThread + + implemented removeAttribute on requests + +Jetty-2.4.5 - 9th July 2000 + + Don't mark a session invalid until after values unbound. + + Formatted version in server info. + + Added HtmlExpireFilter and removed response cache +revention from HtmlFilter. + + Fixed transaction handling in JDBC wrappers + +Jetty-3.0.A96 - 27 June 2000 + + Fixed bug with HTTP/1.1 Head reqests to servlets. + + Supressed un-needed chunking EOF indicators. + +Jetty-3.0.A95 - 24 June 2000 + + Fixed getServletPath for default "/" + + Handle spaces in file names in FileHandler. + +Jetty-3.0.A94 - 19 June 2000 + + Implemented Sessions. + + PathMap exact matches can terminate with ; or # for +URL sessions and targets. + + Added HandlerContext to allow grouping of handlers into +units with the same file, resource and class configurations. + + Cleaned up commit() and added complete() to HttpResponse + + Updated license to clarify that commercial usage IS OK! + +Jetty-3.0.A93 - 14 June 2000 + + Major rethink! Moved to 2.2 servlet API + + Lots of changes and probably unstable + +Jetty-3.0.A92 - 7 June 2000 + + Added HTML classes to jar + + Fixed redirection bug in FileHandler + +Jetty-2.4.4 - 3rd June 2000 + + Many debug call optimizations + + Added RolloverFileLogSink + + Improved LogSink configuration + + Support System.property expansions in PropertyTrees. + + Added uk.org.gosnell.Servlets.CgiServlet to contrib + + HttpRequest.setRequestPath does not null pathInfo. + + BasicAuthHandler uses getResourcePath so it can be used +behind request dispatching + + Added HTML.Composite.replace + + FileHandler implements IfModifiedSince on index files. + + Added build-win32.mak + +Jetty-3.0.A91 - 3 June 2000 + + Improved LogSink mechanism + + Implemented realPath and getResource methods for servlets. + + Abstracted ServletHandler + + Simplified HttpServer configuration methods and arguments + + Simplified class loading + + Added HTML classes from Jetty2 + +Jetty-3.0.A9 - 7 May 2000 + + Improvided finally handling of output end game. + + Fixed double chunking bug in SocketListener. + + File handler checks modified headers on directory indexes. + + ServletLoader tries unix then platform separator for zip separator. + +Jetty-3.0.A8 4th May 2000 + + Servlet2_1 class loading re-acrchitected. See README. + + Moved Sevlet2_1 handler to com.mortbay.Servlet2_1 + + addCookie takes an int maxAge rather than a expires date. + + Added LogSink extensible log architecture. + + Code.ignore only outputs when debug is verbose. + + Added Tenlet class for reverse telnet. + +Jetty-2.4.3 - 4th May 2000 STABLE + + Pass Cookies with 0 max age to browser. + + Allow CRLF in UrlEncoded + +Jetty-2.4.2 - 23rd April 2000 + + Added LogSink and FileLogSink classes to allow extensible +Log handling. + + Handle nested RequestDispatcher includes. + + Modified GNUJSP to prevent close in nested requests. + + Added GNUJSP to JettyServer.prp file. + +Jetty-3.0.A7 - 15 Apr 2000 + + Include java 1.2 source hierarchy + + removed excess ';' from source + + fixed flush problem with chunked output for IE5 + + Added InetGateway to help debug IE5 problems + + added removeValue method to MultiMap + +Jetty-2.4.1 - 9th April 2000 + + Removed debug println from ServletHolder. + + Set encoding before exception in FileHandler. + + Fixed bug in HtmlFilter for tags split between writes. + +Jetty-3.0.A6 - 9 Apr 2000 + + Integrated skeleton 2.1 Servlet container + + Improved portability of Frame and Debug. + + Dates forced to use US locale + + Removed Converter utilities and InetGateway. + + added bin/useJava2Collections to convert to JDK1.2 + +Jetty-2.4.0 - 24th March 2000 + + Upgraded to gnujsp 1.0.0 + + Added per servlet resourceBase configuration. + + Absolute URIs are returned by getRequestURI (if sent by browser). + + Improved parsing of stack trace in debug mode. + + Implemented full handling of cookie max age. + + Moved SetUID native code to contrib hierarchy + + Form parameters only decoded for POSTs + + RequestDispatcher handles URI parameters + + Fixed bug with RequestDispatcher.include() + + Fixed caste problem in UrlEncoded + + Fixed null pointer in ThreadedServer with stopAll + + Added VirtualHostHandler for virtual host handling + + Added doc directory with a small start + +Jetty-2.3.5 - 25th January 2000 + + Fixed nasty bug with HTTP/1.1 redirects. + + ProxyHandler sends content for POSTs etc. + + Force locale of date formats to US. + + Fixed expires bug in Cookies + + Added configuration option to turn off Keep-Alive in HTTP/1.0 + + Allow configured servlets to be auto reloaded. + + Allow properties to be configured for dynamic servlets. + + Added contrib/com/kiwiconsulting/jetty JSSE SSL adaptor to release. + +Jetty-2.3.4 - 18th January 2000 + + include from linux rather than genunix for native builds + + Fixed IllegalStateException handling in DefaultExceptionHandler + + MethodTag.invoke() is now public. + + Improved HtmlFilter.activate header modifications. + + Cookie map keyed on domain as well as name and path. + + DictionaryConverter handles null values. + + URI decodes applies URL decoding to the path. + + Servlet properties allow objects to be stored. + + Fixed interaction with resourcePaths and proxy demo. + +Jetty-3.0.A5 - 19 Oct 1999 + + Use ISO8859_1 instead of UTF8 for headers etc. + + Use char array in UrlEncoded.decode + + Do our own URL string encoding with 8859-1 + + Replaced LF wait in LineInput with state boolean. + +Jetty-2.3.3 - 19th October 1999 STABLE + + Replaced UTF8 encoding with ISO-8859-1 for headers. + + Use UrlEncoded for form parameters. + + Do our own URL encoding with ISO-8859-1 + + HTTP.HTML.EmbedUrl uses contents encoding. + +Jetty-2.3.2 - 17th October 1999 + + Fixed getReader bug with HttpRequest. + + Updated UrlEncoded with Jetty3 version. + +Jetty-3.0.A4 - 16 Oct 1999 + + Request attributes + + Basic Authentication Handler. + + Added LF wait after CR to LineInput. + + UTF8 in UrlDecoded.decodeString. + +Jetty-2.3.1 - 14th October 1999 + + Force UTF8 for FTP commands + + Force UTF8 for HTML + + Changed demo servlets to use writers in preference to outputstreams + + NullHandler/Server default name.name.PROPERTIES to load +prefix/name.name.properties + + Use UTF8 in HTTP headers + + Added Oracle DB adapter + + Added assert with no message to Code + + ThreadedServer calls setSoTimeout(_maxThreadIdleMs) on +accepted sockets. Idle reads will timeout. + + Prevented thread churn on idle server. + + HTTP/1.0 Keep-Alive (about time!). + + Fixed GNUJSP 1.0 resource bug. + +Jetty-3.0.A3 - 14 Oct 1999 + + Added LifeCycle interface to Utils implemented by +ThreadPool, ThreadedServer, HttpListener & HttpHandler + + StartAll, stopAll and destroyAll methods added to HttpServer. + + MaxReadTimeMs added to ThreadedServer. + + Added service method to HttpConnection for specialization. + +Jetty-3.0.A2 - 13 Oct 1999 + + UTF8 handling on raw output stream. + + Reduced flushing on writing response. + + Fixed LineInput problem with repeated CRs + + Cleaned up Util TestHarness. + + Prevent entity content for responses 100-199,203,304 + + Added cookie support and demo. + + HTTP/1.0 Keep-alive (about time!) + + Virtual Hosts. + + NotFound Handler + + OPTION * Handling. + + TRACE handling. + + HEAD handling. + +Jetty-3.0.A1 - 12 Oct 1999 + + LineInput uses own buffering and uses character encodings. + + Added MultiMap for common handling of multiple valued parameters. + + Added parameters to HttpRequest + + Quick port of FileHandler + + Setup demo pages. + + Added PathMap implementing mapping as defined in the 2.2 API +specification (ie. /exact, /prefix/*, *.extention & default ). + + Added HttpHandler interface with start/stop/destroy lifecycle + + Updated HttpListener is start/stop/destroy lifecycle. + + Implemented simple extension architecture in HttpServer. + +Jetty-3.0.A0 - 9 Oct 1999 + + Started fresh repository in CVS + + Moved com.mortbay.Base classes to com.mortbay.Util + + Cleanup of UrlEncoded, using 1.2 Collections. + + Cleanup of URI, using 1.2 Collections. + + Extended URI to handle absolute URLs + + Cleanup of LineInput, using 1.2 Collections. + + Moved HttpInput/OutputStream to ChunkableInput/OutputStream. + + Cleaned up chunking code to use LineInput and reduce buffering. + + Added support for transfer and content encoding filters. + + Added support for servlet 2.2 outbut buffer control. + + Generalized notification of outputStream events. + + Split HttpHeader into HttpFields and HttpMessage. + + HttpMessage supports chunked trailers. + + HttpMessage supports message states. + + Added generalized HTTP Connection. + + Cleanup of HttpRequest and decoupled from Servlet API + + Cleanup and abstraction of ThreadPool. + + ThreadedServer based on ThreadPool. + + Cleanup of HttpResponse and decoupled from Servlet API + + Created RFC2616 test harness. + + gzip and deflate request transfer encodings + + TE field coding and trailer handler + + HttpExceptions now produce error pages with specific detail +of the exception. + +Jetty-2.3.0 - 5th October 1999 + + Added SetUID class with native Unix call to set the +effective User ID. + + FTP closes files after put/get. + + FTP uses InetAddress of command socket for data socket. + +Jetty-2.3.0A - 22 Sep 1999 + + Added GNUJSP 1.0 for the JSP 1.0 API. + + Use javax.servlet classes from JWSDK1.0 + + Added "Powered by Jetty" button. + + ServerContext available to HtmlFilters via context param + + Made session IDs less predictable and removed race. + + Added BuildJetty.java file. + + Expanded tabs to spaces in source. + +Jetty-2.2.8 - 15 Sep 1999 + + Fixed bug in Element.attribute with empty string values. + + Made translation of getRequestURI() optional. + + Removed recursion from TranslationHandler + + Added disableLog() to turn off logging. + + Allow default table attributes to be overriden. + + Improved quoting in HTML element values + +Jetty-2.2.7 - 9 Sep 1999 + + Reverted semantics of getRequestURI() to return untranslated URI. + + Added GzipFilter for content encoding. + + Added default row, head and cell elements to Table. + + FileHandler passes POST request through if the file does not exist. + +Jetty-2.2.6 - 5 Sep 1999 + + New implementation of ThreadPool, avoids a thread leak problem. + + Fixed Cookie max age order of magnitude bug. + + Cookies always available from getCookies. + + Cookies parameter renamed to CookiesAsParameters + + HttpRequest.getSession() always returns a session as per +the latest API spec. + + Added destroy() method on all HttpHandlers. + + ServletHandler.destroy destroys all servlets. + + FileHandler does not server files ending in '/' + + Ignore duplicate single valued headers, rather than +reply with bad request, as IE4 breaks the rules. + + Allow the handling of getPathTranslated to +be configured in ServletHandler. + + Removed JRUN options from ServletHandler configuration. + + Added ServletRunnerHandler to the contrib directories. + + Updated HTML package to better support CSS: +- cssClass, cssID and style methods added to element. +- SPAN added to Block +- media added to Style +- class StyleLink added. + +Jetty-2.2.5 - 19 Aug 1999 + + Fixed bug with closing connections in ThreadedServer + + Made start and stop non final in ThreadedServer + + Better default handling of ServletExceptions + + Always close connection after a bad request. + + Set Expires header in HtmlFilter. + + Don't override the cookie as parameter option. + + Limited growth in MultiPartResponse boundary. + + Improved error messages from Jetty.Server. + + Close loaded class files so Win32 can overwrite +them before GC (what a silly file system!). + +Jetty-2.2.4 - 2 Aug 1999 + + ThreadedServer can use subclasses of Thread. + + Better help on Jetty.Server + + HttpRequests may be passed to HttpFilter constructors. + + HtmlFilter blanks IfModifiedSince headers on construction + + Fixed bugs in HtmlFilter parser and added TestHarness. + + Improved cfg RCS script. + +Jetty-2.2.3 - 27 July 1999 + + Fixed parser bug in HtmlFilter + + Made setInitialize public in ServletHolder + + Improved performance of com.mortbay.HTML.Heading + + Added stop call to HttpServer, used by Exit Servlet. + + Simplified JDBC connection handling so that it works +with Java1.2 - albeit less efficiently. + + FileHandler defaults to allowing directory access. + + JDBC tests modified to use cloudscape as DB. + +Jetty-2.2.2 - 22 July 1999 + + Fixed bug in HtmlFilter that prevented single char buffers +from being written. + + Implemented getResourceAsStream in FileJarServletLoader + + Fixed bug with CLASSPATH in FileJarServletLoader after attempt +to load from a jar. + + Fixed bug in com.mortbay.Util.IO with thread routines. + + Moved more test harnesses out of classes. + + File handler passes through not allowed options for +non existant files. + + NotFoundHandler can repond with SC_METHOD_NOT_ALLOWED. + + Improved com.mortbay.Base.Log handling of different JVMs + + Minor fixes to README + +Jetty-2.2.1 - 18 July 1999 + + Comma separate header fields. + + Protect against duplicate single valued headers. + + Less verbose debug in PropertyTree + + Ignore IOException in ThreadedServer.run() when closing. + + Limit maximum line length in HttpInputStream. + + Response with SC_BAD_REQUEST rather than close in more +circumstances + + Handle continuation lines in HttpHeader. + + HtmlFilter resets last-modified and content-length headers. + + Implemented com.mortbay.Util.IO as a ThreadPool + + Decoupled ExceptionHandler configuration from Handler stacks. +Old config style will produce warning and Default behavior. +See new config file format for changes. + + Added TerseExceptionHandler + + Added optional resourceBase property to HttpConfiguration. This +is used as a URL prefix in the getResource API and was suggested +by the JSERV and Tomcat implementors. + +Jetty-2.2.0 - 1 July 1999 + + Improved feature description page. + + Added Protekt SSL HttpListener + + Moved GNUJSP and Protekt listener to a contrib hierarchy. + + ThreadedServer.stop() closes socket before interrupting threads. + + Exit servlet improved (a little). + + Fixed some of the javadoc formatting. + +Jetty-2.2.Beta4 - 29 June 1999 + + FileHandler flushes files from cache in DELETE method. + + ThreadedServer.stop() now waits until all threads are stopped. + + Options "allowDir" added to FileHandler. + + Added getGlobalProperty to Jetty.Server and used this to +configure default page type. + + Updated README.txt + + Restructured com.mortbay.Jetty.Server for better clarity and +documentation. + + Added comments to configuration files. + + Made ServerSocket and accept call generic in ThreadedServer for +SSL listeners. + + Altered meaning of * in PropertyTree to assist in abbreviated +configuration files. + + Added JettyMinimalDemo.prp as an example of an abbreviated +configuration. + + Expanded Mime.prp file + + Added property handling to ServletHandler to read JRUN +servlet configuration files. + +Jetty-2.2.Beta3 - 22 June 1999 + + Re-implemented ThreadedServer to improve and balance performance. + + Added file cache to FileHandler + + Implemented efficient version of +ServletContext.getResourceAsStream() that does not open a +new socket connection (as does getResource()). + + LookAndFeelServlet uses getResourceAsStream to get the file +to wrap. This allows it to benefit from any caching done and +to wrap arbitrary content (not just files). + + Restructure demo so that LookAndFeel content comes from simple +handler stack. + + Fixed file and socket leaks in Include and Embed tags. + + Ran dos2unix on all text files + + Applied contributed patch of spelling and typo corrections + + Added alternate constructors to HTML.Include for InputStream. + + Server.shutdown() clears configuration so that server may +be restarted in same virtual machine. + + Improved Block.write. + + Fixed bug in HttpResponse flush. + +Jetty-2.2.Beta2 - 12 June 1999 + + Added all write methods to HttpOutputStream$SwitchOutputStream + + Added com.mortbay.Jetty.Server.shutdown() for gentler shutdown +of server. Called from Exit servlet + + HttpRequest.getParameterNames() no longer alters the order +returned by getQueryString(). + + Handle path info of a dynamic loaded servlets and +correctly set the servlet path. + + Standardized date format in persistent cookies. + +Jetty-2.2.Beta1 - 7 June 1999 + + Defined abstract ServletLoader, derivations of which can be +specified in HttpConfiguration properties. + + Implemented all HttpServer attribute methods by mapping to the +HttpConfiguration properties. Dynamic reconfiguration is NOT +supported by these methods (but we are thinking about it). + + Close files after use to avoid "file leak" under heavy load. + + Fixed missing copyright messages from some contributions + + Fixed incorrect version numbers in a few places. + + Improved ThreadPool synchronization and added minThreads. + + Allow configuration of MinListenerThreads, MaxListenerThreads, +MaxListenerThreadIdleMs + + HtmlFilter optimized for being called by a buffered writer. + + Don't warn about IOExceptions unless Debug is on. + + Limit the job queue only grow to the max number of threads. + + Included GNUJSP 0.9.9 + + Optional use of DateCache in log file format + + Fixed cache in FileJarServletLoader + + Destroy requests and responses to help garbage collector. + + Restructure ThreadedServer to reduce object creation. + +Jetty-2.2.Beta0 - 31 May 1999 + + Servlet loader handles jar files with different files separator. + + ThreadedServer gently shuts down. + + Handle malformed % characters in URLs. + + Included and improved version of ThreadPool for significant +performance improvement under high load. + + HttpRequest.getCookies returns empty array rather than null for no +cookies. + + Added HttpResponse.requestHandled() method to avoid bug with +servlet doHead method. + + Added Page.rewind() method to allow a page to be written multiple +times + + Added "Initialize" attribute to servlet configuration to allow +servlet to be initialized when loaded. + + LogHandler changed to support only a single outfile and optional +append. + + Included contributed com.mortbay.Jetty.StressTester class + + Token effort to keep test files out of the jar + + Removed support for STF + +Jetty-2.2.Alpha1 - 7 May 1999 + + ServletHolder can auto reload servlets + + Dynamic servlets can have autoReload configured + + Wait for requests to complete before reloading. + + Call destroy on old servlets when reloading. + + Made capitalization of config file more consistent(ish) + + Fixed bug in SessionDump + +Jetty-2.2.Alpha0 - 6 May 1999 + + Improved PropertyTree implementation + + Old Jetty.Server class renamed to Jetty.Server21 + + New Server class using PropertyTree for configuration + + HttpHandlers given setProperties method to configure via Properties. + + HttpListener class can be configured + + Mime suffix mapping can be configured. + + Removed historic API from sessions + + Improved SessionDump servlet + + Fixed date overflow in Cookies + + HttpResponse.sendError avoids IllegalStateException + + Added ServletLoader implementation if ClassLoader. + + Dynamic loading of servlets. + + Added reload method to ServletHolder, but no way to call it yet. + + Changed options for FileServer + + Implemented ServletServer + + Removed SimpleServletServer + +Jetty-2.1.7 - 22 April 1999 + + Fixed showstopper bug with getReader and getWriter in +requests and responses. + + HttpFilter uses package interface to get HttpOutputStream + +Jetty-2.1.6 - 21 April 1999 + + Reduced initial size of most hashtables to reduce +default memory overheads. + + Throw IllegalStateException as required from gets of +input/output/reader/writer in requests/responses. + + New simpler version of PropertyTree + + Updated PropertyTreeEditor + + Return EOF from HttpInputStream that has a content length. + + Added additional date formats for HttpHeader.getDateHeader + +Jetty-2.1.5 - 15 April 1999 + + Session URL encoding fixed for relative URLs. + + Reduced session memory overhead of sessions + + Form parameters protected against multiple decodes when redirected. + + Added setType methods to com.mortbay.FTP.Ftp + + Fixed bugs with invalid sessions + + Page factory requires response for session encoding + + Moved SessionHandler to front of stacks + + HtmlFilter now expands <!=SESSION> to the URL encoded session if +required. + + Instrumented most of the demo to support URL session encoding. + + Implemented HttpRequest.getReader() + + Servlet log has been diverted to com.mortbay.Base.Log.event() +Thus debug does not need to be turned on to see servlet logs. + + Fixed alignment bug in TableForm + + Removed RFCs from package + + Fixed bug in ServletDispatch for null pathInfo + +Jetty-2.1.4 - 26 March 1999 + + Fixed problem compiling PathMap under some JDKs. + + Reduced HTML dependence in HTTP package to allow minimal configuration + + Tightened license agreement so that binary distributions are required +to include the license file. + + HttpRequest attributes implemented. + + Session max idle time implemented. + + pathInfo returns null for zero length pathInfo (as per spec). +Sorry if this breaks your servlets - it is a pain! + + fixed bug in getRealPath + + getPathTranslated now call getRealPath with pathInfo (as per spec). + +Jetty-2.1.3 - 19 March 1999 + + Added support for suffixes to PathMap + + Included GNUJSP implementation of Java Server Pages + + Use Java2 javadoc + +Jetty-2.1.2 - 9 March 1999 + + JSDK 2.1.1 + + API documentation for JSDK 2.1.1 + + Cascading style sheet HTML element added. + + Fixed trailing / bug in FileHandler (again!). + + Converted most servlets to HttpServlets using do Methods. + +Jetty-2.1.1 - 5 March 1999 + + Reduced number of calls to getRemoteHost for optimization + + Faster version of HttpInputStream.readLine(). + + com.mortbay.Base.DateCache class added and used to speed date handling. + + Handle '.' in configured paths (temp fix until PropertyTrees) + + Fast char buffer handling in HttpInputStream + + Faster version of HttpHeader.read() + + Faster version of HttpRequest + + Size all StringBuffers + +Jetty-2.1.0 - 22 February 1999 + + Session URL Encoding + + PropertyTrees (see new Demo page) + + ServletDispatch (see new Demo page) + + image/jpg -> image/jpeg + + Deprecated com.mortbay.Util.STF + + getServlet methods return null. + +Jetty-2.1.B1 - 13 February 1999 + + Fixed bug with if-modified-since in FileHandler + + Added video/quicktime to default MIME types. + + Fixed bug with MultipartRequest. + + Updated DefaultExceptionHandler. + + Updated InetAddrPort. + + Updated URI. + + Implemented Handler translations and getRealPath. + + Improved handling of File.separator in FileHandler. + + Implemented RequestDispatcher (NOT Tested!). + + Implemented getResource and getResourceAsStream (NOT Tested!). + + Replace package com.mortbay.Util.Gateway with +class com.mortbay.Util.InetGateway + +Jetty-2.1.B0 - 30 January 1999 + + Uses JSDK2.1 API, but not all methods implemented. + + Added support for PUT, MOVE, DELETE in FileHandler + + FileHandler now sets content length. + + Added plug gateway classes com.mortbay.Util.Gateway + + Fixed command line bug with SimpleServletConfig + + Minor changes to support MS J++ and its non standard +language extensions - MMMmmm should have left it unchanged! + +Jetty-2.0.5 - 15 December 1998 + + Temp fix to getCharacterEncoding + + added getHeaderNoParams + +Jetty-2.0.4 - 10 December 1998 + + Use real release of JSDK2.0 (rather than beta). + + Portability issues solved for Apple's + + Improved error code returns + + Removed MORTBAY_HOME support from Makefiles + + Improved default Makefile behaviour + + Implement getCharacterEncoding + +Jetty-2.0.3 - 13 November 1998 + + Limit threads in ThreadedServer and low priority listener option +greatly improve performance under worse case loads. + + Fix bug with index files for Jetty.Server. Previously servers +configured with com.mortbay.Jetty.Server would not handle +index.html files. Need to make this configurable in the prp file. + + Fixed errors in README file: com.mortbay.Jetty.Server was called +com.mortbay.HTTP.Server + +Jetty-2.0.2 - 1 November 1998 + + Use JETTY_HOME rather than MORTBAY_HOME for build environment + + Add thread pool to threaded server for significant +performance improvement. + + Buffer files during configuration + + Buffer HTTP Response headers. + +Jetty-2.0.1 - 27 October 1998 + + Released under an Open Source license. + +Jetty-2.0.0 - 25 October 1998 + + Removed exceptional case from FileHandler redirect. + + Removed Chat demo (too many netscape dependencies). + + Fixed Code.formatObject handling of null objects. + + Added multipart/form-data demo. + +Jetty-2.0.Beta3 - 29 Sep 1998 + + Send 301 for directories without trailing / in FileHandler + + Ignore exception from HttpListener + + Properly implemented multiple listening addresses + + Added com.mortbay.Jetty.Server (see README.Jetty) + + Demo converted to an instance of com.mortbay.Jetty.Server + + Fixed Log Handler again. + + Added com.mortbay.HTTP.MultiPartRequest to handle file uploads + +Jetty-2.0Beta2 - July 1998 + + Fixed Log Handler for HTTP/1.1 + + Slight improvement in READMEEs + +Jetty-2.0Beta1 - June 1998 + + Improved performance of Code.debug() calls, significantly +in the case of non matching debug patterns. + + Fixed bug with calls to service during initialization of servlet + + Provided addSection on com.mortbay.HTML.Page + + Provided reset on com.mortbay.HTML.Composite. + + Proxy demo in different server instance + + Handle full URLs in HTTP requests (to some extent) + + Improved performance with special asciiToLowerCase + + Warn if MSIE used for multi part MIME. + +Jetty-2.0Alpha2 - May 1998 + + JDK1.2 javax.servlet API + + Added date format to Log + + Added timezone to Log + + Handle params in getIntHeader and getDateHeader + + Removed HttpRequest.getByteContent + + Use javax.servlet.http.HttpUtils.parsePostData + + Use javax.servlet.http.Cookie + + Use javax.servlet.http.HttpSession + + Handle Single Threaded servlets with servlet pool + +Jetty-1.3.5 May 1998 + + Fixed socket inet bug in FTP + + Debug triggers added to com.mortbay.Base.Code + + Added date format to Log + + Correct handling of multiple parameters + +Jetty-2.0Alpha1 Wed 8 April 1998 + + Fixed forward bug with no port number + + Removed HttpRequestHeader class + + Debug triggers added to com.mortbay.Base.Code + + Handle HTTP/1.1 Host: header + + Correct formatting of Date HTTP headers + + HttpTests test harness + + Add HTTP/1.1 Date: header + + Handle file requests with If-Modified-Since: or If-Unmodified-Since: + + Handle HEAD properly + + Send Connection: close + + Requires Host: header for 1.1 requests + + Sends chunked data for 1.1 responses of unknown length. + + handle extra spaces in HTTP headers + + Really fixed handling of multiple parameters + + accept chunked data + + Send 100 Continue for HTTP/1.1 requests (concerned about push???) + + persistent connections + +Jetty-1.3.4 - Sun 15 Mar 1998 + + Fixed handling of multiple parameters in query and form content. +"?A=1%2C2&A=C%2CD" now returns two values ("1,2" & "C,D") rather +than 4. + + ServletHandler now takes an optional file base directory +name which is used to set the translated path for pathInfo in +servlet requests. + + Dump servlet enhanced to exercise these changes. + +Jetty-1.3.3 + + Fixed TableForm.addButtonArea bug. + + TableForm.extendRow() uses existing cell + + Closed exception window in HttpListener.java + +Jetty-1.3.2 + + Fixed proxy bug with no port number + + Added per Table cell composite factories + +Jetty-1.3.1 + + Minor fixes in SmtpMail + + ForwardHandler only forwards as http/1.0 (from Tobias.Miller) + + Improved parsing of stack traces + + Better handling of InvocationTargetException in debug + + Minor release adjustments for Tracker + +Jetty-1.3.0 + + Added DbAdaptor to JDBC wrappers + + Beta release of Tracker + +Jetty-1.2.0 + + Reintroduced STF + + Fixed install bug for nested classes + + Better Debug configuration + + DebugServlet + + Alternate look and feel for Jetty + +Jetty-1.1.1 + + Improved documentation + +Jetty-1.1 + + Improved connection caching in java.mortbay.JDBC + + Moved HttpCode to com.mortbay.Util + +Jetty-1.0.1 + + Bug fixes + +Jetty-1.0 + + First release in com.mortbay package structure + + Included Util, JDBC, HTML, HTTP, Jetty + + + + + + + diff --git a/solr/jetty/bin/Jetty-Service.exe b/solr/jetty/bin/Jetty-Service.exe new file mode 100644 index 0000000000000000000000000000000000000000..b4cfc557c06380307967c2936c428cf29894eae8 Binary files /dev/null and b/solr/jetty/bin/Jetty-Service.exe differ diff --git a/solr/jetty/bin/build_release_bundles.sh b/solr/jetty/bin/build_release_bundles.sh new file mode 100644 index 0000000000000000000000000000000000000000..a9a2187026cb7184856c3c34331ce49bec3ee2d7 --- /dev/null +++ b/solr/jetty/bin/build_release_bundles.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +[ $# -eq 1 ] || { echo "Usage - $0 jetty-dir" >&2 ; exit 1 ; } + +cd $1 +D=$(pwd) +N=$(basename $D) +D=$(dirname $D) +cd $D + + find $N -type f |\ + egrep -v /\\.svn |\ + egrep -v /target |\ + egrep -v /\\. |\ + egrep -v $N/start.jar |\ + egrep -v $N/lib |\ + egrep -v $N/logs |\ + egrep -v $N/webapp |\ + egrep -v $N/javadoc |\ + xargs zip $D/$N-src.zip $N/logs + + find $N -type f |\ + egrep -v /\\.svn |\ + egrep -v /target |\ + egrep -v /\\. |\ + egrep -v $N/logs |\ + xargs zip $D/$N.zip $N/logs diff --git a/solr/jetty/bin/change_version.sh b/solr/jetty/bin/change_version.sh new file mode 100644 index 0000000000000000000000000000000000000000..8e55b2d796c66a25e8d9e1d8f262bc4f85abb9d5 --- /dev/null +++ b/solr/jetty/bin/change_version.sh @@ -0,0 +1,758 @@ +#!/bin/sh + +[ $# -eq 1 ] || { echo Usage - $0 new_version >&2 ; exit 1 ; } + +sed s/__JETTY_VERSION__/$1/g << "_EOF_" | patch -p0 +Index: pom.xml +=================================================================== +--- pom.xml (revision 2122) ++++ pom.xml (working copy) +@@ -4,7 +4,7 @@ + <artifactId>project</artifactId> + <packaging>pom</packaging> + <name>Jetty Server Project</name> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <url>http://jetty.mortbay.org</url> + <issueManagement> + <system>jira</system> +Index: project-website/project-site/src/site/site.xml +=================================================================== +--- project-website/project-site/src/site/site.xml (revision 2122) ++++ project-website/project-site/src/site/site.xml (working copy) +@@ -5,7 +5,7 @@ + <skin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-skin</artifactId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </skin> + <bannerLeft> + <name>Jetty</name> +Index: project-website/project-site/pom.xml +=================================================================== +--- project-website/project-site/pom.xml (revision 2122) ++++ project-website/project-site/pom.xml (working copy) +@@ -3,7 +3,7 @@ + <parent> + <artifactId>project-website</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +@@ -11,7 +11,7 @@ + <artifactId>project-site</artifactId> + <packaging>pom</packaging> + <name>Jetty Site</name> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <build> + <plugins> + <plugin> +Index: project-website/project-skin/pom.xml +=================================================================== +--- project-website/project-skin/pom.xml (revision 2122) ++++ project-website/project-skin/pom.xml (working copy) +@@ -7,7 +7,7 @@ + </parent> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-skin</artifactId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <name>Maven Jetty Site Skin</name> + <description>Maven Jetty Site Skin</description> + </project> +Index: project-website/pom.xml +=================================================================== +--- project-website/pom.xml (revision 2122) ++++ project-website/pom.xml (working copy) +@@ -3,7 +3,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +@@ -11,7 +11,7 @@ + <artifactId>project-website</artifactId> + <packaging>pom</packaging> + <name>Jetty WebSite</name> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <modules> + <module>project-skin</module> + <module>project-site</module> +Index: extras/jboss/pom.xml +=================================================================== +--- extras/jboss/pom.xml (revision 2122) ++++ extras/jboss/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/gwt/pom.xml +=================================================================== +--- extras/gwt/pom.xml (revision 2122) ++++ extras/gwt/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/threadpool/pom.xml +=================================================================== +--- extras/threadpool/pom.xml (revision 2122) ++++ extras/threadpool/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/spring/pom.xml +=================================================================== +--- extras/spring/pom.xml (revision 2122) ++++ extras/spring/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/win32service/pom.xml +=================================================================== +--- extras/win32service/pom.xml (revision 2122) ++++ extras/win32service/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/sslengine/pom.xml +=================================================================== +--- extras/sslengine/pom.xml (revision 2122) ++++ extras/sslengine/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/servlet-tester/pom.xml +=================================================================== +--- extras/servlet-tester/pom.xml (revision 2122) ++++ extras/servlet-tester/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/ajp/pom.xml +=================================================================== +--- extras/ajp/pom.xml (revision 2122) ++++ extras/ajp/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/setuid/modules/java/pom.xml +=================================================================== +--- extras/setuid/modules/java/pom.xml (revision 2122) ++++ extras/setuid/modules/java/pom.xml (working copy) +@@ -3,7 +3,7 @@ + <parent> + <artifactId>jetty-setuid</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/setuid/modules/native/pom.xml +=================================================================== +--- extras/setuid/modules/native/pom.xml (revision 2122) ++++ extras/setuid/modules/native/pom.xml (working copy) +@@ -5,7 +5,7 @@ + <parent> + <artifactId>jetty-setuid</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/setuid/pom.xml +=================================================================== +--- extras/setuid/pom.xml (revision 2122) ++++ extras/setuid/pom.xml (working copy) +@@ -3,7 +3,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/xbean/pom.xml +=================================================================== +--- extras/xbean/pom.xml (revision 2122) ++++ extras/xbean/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: extras/client/pom.xml +=================================================================== +--- extras/client/pom.xml (revision 2122) ++++ extras/client/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> +Index: modules/plus/pom.xml +=================================================================== +--- modules/plus/pom.xml (revision 2122) ++++ modules/plus/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/jsp-2.0/pom.xml +=================================================================== +--- modules/jsp-2.0/pom.xml (revision 2122) ++++ modules/jsp-2.0/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/jsp-2.1/pom.xml +=================================================================== +--- modules/jsp-2.1/pom.xml (revision 2122) ++++ modules/jsp-2.1/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/annotations/pom.xml +=================================================================== +--- modules/annotations/pom.xml (revision 2122) ++++ modules/annotations/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/servlet-api-2.5/pom.xml +=================================================================== +--- modules/servlet-api-2.5/pom.xml (revision 2122) ++++ modules/servlet-api-2.5/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/start/pom.xml +=================================================================== +--- modules/start/pom.xml (revision 2122) ++++ modules/start/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/jetty/pom.xml +=================================================================== +--- modules/jetty/pom.xml (revision 2122) ++++ modules/jetty/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/jspc-maven-plugin/pom.xml +=================================================================== +--- modules/jspc-maven-plugin/pom.xml (revision 2122) ++++ modules/jspc-maven-plugin/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/jsp-api-2.0/pom.xml +=================================================================== +--- modules/jsp-api-2.0/pom.xml (revision 2122) ++++ modules/jsp-api-2.0/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/jsp-api-2.1/pom.xml +=================================================================== +--- modules/jsp-api-2.1/pom.xml (revision 2122) ++++ modules/jsp-api-2.1/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/maven-plugin/pom.xml +=================================================================== +--- modules/maven-plugin/pom.xml (revision 2122) ++++ modules/maven-plugin/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/html/pom.xml +=================================================================== +--- modules/html/pom.xml (revision 2122) ++++ modules/html/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/naming/pom.xml +=================================================================== +--- modules/naming/pom.xml (revision 2122) ++++ modules/naming/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/management/pom.xml +=================================================================== +--- modules/management/pom.xml (revision 2122) ++++ modules/management/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: modules/util/pom.xml +=================================================================== +--- modules/util/pom.xml (revision 2122) ++++ modules/util/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: examples/tests/pom.xml +=================================================================== +--- examples/tests/pom.xml (revision 2122) ++++ examples/tests/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: examples/spring-ebj3-demo/pom.xml +=================================================================== +--- examples/spring-ebj3-demo/pom.xml (revision 2122) ++++ examples/spring-ebj3-demo/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> +Index: examples/test-jaas-webapp/pom.xml +=================================================================== +--- examples/test-jaas-webapp/pom.xml (revision 2122) ++++ examples/test-jaas-webapp/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: examples/embedded/pom.xml +=================================================================== +--- examples/embedded/pom.xml (revision 2122) ++++ examples/embedded/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: examples/test-annotations/pom.xml +=================================================================== +--- examples/test-annotations/pom.xml (revision 2122) ++++ examples/test-annotations/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: examples/test-webapp/pom.xml +=================================================================== +--- examples/test-webapp/pom.xml (revision 2122) ++++ examples/test-webapp/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: examples/test-jndi-webapp/pom.xml +=================================================================== +--- examples/test-jndi-webapp/pom.xml (revision 2122) ++++ examples/test-jndi-webapp/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: contrib/jetty-ant/pom.xml +=================================================================== +--- contrib/jetty-ant/pom.xml (revision 505) ++++ contrib/jetty-ant/pom.xml (working copy) +@@ -3,7 +3,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> +Index: contrib/jetty-ant-demo/build.xml +=================================================================== +--- contrib/jetty-ant-demo/build.xml (revision 505) ++++ contrib/jetty-ant-demo/build.xml (working copy) +@@ -1,9 +1,9 @@ + <project name="Test application" basedir="."> + <property name="project.outputDirectory" value="target" /> +- <property name="project.version" value="6.1-SNAPSHOT" /> ++ <property name="project.version" value="__JETTY_VERSION__" /> + <property name="M2_REPO" value="${user.home}/.m2/repository/" /> + +- <property name="jetty.version" value="6.1-SNAPSHOT" /> ++ <property name="jetty.version" value="__JETTY_VERSION__" /> + + <path id="jetty.plugin.classpath"> + <fileset dir="${M2_REPO}"> +Index: contrib/wadi/pom.xml +=================================================================== +--- contrib/wadi/pom.xml (revision 505) ++++ contrib/wadi/pom.xml (working copy) +@@ -2,13 +2,13 @@ + <!--parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent--> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-wadi-session-manager</artifactId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <name>Wadi - Jetty Session Cache</name> + <url>http://jetty.mortbay.org</url> + <licenses> +Index: contrib/jetty-deb/modules/jetty-deb-package/pom.xml +=================================================================== +--- contrib/jetty-deb/modules/jetty-deb-package/pom.xml (revision 505) ++++ contrib/jetty-deb/modules/jetty-deb-package/pom.xml (working copy) +@@ -3,13 +3,13 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-deb-package</artifactId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <name>Jetty Debian Package</name> + <packaging>pom</packaging> + <licenses> +@@ -142,4 +142,4 @@ + <properties> + <deb-install-root>/usr/local/jetty/jetty-${project.version}</deb-install-root> + </properties> +-</project> +\ No newline at end of file ++</project> +Index: contrib/jetty-deb/modules/maven-deb-plugin/pom.xml +=================================================================== +--- contrib/jetty-deb/modules/maven-deb-plugin/pom.xml (revision 505) ++++ contrib/jetty-deb/modules/maven-deb-plugin/pom.xml (working copy) +@@ -5,7 +5,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + +Index: contrib/jetty-deb/pom.xml +=================================================================== +--- contrib/jetty-deb/pom.xml (revision 505) ++++ contrib/jetty-deb/pom.xml (working copy) +@@ -3,14 +3,14 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-deb-package-parent</artifactId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <name>Jetty Deb Package-parent</name> + <packaging>pom</packaging> + <licenses> +Index: contrib/terracotta/pom.xml +=================================================================== +--- contrib/terracotta/pom.xml (revision 505) ++++ contrib/terracotta/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </parent> + + <modelVersion>4.0.0</modelVersion> +Index: contrib/j2se6/pom.xml +=================================================================== +--- contrib/j2se6/pom.xml (revision 505) ++++ contrib/j2se6/pom.xml (working copy) +@@ -3,7 +3,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> +Index: contrib/grizzly/pom.xml +=================================================================== +--- contrib/grizzly/pom.xml (revision 505) ++++ contrib/grizzly/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: contrib/cometd/demo/bin/runTerracottaNode.sh +=================================================================== +--- contrib/cometd/demo/bin/runTerracottaNode.sh (revision 505) ++++ contrib/cometd/demo/bin/runTerracottaNode.sh (working copy) +@@ -8,7 +8,7 @@ + cd $(dirname $0)/.. + DEMO_HOME=$(pwd) + JETTY_HOME=../.. +-JETTY_VERSION=6.1-SNAPSHOT ++JETTY_VERSION=__JETTY_VERSION__ + + TC_HOME=/java/terracotta-trunk + TC_BOOT_JAR=$TC_HOME/dso-boot-hotspot_linux_150_08.jar +Index: contrib/cometd/demo/pom.xml +=================================================================== +--- contrib/cometd/demo/pom.xml (revision 505) ++++ contrib/cometd/demo/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>cometd</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: contrib/cometd/api/pom.xml +=================================================================== +--- contrib/cometd/api/pom.xml (revision 505) ++++ contrib/cometd/api/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>cometd</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +Index: contrib/cometd/pom.xml +=================================================================== +--- contrib/cometd/pom.xml (revision 505) ++++ contrib/cometd/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>project</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.mortbay.jetty</groupId> +Index: contrib/cometd/bayeux/pom.xml +=================================================================== +--- contrib/cometd/bayeux/pom.xml (revision 505) ++++ contrib/cometd/bayeux/pom.xml (working copy) +@@ -2,7 +2,7 @@ + <parent> + <artifactId>cometd</artifactId> + <groupId>org.mortbay.jetty</groupId> +- <version>6.1-SNAPSHOT</version> ++ <version>__JETTY_VERSION__</version> + <relativePath>../pom.xml</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> +_EOF_ diff --git a/solr/jetty/bin/jetty-service.conf b/solr/jetty/bin/jetty-service.conf new file mode 100644 index 0000000000000000000000000000000000000000..5f681f449aba8d6bdb50749b29f3a21a194e22d9 --- /dev/null +++ b/solr/jetty/bin/jetty-service.conf @@ -0,0 +1,27 @@ +wrapper.java.classpath.1=../lib/win32/*.jar +wrapper.java.classpath.2=../lib/*.jar +wrapper.java.classpath.3=../start.jar +wrapper.java.library.path.1=../lib/win32/ +wrapper.java.additional.1=-Djetty.home=../ +wrapper.java.additional.2=-Djetty.logs=../logs +wrapper.java.initmemory=3 +wrapper.java.maxmemory=64 +wrapper.java.mainclass=org.mortbay.jetty.win32service.JettyServiceWrapperListener +wrapper.app.parameter.1=../etc/jetty.xml +wrapper.console.format=PM +wrapper.console.loglevel=INFO +wrapper.logfile=../logs/jetty-service.log +wrapper.logfile.format=LPTM +wrapper.logfile.loglevel=INFO +wrapper.logfile.maxsize=0 +wrapper.logfile.maxfiles=0 +wrapper.syslog.loglevel=NONE +wrapper.ntservice.name=Jetty +wrapper.ntservice.displayname=Jetty6-Service +wrapper.ntservice.description=Jetty is an open-source, standards-based, full-featured web server implemented entirely in java +wrapper.ntservice.starttype=AUTO_START +wrapper.ntservice.interactive=false + + +wrapper.filter.trigger.1=java.lang.OutOfMemoryError +wrapper.filter.action.1=RESTART diff --git a/solr/jetty/bin/jetty.sh b/solr/jetty/bin/jetty.sh new file mode 100644 index 0000000000000000000000000000000000000000..6ad8d25318a691dfd3fb1b1c30efa78a4c30134f --- /dev/null +++ b/solr/jetty/bin/jetty.sh @@ -0,0 +1,631 @@ +#!/bin/bash +# +# Startup script for jetty under *nix systems (it works under NT/cygwin too). +# +# Configuration files +# +# /etc/default/jetty +# If it exists, this is read at the start of script. It may perform any +# sequence of shell commands, like setting relevant environment variables. +# +# $HOME/.jettyrc +# If it exists, this is read at the start of script. It may perform any +# sequence of shell commands, like setting relevant environment variables. +# +# /etc/jetty.conf +# If found, and no configurations were given on the command line, +# the file will be used as this script's configuration. +# Each line in the file may contain: +# - A comment denoted by the pound (#) sign as first non-blank character. +# - The path to a regular file, which will be passed to jetty as a +# config.xml file. +# - The path to a directory. Each *.xml file in the directory will be +# passed to jetty as a config.xml file. +# +# The files will be checked for existence before being passed to jetty. +# +# $JETTY_HOME/etc/jetty.xml +# If found, used as this script's configuration file, but only if +# /etc/jetty.conf was not present. See above. +# +# Configuration variables +# +# JAVA_HOME +# Home of Java installation. +# +# JAVA +# Command to invoke Java. If not set, $JAVA_HOME/bin/java will be +# used. +# +# JAVA_OPTIONS +# Extra options to pass to the JVM +# +# JETTY_HOME +# Where Jetty is installed. If not set, the script will try go +# guess it by first looking at the invocation path for the script, +# and then by looking in standard locations as $HOME/opt/jetty +# and /opt/jetty. The java system property "jetty.home" will be +# set to this value for use by configure.xml files, f.e.: +# +# <Arg><SystemProperty name="jetty.home" default="."/>/webapps/jetty.war</Arg> +# +# JETTY_PORT +# Override the default port for Jetty servers. If not set then the +# default value in the xml configuration file will be used. The java +# system property "jetty.port" will be set to this value for use in +# configure.xml files. For example, the following idiom is widely +# used in the demo config files to respect this property in Listener +# configuration elements: +# +# <Set name="Port"><SystemProperty name="jetty.port" default="8080"/></Set> +# +# Note: that the config file could ignore this property simply by saying: +# +# <Set name="Port">8080</Set> +# +# JETTY_RUN +# Where the jetty.pid file should be stored. It defaults to the +# first available of /var/run, /usr/var/run, and /tmp if not set. +# +# JETTY_PID +# The Jetty PID file, defaults to $JETTY_RUN/jetty.pid +# +# JETTY_ARGS +# The default arguments to pass to jetty. +# +# JETTY_USER +# if set, then used as a username to run the server as +# + +usage() +{ + echo "Usage: $0 {start|stop|run|restart|check|supervise} [ CONFIGS ... ] " + exit 1 +} + +[ $# -gt 0 ] || usage + + +################################################## +# Some utility functions +################################################## +findDirectory() +{ + OP=$1 + shift + for L in $* ; do + [ $OP $L ] || continue + echo $L + break + done +} + +running() +{ + [ -f $1 ] || return 1 + PID=$(cat $1) + ps -p $PID >/dev/null 2>/dev/null || return 1 + return 0 +} + + + + + + + +################################################## +# Get the action & configs +################################################## + +ACTION=$1 +shift +ARGS="$*" +CONFIGS="" +NO_START=0 +TMP=/tmp + +################################################## +# See if there's a default configuration file +################################################## +if [ -f /etc/default/jetty6 ] ; then + . /etc/default/jetty6 +elif [ -f /etc/default/jetty ] ; then + . /etc/default/jetty +fi + + +################################################## +# See if there's a user-specific configuration file +################################################## +if [ -f $HOME/.jettyrc ] ; then + . $HOME/.jettyrc +fi + + +################################################## +# Jetty's hallmark +################################################## +JETTY_INSTALL_TRACE_FILE="etc/jetty.xml" +TMPJ=$TMP/j$$ + + +################################################## +# Try to determine JETTY_HOME if not set +################################################## +if [ -z "$JETTY_HOME" ] +then + JETTY_HOME_1=`dirname "$0"` + JETTY_HOME_1=`dirname "$JETTY_HOME_1"` + if [ -f "${JETTY_HOME_1}/${JETTY_INSTALL_TRACE_FILE}" ] ; + then + JETTY_HOME=${JETTY_HOME_1} + fi +fi + + +################################################## +# if no JETTY_HOME, search likely locations. +################################################## +if [ "$JETTY_HOME" = "" ] ; then + STANDARD_LOCATIONS=" \ + /usr/share \ + /usr/share/java \ + $HOME \ + $HOME/src \ + ${HOME}/opt/ \ + /opt \ + /java \ + /usr/local \ + /usr/local/share \ + /usr/local/share/java \ + /home \ + " + JETTY_DIR_NAMES=" \ + jetty-6 \ + jetty6 \ + jetty-6.* \ + jetty \ + Jetty-6 \ + Jetty6 \ + Jetty-6.* \ + Jetty \ + " + + JETTY_HOME= + for L in $STANDARD_LOCATIONS + do + for N in $JETTY_DIR_NAMES + do + if [ -d $L/$N ] && [ -f "$L/${N}/${JETTY_INSTALL_TRACE_FILE}" ] ; + then + JETTY_HOME="$L/$N" + fi + done + [ ! -z "$JETTY_HOME" ] && break + done +fi + + +################################################## +# No JETTY_HOME yet? We're out of luck! +################################################## +if [ -z "$JETTY_HOME" ] ; then + echo "** ERROR: JETTY_HOME not set, you need to set it or install in a standard location" + exit 1 +fi + +cd $JETTY_HOME +JETTY_HOME=`pwd` + + +##################################################### +# Check that jetty is where we think it is +##################################################### +if [ ! -r $JETTY_HOME/$JETTY_INSTALL_TRACE_FILE ] +then + echo "** ERROR: Oops! Jetty doesn't appear to be installed in $JETTY_HOME" + echo "** ERROR: $JETTY_HOME/$JETTY_INSTALL_TRACE_FILE is not readable!" + exit 1 +fi + + +########################################################### +# Get the list of config.xml files from the command line. +########################################################### +if [ ! -z "$ARGS" ] +then + for A in $ARGS + do + if [ -f $A ] + then + CONF="$A" + elif [ -f $JETTY_HOME/etc/$A ] + then + CONF="$JETTY_HOME/etc/$A" + elif [ -f ${A}.xml ] + then + CONF="${A}.xml" + elif [ -f $JETTY_HOME/etc/${A}.xml ] + then + CONF="$JETTY_HOME/etc/${A}.xml" + else + echo "** ERROR: Cannot find configuration '$A' specified in the command line." + exit 1 + fi + if [ ! -r $CONF ] + then + echo "** ERROR: Cannot read configuration '$A' specified in the command line." + exit 1 + fi + CONFIGS="$CONFIGS $CONF" + done +fi + + +################################################## +# Try to find this script's configuration file, +# but only if no configurations were given on the +# command line. +################################################## +if [ -z "$JETTY_CONF" ] +then + if [ -f /etc/jetty.conf ] + then + JETTY_CONF=/etc/jetty.conf + elif [ -f "${JETTY_HOME}/etc/jetty.conf" ] + then + JETTY_CONF="${JETTY_HOME}/etc/jetty.conf" + fi +fi + +################################################## +# Read the configuration file if one exists +################################################## +CONFIG_LINES= +if [ -z "$CONFIGS" ] && [ -f "$JETTY_CONF" ] && [ -r "$JETTY_CONF" ] +then + CONFIG_LINES=`cat $JETTY_CONF | grep -v "^[:space:]*#" | tr "\n" " "` +fi + +################################################## +# Get the list of config.xml files from jetty.conf +################################################## +if [ ! -z "${CONFIG_LINES}" ] +then + for CONF in ${CONFIG_LINES} + do + if [ ! -r "$CONF" ] + then + echo "** WARNING: Cannot read '$CONF' specified in '$JETTY_CONF'" + elif [ -f "$CONF" ] + then + # assume it's a configure.xml file + CONFIGS="$CONFIGS $CONF" + elif [ -d "$CONF" ] + then + # assume it's a directory with configure.xml files + # for example: /etc/jetty.d/ + # sort the files before adding them to the list of CONFIGS + XML_FILES=`ls ${CONF}/*.xml | sort | tr "\n" " "` + for FILE in ${XML_FILES} + do + if [ -r "$FILE" ] && [ -f "$FILE" ] + then + CONFIGS="$CONFIGS $FILE" + else + echo "** WARNING: Cannot read '$FILE' specified in '$JETTY_CONF'" + fi + done + else + echo "** WARNING: Don''t know what to do with '$CONF' specified in '$JETTY_CONF'" + fi + done +fi + +##################################################### +# Run the standard server if there's nothing else to run +##################################################### +if [ -z "$CONFIGS" ] +then + CONFIGS="${JETTY_HOME}/etc/jetty-logging.xml ${JETTY_HOME}/etc/jetty.xml" +fi + + +##################################################### +# Find a location for the pid file +##################################################### +if [ -z "$JETTY_RUN" ] +then + JETTY_RUN=`findDirectory -w /var/run /usr/var/run /tmp` +fi + +##################################################### +# Find a PID for the pid file +##################################################### +if [ -z "$JETTY_PID" ] +then + JETTY_PID="$JETTY_RUN/jetty.pid" +fi + + +################################################## +# Check for JAVA_HOME +################################################## +if [ -z "$JAVA_HOME" ] +then + # If a java runtime is not defined, search the following + # directories for a JVM and sort by version. Use the highest + # version number. + + # Java search path + JAVA_LOCATIONS="\ + /usr/java \ + /usr/bin \ + /usr/local/bin \ + /usr/local/java \ + /usr/local/jdk \ + /usr/local/jre \ + /usr/lib/jvm \ + /opt/java \ + /opt/jdk \ + /opt/jre \ + " + JAVA_NAMES="java jdk jre" + for N in $JAVA_NAMES ; do + for L in $JAVA_LOCATIONS ; do + [ -d $L ] || continue + find $L -name "$N" ! -type d | grep -v threads | while read J ; do + [ -x $J ] || continue + VERSION=`eval $J -version 2>&1` + [ $? = 0 ] || continue + VERSION=`expr "$VERSION" : '.*"\(1.[0-9\.]*\)["_]'` + [ "$VERSION" = "" ] && continue + expr $VERSION \< 1.2 >/dev/null && continue + echo $VERSION:$J + done + done + done | sort | tail -1 > $TMPJ + JAVA=`cat $TMPJ | cut -d: -f2` + JVERSION=`cat $TMPJ | cut -d: -f1` + + JAVA_HOME=`dirname $JAVA` + while [ ! -z "$JAVA_HOME" -a "$JAVA_HOME" != "/" -a ! -f "$JAVA_HOME/lib/tools.jar" ] ; do + JAVA_HOME=`dirname $JAVA_HOME` + done + [ "$JAVA_HOME" = "" ] && JAVA_HOME= + + echo "Found JAVA=$JAVA in JAVA_HOME=$JAVA_HOME" +fi + + +################################################## +# Determine which JVM of version >1.2 +# Try to use JAVA_HOME +################################################## +if [ "$JAVA" = "" -a "$JAVA_HOME" != "" ] +then + if [ ! -z "$JAVACMD" ] + then + JAVA="$JAVACMD" + else + [ -x $JAVA_HOME/bin/jre -a ! -d $JAVA_HOME/bin/jre ] && JAVA=$JAVA_HOME/bin/jre + [ -x $JAVA_HOME/bin/java -a ! -d $JAVA_HOME/bin/java ] && JAVA=$JAVA_HOME/bin/java + fi +fi + +if [ "$JAVA" = "" ] +then + echo "Cannot find a JRE or JDK. Please set JAVA_HOME to a >=1.2 JRE" 2>&2 + exit 1 +fi + +JAVA_VERSION=`expr "$($JAVA -version 2>&1 | head -1)" : '.*1\.\([0-9]\)'` + +##################################################### +# See if JETTY_PORT is defined +##################################################### +if [ "$JETTY_PORT" != "" ] +then + JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.port=$JETTY_PORT" +fi + +##################################################### +# See if JETTY_LOGS is defined +##################################################### +if [ "$JETTY_LOGS" != "" ] +then + JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.logs=$JETTY_LOGS" +fi + +##################################################### +# Are we running on Windows? Could be, with Cygwin/NT. +##################################################### +case "`uname`" in +CYGWIN*) PATH_SEPARATOR=";";; +*) PATH_SEPARATOR=":";; +esac + + +##################################################### +# Add jetty properties to Java VM options. +##################################################### +JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.home=$JETTY_HOME -Djava.io.tmpdir=$TMP" + +[ -f $JETTY_HOME/etc/start.config ] && JAVA_OPTIONS="-DSTART=$JETTY_HOME/etc/start.config $JAVA_OPTIONS" + +##################################################### +# This is how the Jetty server will be started +##################################################### + +JETTY_START=$JETTY_HOME/start.jar +[ ! -f $JETTY_START ] && JETTY_START=$JETTY_HOME/lib/start.jar + +RUN_ARGS="$JAVA_OPTIONS -jar $JETTY_START $JETTY_ARGS $CONFIGS" +RUN_CMD="$JAVA $RUN_ARGS" + +##################################################### +# Comment these out after you're happy with what +# the script is doing. +##################################################### +#echo "JETTY_HOME = $JETTY_HOME" +#echo "JETTY_CONF = $JETTY_CONF" +#echo "JETTY_RUN = $JETTY_RUN" +#echo "JETTY_PID = $JETTY_PID" +#echo "JETTY_ARGS = $JETTY_ARGS" +#echo "CONFIGS = $CONFIGS" +#echo "JAVA_OPTIONS = $JAVA_OPTIONS" +#echo "JAVA = $JAVA" + + +################################################## +# Do the action +################################################## +case "$ACTION" in + start) + echo -n "Starting Jetty: " + + if [ "$NO_START" = "1" ]; then + echo "Not starting jetty - NO_START=1 in /etc/default/jetty6"; + exit 0; + fi + + + if which start-stop-daemon > /dev/null 2>&1 + then + [ x$JETTY_USER = x ] && JETTY_USER=$(whoami) + [ $UID = 0 ] && CH_USER="-c $JETTY_USER" + if start-stop-daemon -S -p$JETTY_PID $CH_USER -d $JETTY_HOME -b -m -a $JAVA -- $RUN_ARGS + then + sleep 1 + if running $JETTY_PID + then + echo OK + else + echo FAILED + fi + fi + + else + + if [ -f $JETTY_PID ] + then + echo "Already Running!!" + exit 1 + fi + + if [ x$JETTY_USER != x ] + then + touch $JETTY_PID + chown $JETTY_USER $JETTY_PID + su - $JETTY_USER -c " + $RUN_CMD & + PID=\$! + disown \$PID + echo \$PID > $JETTY_PID" + else + $RUN_CMD & + PID=$! + disown $PID + echo $PID > $JETTY_PID + fi + + echo "STARTED Jetty `date`" + fi + + ;; + + stop) + echo -n "Stopping Jetty: " + if which start-stop-daemon > /dev/null 2>&1; then + start-stop-daemon -K -p $JETTY_PID -d $JETTY_HOME -a $JAVA -s HUP + sleep 1 + if running $JETTY_PID + then + sleep 3 + if running $JETTY_PID + then + sleep 30 + if running $JETTY_PID + then + start-stop-daemon -K -p $JETTY_PID -d $JETTY_HOME -a $JAVA -s KILL + fi + fi + fi + + rm -f $JETTY_PID + echo OK + else + PID=`cat $JETTY_PID 2>/dev/null` + TIMEOUT=30 + while running $JETTY_PID && [ $TIMEOUT -gt 0 ] + do + kill $PID 2>/dev/null + sleep 1 + let TIMEOUT=$TIMEOUT-1 + done + + [ $TIMEOUT -gt 0 ] || kill -9 $PID 2>/dev/null + + rm -f $JETTY_PID + echo OK + fi + ;; + + restart) + $0 stop $* + sleep 5 + $0 start $* + ;; + + supervise) + # + # Under control of daemontools supervise monitor which + # handles restarts and shutdowns via the svc program. + # + exec $RUN_CMD + ;; + + run|demo) + echo "Running Jetty: " + + if [ -f $JETTY_PID ] + then + echo "Already Running!!" + exit 1 + fi + + exec $RUN_CMD + ;; + + check) + echo "Checking arguments to Jetty: " + echo "JETTY_HOME = $JETTY_HOME" + echo "JETTY_CONF = $JETTY_CONF" + echo "JETTY_RUN = $JETTY_RUN" + echo "JETTY_PID = $JETTY_PID" + echo "JETTY_PORT = $JETTY_PORT" + echo "JETTY_LOGS = $JETTY_LOGS" + echo "CONFIGS = $CONFIGS" + echo "JAVA_OPTIONS = $JAVA_OPTIONS" + echo "JAVA = $JAVA" + echo "CLASSPATH = $CLASSPATH" + echo "RUN_CMD = $RUN_CMD" + echo + + if [ -f $JETTY_RUN/jetty.pid ] + then + echo "Jetty running pid="`cat $JETTY_RUN/jetty.pid` + exit 0 + fi + exit 1 + ;; + +*) + usage + ;; +esac + +exit 0 + + diff --git a/solr/jetty/etc/jetty-win32-service.xml b/solr/jetty/etc/jetty-win32-service.xml new file mode 100644 index 0000000000000000000000000000000000000000..20287ce77228a94ab23fa2c9db35ffd870ad9180 --- /dev/null +++ b/solr/jetty/etc/jetty-win32-service.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> + +<!-- =============================================================== --> +<!-- Configure the Jetty Server --> +<!-- --> +<!-- Documentation of this file format can be found at: --> +<!-- http://docs.codehaus.org/display/JETTY/jetty.xml --> +<!-- --> +<!-- =============================================================== --> + + +<Configure id="Server" class="org.mortbay.jetty.Server"> + + + <Call name="addLifeCycle"> + <Arg> + <New class="org.mortbay.jetty.win32service.Win32Service"> + <Set name="server"><Ref id="Server"/></Set> + </New> + </Arg> + </Call> + + <Set name="stopAtShutdown">true</Set> + <!-- ensure/prevent Server: header being sent to browsers --> + <Set name="sendServerVersion">true</Set> + +</Configure> diff --git a/solr/jetty/etc/jetty.xml b/solr/jetty/etc/jetty.xml new file mode 100644 index 0000000000000000000000000000000000000000..f68a6fedb2bd8b91a488bc7753af8d2766d046e0 --- /dev/null +++ b/solr/jetty/etc/jetty.xml @@ -0,0 +1,206 @@ +<?xml version="1.0"?> +<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> + +<!-- =============================================================== --> +<!-- Configure the Jetty Server --> +<!-- --> +<!-- Documentation of this file format can be found at: --> +<!-- http://docs.codehaus.org/display/JETTY/jetty.xml --> +<!-- --> +<!-- =============================================================== --> + + +<Configure id="Server" class="org.mortbay.jetty.Server"> + + <!-- =========================================================== --> + <!-- Server Thread Pool --> + <!-- =========================================================== --> + <Set name="ThreadPool"> + + <New class="org.mortbay.thread.QueuedThreadPool"> + <Set name="minThreads">10</Set> + <Set name="maxThreads">200</Set> + <Set name="lowThreads">20</Set> + <Set name="SpawnOrShrinkAt">2</Set> + </New> + + <!-- Optional Java 5 bounded threadpool with job queue + <New class="org.mortbay.thread.concurrent.ThreadPool"> + <Set name="corePoolSize">50</Set> + <Set name="maximumPoolSize">50</Set> + </New> + --> + </Set> + + + + <!-- =========================================================== --> + <!-- Set connectors --> + <!-- =========================================================== --> + <!-- One of each type! --> + <!-- =========================================================== --> + + <!-- Use this connector for many frequently idle connections + and for threadless continuations. + --> + <Call name="addConnector"> + <Arg> + <New class="org.mortbay.jetty.nio.SelectChannelConnector"> + <Set name="host"><SystemProperty name="jetty.host" /></Set> + <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set> + <Set name="maxIdleTime">30000</Set> + <Set name="Acceptors">2</Set> + <Set name="statsOn">false</Set> + <Set name="confidentialPort">8443</Set> + <Set name="lowResourcesConnections">5000</Set> + <Set name="lowResourcesMaxIdleTime">5000</Set> + </New> + </Arg> + </Call> + + <!-- Use this connector if NIO is not available. + <Call name="addConnector"> + <Arg> + <New class="org.mortbay.jetty.bio.SocketConnector"> + <Set name="port">8081</Set> + <Set name="maxIdleTime">50000</Set> + <Set name="lowResourceMaxIdleTime">1500</Set> + </New> + </Arg> + </Call> + --> + + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- To add a HTTPS SSL listener --> + <!-- see jetty-ssl.xml to add an ssl connector. use --> + <!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + + <!-- =========================================================== --> + <!-- Set up global session ID manager --> + <!-- =========================================================== --> + <!-- + <Set name="sessionIdManager"> + <New class="org.mortbay.jetty.servlet.HashSessionIdManager"> + <Set name="workerName">node1</Set> + </New> + </Set> + --> + + <!-- =========================================================== --> + <!-- Set handler Collection Structure --> + <!-- =========================================================== --> + <Set name="handler"> + <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection"> + <Set name="handlers"> + <Array type="org.mortbay.jetty.Handler"> + <Item> + <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/> + </Item> + <Item> + <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/> + </Item> + <Item> + <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/> + </Item> + </Array> + </Set> + </New> + </Set> + + <!-- =========================================================== --> + <!-- Configure the context deployer --> + <!-- A context deployer will deploy contexts described in --> + <!-- configuration files discovered in a directory. --> + <!-- The configuration directory can be scanned for hot --> + <!-- deployments at the configured scanInterval. --> + <!-- --> + <!-- This deployer is configured to deploy contexts configured --> + <!-- in the $JETTY_HOME/contexts directory --> + <!-- --> + <!-- =========================================================== --> + <Call name="addLifeCycle"> + <Arg> + <New class="org.mortbay.jetty.deployer.ContextDeployer"> + <Set name="contexts"><Ref id="Contexts"/></Set> + <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set> + <Set name="scanInterval">1</Set> + </New> + </Arg> + </Call> + + <!-- =========================================================== --> + <!-- Configure the webapp deployer. --> + <!-- A webapp deployer will deploy standard webapps discovered --> + <!-- in a directory at startup, without the need for additional --> + <!-- configuration files. It does not support hot deploy or --> + <!-- non standard contexts (see ContextDeployer above). --> + <!-- --> + <!-- This deployer is configured to deploy webapps from the --> + <!-- $JETTY_HOME/webapps directory --> + <!-- --> + <!-- Normally only one type of deployer need be used. --> + <!-- --> + <!-- =========================================================== --> + <Call name="addLifeCycle"> + <Arg> + <New class="org.mortbay.jetty.deployer.WebAppDeployer"> + <Set name="contexts"><Ref id="Contexts"/></Set> + <Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set> + <Set name="parentLoaderPriority">false</Set> + <Set name="extract">true</Set> + <Set name="allowDuplicates">false</Set> + <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set> + </New> + </Arg> + </Call> + + <!-- =========================================================== --> + <!-- Configure Authentication Realms --> + <!-- Realms may be configured for the entire server here, or --> + <!-- they can be configured for a specific web app in a context --> + <!-- configuration (see $(jetty.home)/contexts/test.xml for an --> + <!-- example). --> + <!-- =========================================================== --> + <Set name="UserRealms"> + <Array type="org.mortbay.jetty.security.UserRealm"> + <Item> + <New class="org.mortbay.jetty.security.HashUserRealm"> + <Set name="name">Test Realm</Set> + <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set> + <Set name="refreshInterval">0</Set> + </New> + </Item> + </Array> + </Set> + + <!-- =========================================================== --> + <!-- Configure Request Log --> + <!-- Request logs may be configured for the entire server here, --> + <!-- or they can be configured for a specific web app in a --> + <!-- contexts configuration (see $(jetty.home)/contexts/test.xml --> + <!-- for an example). --> + <!-- =========================================================== --> + <Ref id="RequestLog"> + <Set name="requestLog"> + <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog"> + <Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set> + <Set name="filenameDateFormat">yyyy_MM_dd</Set> + <Set name="retainDays">90</Set> + <Set name="append">true</Set> + <Set name="extended">true</Set> + <Set name="logCookies">false</Set> + <Set name="LogTimeZone">GMT</Set> + </New> + </Set> + </Ref> + + <!-- =========================================================== --> + <!-- extra options --> + <!-- =========================================================== --> + <Set name="stopAtShutdown">true</Set> + <Set name="sendServerVersion">true</Set> + <Set name="sendDateHeader">true</Set> + <Set name="gracefulShutdown">1000</Set> + +</Configure> diff --git a/solr/jetty/etc/realm.properties b/solr/jetty/etc/realm.properties new file mode 100644 index 0000000000000000000000000000000000000000..f9e4e7fa3cc98993b87428c51606c514c3f51757 --- /dev/null +++ b/solr/jetty/etc/realm.properties @@ -0,0 +1,21 @@ +# +# This file defines users passwords and roles for a HashUserRealm +# +# The format is +# <username>: <password>[,<rolename> ...] +# +# Passwords may be clear text, obfuscated or checksummed. The class +# org.mortbay.util.Password should be used to generate obfuscated +# passwords or password checksums +# +# If DIGEST Authentication is used, the password must be in a recoverable +# format, either plain text or OBF:. +# +jetty: MD5:164c88b302622e17050af52c89945d44,user +admin: CRYPT:ad1ks..kc.1Ug,server-administrator,content-administrator,admin +other: OBF:1xmk1w261u9r1w1c1xmq +plain: plain +user: password + +# This entry is for digest auth. The credential is a MD5 hash of username:realmname:password +digest: MD5:6e120743ad67abfbc385bc2bb754e297 diff --git a/solr/jetty/etc/webdefault.xml b/solr/jetty/etc/webdefault.xml new file mode 100644 index 0000000000000000000000000000000000000000..df9fa173931e1019a276ab6db27c81dd76412749 --- /dev/null +++ b/solr/jetty/etc/webdefault.xml @@ -0,0 +1,402 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> + +<!-- ===================================================================== --> +<!-- This file contains the default descriptor for web applications. --> +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +<!-- The intent of this descriptor is to include jetty specific or common --> +<!-- configuration for all webapps. If a context has a webdefault.xml --> +<!-- descriptor, it is applied before the contexts own web.xml file --> +<!-- --> +<!-- A context may be assigned a default descriptor by: --> +<!-- + Calling WebApplicationContext.setDefaultsDescriptor --> +<!-- + Passed an arg to addWebApplications --> +<!-- --> +<!-- This file is used both as the resource within the jetty.jar (which is --> +<!-- used as the default if no explicit defaults descriptor is set) and it --> +<!-- is copied to the etc directory of the Jetty distro and explicitly --> +<!-- by the jetty.xml file. --> +<!-- --> +<!-- ===================================================================== --> +<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" + metadata-complete="true" + version="2.5"> + + <description> + Default web.xml file. + This file is applied to a Web application before it's own WEB_INF/web.xml file + </description> + + + <!-- ==================================================================== --> + <!-- Context params to control Session Cookies --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- UNCOMMENT TO ACTIVATE + <context-param> + <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name> + <param-value>127.0.0.1</param-value> + </context-param> + + <context-param> + <param-name>org.mortbay.jetty.servlet.SessionPath</param-name> + <param-value>/</param-value> + </context-param> + + <context-param> + <param-name>org.mortbay.jetty.servlet.MaxAge</param-name> + <param-value>-1</param-value> + </context-param> + --> + + <context-param> + <param-name>org.mortbay.jetty.webapp.NoTLDJarPattern</param-name> + <param-value>start.jar|ant-.*\.jar|dojo-.*\.jar|jetty-.*\.jar|jsp-api-.*\.jar|junit-.*\.jar|servlet-api-.*\.jar|dnsns\.jar|rt\.jar|jsse\.jar|tools\.jar|sunpkcs11\.jar|sunjce_provider\.jar|xerces.*\.jar</param-value> + </context-param> + + + + <!-- ==================================================================== --> + <!-- The default servlet. --> + <!-- This servlet, normally mapped to /, provides the handling for static --> + <!-- content, OPTIONS and TRACE methods for the context. --> + <!-- The following initParameters are supported: --> + <!-- --> + <!-- acceptRanges If true, range requests and responses are --> + <!-- supported --> + <!-- --> + <!-- dirAllowed If true, directory listings are returned if no --> + <!-- welcome file is found. Else 403 Forbidden. --> + <!-- --> + <!-- redirectWelcome If true, redirect welcome file requests --> + <!-- else use request dispatcher forwards --> + <!-- --> + <!-- gzip If set to true, then static content will be served--> + <!-- as gzip content encoded if a matching resource is --> + <!-- found ending with ".gz" --> + <!-- --> + <!-- resoureBase Can be set to replace the context resource base --> + <!-- --> + <!-- relativeResourceBase --> + <!-- Set with a pathname relative to the base of the --> + <!-- servlet context root. Useful for only serving --> + <!-- static content from only specific subdirectories. --> + <!-- --> + <!-- useFileMappedBuffer --> + <!-- If set to true (the default), a memory mapped --> + <!-- file buffer will be used to serve static content --> + <!-- when using an NIO connector. Setting this value --> + <!-- to false means that a direct buffer will be used --> + <!-- instead. If you are having trouble with Windows --> + <!-- file locking, set this to false. --> + <!-- --> + <!-- cacheControl If set, all static content will have this value --> + <!-- set as the cache-control header. --> + <!-- --> + <!-- maxCacheSize Maximum size of the static resource cache --> + <!-- --> + <!-- maxCachedFileSize Maximum size of any single file in the cache --> + <!-- --> + <!-- maxCachedFiles Maximum number of files in the cache --> + <!-- --> + <!-- cacheType "nio", "bio" or "both" to determine the type(s) --> + <!-- of resource cache. A bio cached buffer may be used--> + <!-- by nio but is not as efficient as a nio buffer. --> + <!-- An nio cached buffer may not be used by bio. --> + <!-- --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <servlet> + <servlet-name>default</servlet-name> + <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> + <init-param> + <param-name>acceptRanges</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>dirAllowed</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>redirectWelcome</param-name> + <param-value>false</param-value> + </init-param> + <init-param> + <param-name>maxCacheSize</param-name> + <param-value>256000000</param-value> + </init-param> + <init-param> + <param-name>maxCachedFileSize</param-name> + <param-value>10000000</param-value> + </init-param> + <init-param> + <param-name>maxCachedFiles</param-name> + <param-value>1000</param-value> + </init-param> + <init-param> + <param-name>cacheType</param-name> + <param-value>both</param-value> + </init-param> + <init-param> + <param-name>gzip</param-name> + <param-value>true</param-value> + </init-param> + <init-param> + <param-name>useFileMappedBuffer</param-name> + <param-value>true</param-value> + </init-param> + <!-- + <init-param> + <param-name>cacheControl</param-name> + <param-value>max-age=3600,public</param-value> + </init-param> + --> + <load-on-startup>0</load-on-startup> + </servlet> + + <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> + + + <!-- ==================================================================== --> + <!-- JSP Servlet --> + <!-- This is the jasper JSP servlet from the jakarta project --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- The JSP page compiler and execution servlet, which is the mechanism --> + <!-- used by Glassfish to support JSP pages. Traditionally, this servlet --> + <!-- is mapped to URL patterh "*.jsp". This servlet supports the --> + <!-- following initialization parameters (default values are in square --> + <!-- brackets): --> + <!-- --> + <!-- checkInterval If development is false and reloading is true, --> + <!-- background compiles are enabled. checkInterval --> + <!-- is the time in seconds between checks to see --> + <!-- if a JSP page needs to be recompiled. [300] --> + <!-- --> + <!-- compiler Which compiler Ant should use to compile JSP --> + <!-- pages. See the Ant documenation for more --> + <!-- information. [javac] --> + <!-- --> + <!-- classdebuginfo Should the class file be compiled with --> + <!-- debugging information? [true] --> + <!-- --> + <!-- classpath What class path should I use while compiling --> + <!-- generated servlets? [Created dynamically --> + <!-- based on the current web application] --> + <!-- Set to ? to make the container explicitly set --> + <!-- this parameter. --> + <!-- --> + <!-- development Is Jasper used in development mode (will check --> + <!-- for JSP modification on every access)? [true] --> + <!-- --> + <!-- enablePooling Determines whether tag handler pooling is --> + <!-- enabled [true] --> + <!-- --> + <!-- fork Tell Ant to fork compiles of JSP pages so that --> + <!-- a separate JVM is used for JSP page compiles --> + <!-- from the one Tomcat is running in. [true] --> + <!-- --> + <!-- ieClassId The class-id value to be sent to Internet --> + <!-- Explorer when using <jsp:plugin> tags. --> + <!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] --> + <!-- --> + <!-- javaEncoding Java file encoding to use for generating java --> + <!-- source files. [UTF-8] --> + <!-- --> + <!-- keepgenerated Should we keep the generated Java source code --> + <!-- for each page instead of deleting it? [true] --> + <!-- --> + <!-- logVerbosityLevel The level of detailed messages to be produced --> + <!-- by this servlet. Increasing levels cause the --> + <!-- generation of more messages. Valid values are --> + <!-- FATAL, ERROR, WARNING, INFORMATION, and DEBUG. --> + <!-- [WARNING] --> + <!-- --> + <!-- mappedfile Should we generate static content with one --> + <!-- print statement per input line, to ease --> + <!-- debugging? [false] --> + <!-- --> + <!-- --> + <!-- reloading Should Jasper check for modified JSPs? [true] --> + <!-- --> + <!-- suppressSmap Should the generation of SMAP info for JSR45 --> + <!-- debugging be suppressed? [false] --> + <!-- --> + <!-- dumpSmap Should the SMAP info for JSR45 debugging be --> + <!-- dumped to a file? [false] --> + <!-- False if suppressSmap is true --> + <!-- --> + <!-- scratchdir What scratch directory should we use when --> + <!-- compiling JSP pages? [default work directory --> + <!-- for the current web application] --> + <!-- --> + <!-- tagpoolMaxSize The maximum tag handler pool size [5] --> + <!-- --> + <!-- xpoweredBy Determines whether X-Powered-By response --> + <!-- header is added by generated servlet [false] --> + <!-- --> + <!-- If you wish to use Jikes to compile JSP pages: --> + <!-- Set the init parameter "compiler" to "jikes". Define --> + <!-- the property "-Dbuild.compiler.emacs=true" when starting Jetty --> + <!-- to cause Jikes to emit error messages in a format compatible with --> + <!-- Jasper. --> + <!-- If you get an error reporting that jikes can't use UTF-8 encoding, --> + <!-- try setting the init parameter "javaEncoding" to "ISO-8859-1". --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <servlet id="jsp"> + <servlet-name>jsp</servlet-name> + <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> + <init-param> + <param-name>logVerbosityLevel</param-name> + <param-value>DEBUG</param-value> + </init-param> + <init-param> + <param-name>fork</param-name> + <param-value>false</param-value> + </init-param> + <init-param> + <param-name>xpoweredBy</param-name> + <param-value>false</param-value> + </init-param> + <!-- + <init-param> + <param-name>classpath</param-name> + <param-value>?</param-value> + </init-param> + --> + <load-on-startup>0</load-on-startup> + </servlet> + + <servlet-mapping> + <servlet-name>jsp</servlet-name> + <url-pattern>*.jsp</url-pattern> + <url-pattern>*.jspf</url-pattern> + <url-pattern>*.jspx</url-pattern> + <url-pattern>*.xsp</url-pattern> + <url-pattern>*.JSP</url-pattern> + <url-pattern>*.JSPF</url-pattern> + <url-pattern>*.JSPX</url-pattern> + <url-pattern>*.XSP</url-pattern> + </servlet-mapping> + + <!-- ==================================================================== --> + <!-- Dynamic Servlet Invoker. --> + <!-- This servlet invokes anonymous servlets that have not been defined --> + <!-- in the web.xml or by other means. The first element of the pathInfo --> + <!-- of a request passed to the envoker is treated as a servlet name for --> + <!-- an existing servlet, or as a class name of a new servlet. --> + <!-- This servlet is normally mapped to /servlet/* --> + <!-- This servlet support the following initParams: --> + <!-- --> + <!-- nonContextServlets If false, the invoker can only load --> + <!-- servlets from the contexts classloader. --> + <!-- This is false by default and setting this --> + <!-- to true may have security implications. --> + <!-- --> + <!-- verbose If true, log dynamic loads --> + <!-- --> + <!-- * All other parameters are copied to the --> + <!-- each dynamic servlet as init parameters --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- Uncomment for dynamic invocation + <servlet> + <servlet-name>invoker</servlet-name> + <servlet-class>org.mortbay.jetty.servlet.Invoker</servlet-class> + <init-param> + <param-name>verbose</param-name> + <param-value>false</param-value> + </init-param> + <init-param> + <param-name>nonContextServlets</param-name> + <param-value>false</param-value> + </init-param> + <init-param> + <param-name>dynamicParam</param-name> + <param-value>anyValue</param-value> + </init-param> + <load-on-startup>0</load-on-startup> + </servlet> + + <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> + --> + + + + <!-- ==================================================================== --> + <session-config> + <session-timeout>30</session-timeout> + </session-config> + + <!-- ==================================================================== --> + <!-- Default MIME mappings --> + <!-- The default MIME mappings are provided by the mime.properties --> + <!-- resource in the org.mortbay.jetty.jar file. Additional or modified --> + <!-- mappings may be specified here --> + <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- UNCOMMENT TO ACTIVATE + <mime-mapping> + <extension>mysuffix</extension> + <mime-type>mymime/type</mime-type> + </mime-mapping> + --> + + <!-- ==================================================================== --> + <welcome-file-list> + <welcome-file>index.html</welcome-file> + <welcome-file>index.htm</welcome-file> + <welcome-file>index.jsp</welcome-file> + </welcome-file-list> + + <!-- ==================================================================== --> + <locale-encoding-mapping-list> + <locale-encoding-mapping><locale>ar</locale><encoding>ISO-8859-6</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>be</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>bg</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>ca</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>cs</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>da</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>de</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>el</locale><encoding>ISO-8859-7</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>en</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>es</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>et</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>fi</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>fr</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>hr</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>hu</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>is</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>it</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>iw</locale><encoding>ISO-8859-8</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>ja</locale><encoding>Shift_JIS</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>ko</locale><encoding>EUC-KR</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>lt</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>lv</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>mk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>nl</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>no</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>pl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>pt</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>ro</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>ru</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>sh</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>sk</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>sl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>sq</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>sr</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>sv</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>tr</locale><encoding>ISO-8859-9</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>uk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>zh</locale><encoding>GB2312</encoding></locale-encoding-mapping> + <locale-encoding-mapping><locale>zh_TW</locale><encoding>Big5</encoding></locale-encoding-mapping> + </locale-encoding-mapping-list> + + <security-constraint> + <web-resource-collection> + <web-resource-name>Disable TRACE</web-resource-name> + <url-pattern>/</url-pattern> + <http-method>TRACE</http-method> + </web-resource-collection> + <auth-constraint/> + </security-constraint> + +</web-app> + diff --git a/solr/jetty/lib/jetty-6.1.11.jar b/solr/jetty/lib/jetty-6.1.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..7dc9e093b40a557e0b64cf86264b6971b5dfc290 Binary files /dev/null and b/solr/jetty/lib/jetty-6.1.11.jar differ diff --git a/solr/jetty/lib/jetty-util-6.1.11.jar b/solr/jetty/lib/jetty-util-6.1.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..dccbbe66a32e9d8d716267b472932a96cd12a905 Binary files /dev/null and b/solr/jetty/lib/jetty-util-6.1.11.jar differ diff --git a/solr/jetty/lib/jsp-2.1/ant-1.6.5.jar b/solr/jetty/lib/jsp-2.1/ant-1.6.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..3beb3b802ffd7502ac4b4d47e0b2a75d08e30cc3 Binary files /dev/null and b/solr/jetty/lib/jsp-2.1/ant-1.6.5.jar differ diff --git a/solr/jetty/lib/jsp-2.1/core-3.1.1.jar b/solr/jetty/lib/jsp-2.1/core-3.1.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae0b63586701efdc7bf03ffb0a840d50950d211c Binary files /dev/null and b/solr/jetty/lib/jsp-2.1/core-3.1.1.jar differ diff --git a/solr/jetty/lib/jsp-2.1/jsp-2.1.jar b/solr/jetty/lib/jsp-2.1/jsp-2.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..c6c2bc3f57c16e746e373ecfb7d092df1fddd22c Binary files /dev/null and b/solr/jetty/lib/jsp-2.1/jsp-2.1.jar differ diff --git a/solr/jetty/lib/jsp-2.1/jsp-api-2.1.jar b/solr/jetty/lib/jsp-2.1/jsp-api-2.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..3575aad282bad043d5ee34cef8a8e9a8cb554207 Binary files /dev/null and b/solr/jetty/lib/jsp-2.1/jsp-api-2.1.jar differ diff --git a/solr/jetty/lib/servlet-api-2.5-6.1.11.jar b/solr/jetty/lib/servlet-api-2.5-6.1.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..221d34a7c27aa33936dc7d160848997f7820b84d Binary files /dev/null and b/solr/jetty/lib/servlet-api-2.5-6.1.11.jar differ diff --git a/solr/jetty/lib/win32/jetty-win32-service-java-6.1.11.jar b/solr/jetty/lib/win32/jetty-win32-service-java-6.1.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..b3e219c94ea80580a8a13bf682642c53c3c3f819 Binary files /dev/null and b/solr/jetty/lib/win32/jetty-win32-service-java-6.1.11.jar differ diff --git a/solr/jetty/lib/win32/wrapper.dll b/solr/jetty/lib/win32/wrapper.dll new file mode 100644 index 0000000000000000000000000000000000000000..cb553c12340ca6924776dde4961b17f0b6484271 Binary files /dev/null and b/solr/jetty/lib/win32/wrapper.dll differ diff --git a/solr/jetty/lib/win32/wrapper.jar b/solr/jetty/lib/win32/wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..4db355bc3408cded7aa5380a7646bb6cb3e404ab Binary files /dev/null and b/solr/jetty/lib/win32/wrapper.jar differ diff --git a/solr/jetty/start.jar b/solr/jetty/start.jar new file mode 100644 index 0000000000000000000000000000000000000000..ce65abfcdb1a810bc85777a1e6035b0b508660b5 Binary files /dev/null and b/solr/jetty/start.jar differ diff --git a/solr/jetty/webapps/solr.war b/solr/jetty/webapps/solr.war new file mode 100644 index 0000000000000000000000000000000000000000..3402d8be8c96629e58c6dd052965401e3e7232cd Binary files /dev/null and b/solr/jetty/webapps/solr.war differ diff --git a/solr/lib/apache-solr-analysis-extras-3.5.0.jar b/solr/lib/apache-solr-analysis-extras-3.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..998f4dec5ebbdc26f153ad5a98f33c58026a71be Binary files /dev/null and b/solr/lib/apache-solr-analysis-extras-3.5.0.jar differ diff --git a/solr/lib/browse-handler.jar b/solr/lib/browse-handler.jar new file mode 100644 index 0000000000000000000000000000000000000000..7d01541861ab6d2c76afc80cf2afdcb81267a9d8 Binary files /dev/null and b/solr/lib/browse-handler.jar differ diff --git a/solr/lib/icu4j-4_8_1_1.jar b/solr/lib/icu4j-4_8_1_1.jar new file mode 100644 index 0000000000000000000000000000000000000000..a97d575b7d923c1c4f5deb5a735cd45fbc084230 Binary files /dev/null and b/solr/lib/icu4j-4_8_1_1.jar differ diff --git a/solr/lib/icu4j-LICENSE-BSD_LIKE.txt b/solr/lib/icu4j-LICENSE-BSD_LIKE.txt new file mode 100644 index 0000000000000000000000000000000000000000..6eab042334750ccaa61ac20d510ea04ef1323c89 --- /dev/null +++ b/solr/lib/icu4j-LICENSE-BSD_LIKE.txt @@ -0,0 +1,33 @@ +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2008 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this permission notice appear +in all copies of the Software and that both the above copyright notice(s) and +this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization of the +copyright holder. + +All trademarks and registered trademarks mentioned herein are the property of +their respective owners. diff --git a/solr/lib/icu4j-NOTICE.txt b/solr/lib/icu4j-NOTICE.txt new file mode 100644 index 0000000000000000000000000000000000000000..961e6510298072733d3d20a53e1d311ad74d7a16 --- /dev/null +++ b/solr/lib/icu4j-NOTICE.txt @@ -0,0 +1,3 @@ +ICU4J, (under contrib/icu) is licensed under an MIT styles license +(contrib/icu/lib/ICU-LICENSE.txt) and Copyright (c) 1995-2008 +International Business Machines Corporation and others diff --git a/solr/lib/lucene-icu-3.5.0.jar b/solr/lib/lucene-icu-3.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b193d6b8437becae889fb87f218c0378d6937054 Binary files /dev/null and b/solr/lib/lucene-icu-3.5.0.jar differ diff --git a/solr/lib/lucene-smartcn-3.5.0.jar b/solr/lib/lucene-smartcn-3.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..8835bd0dea2f7c427cd12b1281c408c555b30a1b Binary files /dev/null and b/solr/lib/lucene-smartcn-3.5.0.jar differ diff --git a/solr/lib/lucene-stempel-3.5.0.jar b/solr/lib/lucene-stempel-3.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2ec86d415207e0cead52600bdebcc25cff123168 Binary files /dev/null and b/solr/lib/lucene-stempel-3.5.0.jar differ diff --git a/solr/lib/sqlitejdbc-v053.jar b/solr/lib/sqlitejdbc-v053.jar new file mode 100644 index 0000000000000000000000000000000000000000..776fbe311c008d29e1cf9fd1a53c9cf76cf4e7fc Binary files /dev/null and b/solr/lib/sqlitejdbc-v053.jar differ diff --git a/solr/reserves/conf/schema.xml b/solr/reserves/conf/schema.xml new file mode 100644 index 0000000000000000000000000000000000000000..ed7a1e174e4bf46ced871a03c18c1f4a1580799a --- /dev/null +++ b/solr/reserves/conf/schema.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" ?> +<schema name="VuFind Course Reserves Index" version="1.2"> + <types> + <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> + <fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> + <fieldtype name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/> + <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> + <analyzer type="index"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + <analyzer type="query"> + <tokenizer class="solr.ICUTokenizerFactory"/> + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> + <filter class="solr.ICUFoldingFilterFactory"/> + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> + </analyzer> + </fieldType> + </types> + <fields> + <field name="id" type="string" indexed="true" stored="true"/> + <field name="bib_id" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="course" type="text" indexed="true" stored="true"/> + <field name="course_id" type="string" indexed="true" stored="true"/> + <field name="course_str" type="string" indexed="true" stored="true"/> + <field name="instructor" type="text" indexed="true" stored="true"/> + <field name="instructor_id" type="string" indexed="true" stored="true"/> + <field name="instructor_str" type="string" indexed="true" stored="true"/> + <field name="department" type="text" indexed="true" stored="true"/> + <field name="department_id" type="string" indexed="true" stored="true"/> + <field name="department_str" type="string" indexed="true" stored="true"/> + </fields> + <uniqueKey>id</uniqueKey> + <defaultSearchField>course</defaultSearchField> + <copyField source="course" dest="course_str"/> + <copyField source="instructor" dest="instructor_str"/> + <copyField source="department" dest="department_str"/> + <!-- Default Boolean Operator --> + <solrQueryParser defaultOperator="AND"/> +</schema> diff --git a/solr/reserves/conf/solrconfig.xml b/solr/reserves/conf/solrconfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..a5c9dc0988cfaddca21d8792e372218fb99c1017 --- /dev/null +++ b/solr/reserves/conf/solrconfig.xml @@ -0,0 +1,639 @@ +<?xml version="1.0" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<config> + + <!-- Set this to 'false' if you want solr to continue working after it has + encountered an severe configuration error. In a production environment, + you may want solr to keep working even if one handler is mis-configured. + + You may also set this to false using by setting the system property: + -Dsolr.abortOnConfigurationError=false + --> + <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError> + + <!-- Controls what version of Lucene various components of Solr + adhere to. Generally, you want to use the latest version to + get all bug fixes and improvements. It is highly recommended + that you fully re-index after changing this setting as it can + affect both how text is indexed and queried. + --> + <luceneMatchVersion>LUCENE_35</luceneMatchVersion> + + <!-- Used to specify an alternate directory to hold all index data + other than the default ./data under the Solr home. + If replication is in use, this should match the replication configuration. --> + <dataDir>${solr.solr.home:./solr}/reserves</dataDir> + + <indexDefaults> + <!-- Values here affect all index writers and act as a default unless overridden. --> + <useCompoundFile>false</useCompoundFile> + <mergeFactor>10</mergeFactor> + <!-- + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <!--<maxBufferedDocs>1000</maxBufferedDocs>--> + <!-- Tell Lucene when to flush documents to disk. + Giving Lucene more memory for indexing means faster indexing at the cost of more RAM + + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <ramBufferSizeMB>32</ramBufferSizeMB> + <maxMergeDocs>2147483647</maxMergeDocs> + <writeLockTimeout>1000</writeLockTimeout> + <commitLockTimeout>10000</commitLockTimeout> + + <!-- + Expert: Turn on Lucene's auto commit capability. + + TODO: Add recommendations on why you would want to do this. + + NOTE: Despite the name, this value does not have any relation to Solr's autoCommit functionality + + --> + <!--<luceneAutoCommit>false</luceneAutoCommit>--> + <!-- + Expert: + The Merge Policy in Lucene controls how merging is handled by Lucene. The default in 2.3 is the LogByteSizeMergePolicy, previous + versions used LogDocMergePolicy. + + LogByteSizeMergePolicy chooses segments to merge based on their size. The Lucene 2.2 default, LogDocMergePolicy chose when + to merge based on number of documents + + Other implementations of MergePolicy must have a no-argument constructor + --> + <!--<mergePolicy>org.apache.lucene.index.LogByteSizeMergePolicy</mergePolicy>--> + + <!-- + Expert: + The Merge Scheduler in Lucene controls how merges are performed. The ConcurrentMergeScheduler (Lucene 2.3 default) + can perform merges in the background using separate threads. The SerialMergeScheduler (Lucene 2.2 default) does not. + --> + <!--<mergeScheduler>org.apache.lucene.index.ConcurrentMergeScheduler</mergeScheduler>--> + + <!-- + As long as Solr is the only process modifying your index, it is + safe to use Lucene's in process locking mechanism. But you may + specify one of the other Lucene LockFactory implementations in + the event that you have a custom situation. + + none = NoLockFactory (typically only used with read only indexes) + single = SingleInstanceLockFactory (suggested) + native = NativeFSLockFactory + simple = SimpleFSLockFactory + + ('simple' is the default for backwards compatibility with Solr 1.2) + --> + <lockType>single</lockType> + + <!-- TODO: check if this are needed --> + <maxFieldLength>10000</maxFieldLength> + + </indexDefaults> + + <mainIndex> + <!-- options specific to the main on-disk lucene index --> + <useCompoundFile>false</useCompoundFile> + <ramBufferSizeMB>32</ramBufferSizeMB> + <mergeFactor>10</mergeFactor> + <maxMergeDocs>2147483647</maxMergeDocs> + <maxFieldLength>10000</maxFieldLength> + + <!-- If true, unlock any held write or commit locks on startup. + This defeats the locking mechanism that allows multiple + processes to safely access a lucene index, and should be + used with care. --> + <unlockOnStartup>false</unlockOnStartup> + </mainIndex> + + <!-- the default high-performance update handler --> + <updateHandler class="solr.DirectUpdateHandler2"> + + <!-- autocommit pending docs if certain criteria are met --> + <autoCommit> + <maxDocs>10000</maxDocs> + <maxTime>20000</maxTime> + </autoCommit> + + <!-- The RunExecutableListener executes an external command. + exe - the name of the executable to run + dir - dir to use as the current working directory. default="." + wait - the calling thread waits until the executable returns. default="true" + args - the arguments to pass to the program. default=nothing + env - environment variables to set. default=nothing + --> + <!-- A postCommit event is fired after every commit or optimize command + <listener event="postCommit" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + <arr name="args"> <str>arg1</str> <str>arg2</str> </arr> + <arr name="env"> <str>MYVAR=val1</str> </arr> + </listener> + --> + <!-- A postOptimize event is fired only after every optimize command, useful + in conjunction with index distribution to only distribute optimized indicies + <listener event="postOptimize" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + </listener> + --> + + </updateHandler> + + + <query> + <!-- Maximum number of clauses in a boolean query... can affect + range or prefix queries that expand to big boolean + queries. An exception is thrown if exceeded. --> + <maxBooleanClauses>1024</maxBooleanClauses> + + + <!-- Cache used by SolrIndexSearcher for filters (DocSets), + unordered sets of *all* documents that match a query. + When a new searcher is opened, its caches may be prepopulated + or "autowarmed" using data from caches in the old searcher. + autowarmCount is the number of items to prepopulate. For LRUCache, + the autowarmed items will be the most recently accessed items. + Parameters: + class - the SolrCache implementation (currently only LRUCache) + size - the maximum number of entries in the cache + initialSize - the initial capacity (number of entries) of + the cache. (seel java.util.HashMap) + autowarmCount - the number of entries to prepopulate from + and old cache. + <filterCache + class="solr.LRUCache" + size="512" + initialSize="512" + autowarmCount="256"/> + --> + <filterCache + class="solr.LRUCache" + size="300000" + initialSize="300000" + autowarmCount="50000"/> + + <!-- queryResultCache caches results of searches - ordered lists of + document ids (DocList) based on a query, a sort, and the range + of documents requested. + <queryResultCache + class="solr.LRUCache" + size="512" + initialSize="512" + autowarmCount="256"/> + --> + <queryResultCache + class="solr.LRUCache" + size="100000" + initialSize="5000" + autowarmCount="5000"/> + + <!-- documentCache caches Lucene Document objects (the stored fields for each document). + Since Lucene internal document ids are transient, this cache will not be autowarmed. --> + <documentCache + class="solr.LRUCache" + size="50000" + initialSize="50000" + autowarmCount="10000"/> + + <!-- If true, stored fields that are not requested will be loaded lazily. + --> + <enableLazyFieldLoading>false</enableLazyFieldLoading> + + <!-- Example of a generic cache. These caches may be accessed by name + through SolrIndexSearcher.getCache(),cacheLookup(), and cacheInsert(). + The purpose is to enable easy caching of user/application level data. + The regenerator argument should be specified as an implementation + of solr.search.CacheRegenerator if autowarming is desired. --> + <!-- + <cache name="myUserCache" + class="solr.LRUCache" + size="4096" + initialSize="1024" + autowarmCount="1024" + regenerator="org.mycompany.mypackage.MyRegenerator" + /> + --> + + <!-- An optimization that attempts to use a filter to satisfy a search. + If the requested sort does not include score, then the filterCache + will be checked for a filter matching the query. If found, the filter + will be used as the source of document ids, and then the sort will be + applied to that. --> + <useFilterForSortedQuery>true</useFilterForSortedQuery> + + <!-- An optimization for use with the queryResultCache. When a search + is requested, a superset of the requested number of document ids + are collected. For example, if a search for a particular query + requests matching documents 10 through 19, and queryWindowSize is 50, + then documents 0 through 50 will be collected and cached. Any further + requests in that range can be satisfied via the cache. --> + <queryResultWindowSize>50</queryResultWindowSize> + + <!-- Maximum number of documents to cache for any entry in the + queryResultCache. --> + <queryResultMaxDocsCached>200</queryResultMaxDocsCached> + + <!-- This entry enables an int hash representation for filters (DocSets) + when the number of items in the set is less than maxSize. For smaller + sets, this representation is more memory efficient, more efficient to + iterate over, and faster to take intersections. --> + <HashDocSet maxSize="3000" loadFactor="0.75"/> + + <!-- a newSearcher event is fired whenever a new searcher is being prepared + and there is a current searcher handling requests (aka registered). --> + <!-- QuerySenderListener takes an array of NamedList and executes a + local query request for each NamedList in sequence. --> + <!-- + <listener event="newSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst> + <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst> + </arr> + </listener> + --> + + <!-- a firstSearcher event is fired whenever a new searcher is being + prepared but there is no current registered searcher to handle + requests or to gain autowarming data from. --> + <!-- + <listener event="firstSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst> + </arr> + </listener> + --> + + <!-- If a search request comes in and there is no current registered searcher, + then immediately register the still warming searcher and use it. If + "false" then all requests will block until the first searcher is done + warming. --> + <useColdSearcher>false</useColdSearcher> + + <!-- Maximum number of searchers that may be warming in the background + concurrently. An error is returned if this limit is exceeded. Recommend + 1-2 for read-only slaves, higher for masters w/o cache warming. --> + <maxWarmingSearchers>4</maxWarmingSearchers> + + </query> + + <!-- + Let the dispatch filter handler /select?qt=XXX + handleSelect=true will use consistent error handling for /select and /update + handleSelect=false will use solr1.1 style error formatting + --> + <requestDispatcher handleSelect="true" > + <!--Make sure your system has some authentication before enabling remote streaming! --> + <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> + + <!-- Set HTTP caching related parameters (for proxy caches and clients). + + To get the behaviour of Solr 1.2 (ie: no caching related headers) + use the never304="true" option and do not specify a value for + <cacheControl> + --> + <!-- <httpCaching never304="true"> --> + <httpCaching lastModifiedFrom="openTime" + etagSeed="Solr"> + <!-- lastModFrom="openTime" is the default, the Last-Modified value + (and validation against If-Modified-Since requests) will all be + relative to when the current Searcher was opened. + You can change it to lastModFrom="dirLastMod" if you want the + value to exactly corrispond to when the physical index was last + modified. + + etagSeed="..." is an option you can change to force the ETag + header (and validation against If-None-Match requests) to be + differnet even if the index has not changed (ie: when making + significant changes to your config file) + + lastModifiedFrom and etagSeed are both ignored if you use the + never304="true" option. + --> + <!-- If you include a <cacheControl> directive, it will be used to + generate a Cache-Control header, as well as an Expires header + if the value contains "max-age=" + + By default, no Cache-Control header is generated. + + You can use the <cacheControl> option even if you have set + never304="true" + --> + <!-- <cacheControl>max-age=30, public</cacheControl> --> + </httpCaching> + </requestDispatcher> + + <!-- requestHandler plugins... incoming queries will be dispatched to the + correct handler based on the qt (query type) param matching the + name of registered handlers. + The "standard" request handler is the default and will be used if qt + is not specified in the request. + --> + <requestHandler name="standard" class="solr.StandardRequestHandler" default="true"> + <!-- default values for query parameters may optionally be defined here + <lst name="defaults"> + <int name="rows">10</int> + <str name="fl">*</str> + <str name="version">2.1</str> + <lst> + --> + <lst name="defaults"> + <str name="echoParam">explicit</str> + </lst> + </requestHandler> + + <!-- DisMaxRequestHandler is an example of a request handler that + supports optional parameters which are passed to + its init() method. + --> + <requestHandler name="dismax" class="solr.DisMaxRequestHandler" > + <lst name="defaults"> + <float name="tie">0.01</float> + <str name="qf"> + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + </str> + <str name="pf"> + text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9 + </str> + <str name="bf"> + ord(poplarity)^0.5 recip(rord(price),1,1000,1000)^0.3 + </str> + <str name="fl"> + id,name,price,score + </str> + <str name="mm"> + 2<-1 5<-2 6<90% + </str> + <int name="ps">100</int> + </lst> + </requestHandler> + <!-- Note how you can register the same handler multiple times with + different names (and different init parameters) + --> + <requestHandler name="partitioned" class="solr.DisMaxRequestHandler" > + <lst name="defaults"> + <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0</str> + <str name="mm">2<-1 5<-2 6<90%</str> + <!-- This is an example of using Date Math to specify a constantly + moving date range in a config... + --> + <str name="bq">incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2</str> + </lst> + <!-- In addition to defaults, "appends" params can be specified + to identify values which should be appended to the list of + multi-val params from the query (or the existing "defaults"). + + In this example, the param "fq=instock:true" will be appended to + any query time fq params the user may specify, as a mechanism for + partitioning the index, independent of any user selected filtering + that may also be desired (perhaps as a result of faceted searching). + + NOTE: there is *absolutely* nothing a client can do to prevent these + "appends" values from being used, so don't use this mechanism + unless you are sure you always want it. + --> + <lst name="appends"> + <str name="fq">inStock:true</str> + </lst> + <!-- "invariants" are a way of letting the Solr maintainer lock down + the options available to Solr clients. Any params values + specified here are used regardless of what values may be specified + in either the query, the "defaults", or the "appends" params. + + In this example, the facet.field and facet.query params are fixed, + limiting the facets clients can use. Faceting is not turned on by + default - but if the client does specify facet=true in the request, + these are the only facets they will be able to see counts for; + regardless of what other facet.field or facet.query params they + may specify. + + NOTE: there is *absolutely* nothing a client can do to prevent these + "invariants" values from being used, so don't use this mechanism + unless you are sure you always want it. + --> + <lst name="invariants"> + <str name="facet.field">cat</str> + <str name="facet.field">manu_exact</str> + <str name="facet.query">price:[* TO 500]</str> + <str name="facet.query">price:[500 TO *]</str> + </lst> + </requestHandler> + + <requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> + <lst name="defaults"> + <str name="mlt.fl">manu,cat</str> + <int name="mlt.mindf">1</int> + </lst> + </requestHandler> + + <!-- Search component for extracting terms --> + <searchComponent name="term" class="org.apache.solr.handler.component.TermsComponent"> + </searchComponent> + + <!-- + + Search components are registered to SolrCore and used by Search Handlers + + By default, the following components are avaliable: + + <searchComponent name="query" class="org.apache.solr.handler.component.QueryComponent" /> + <searchComponent name="facet" class="org.apache.solr.handler.component.FacetComponent" /> + <searchComponent name="mlt" class="org.apache.solr.handler.component.MoreLikeThisComponent" /> + <searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" /> + <searchComponent name="debug" class="org.apache.solr.handler.component.DebugComponent" /> + + If you register a searchComponent to one of the standard names, that will be used instead. + + --> + + <requestHandler name="/search" class="org.apache.solr.handler.component.SearchHandler"> + <lst name="defaults"> + <str name="echoParams">explicit</str> + </lst> + <!-- + By default, this will register the following components: + + <arr name="components"> + <str>query</str> + <str>facet</str> + <str>mlt</str> + <str>highlight</str> + <str>debug</str> + </arr> + + To insert handlers before or after the 'standard' components, use: + + <arr name="first-components"> + <str>first</str> + </arr> + + <arr name="last-components"> + <str>last</str> + </arr> + + --> + </requestHandler> + + <!-- Request handler to extract terms --> + <requestHandler name="/term" class="org.apache.solr.handler.component.SearchHandler"> + <arr name="components"> + <str>term</str> + </arr> + </requestHandler> + + <!-- Update request handler. + + Note: Since solr1.1 requestHandlers requires a valid content type header if posted in + the body. For example, curl now requires: -H 'Content-type:text/xml; charset=utf-8' + The response format differs from solr1.1 formatting and returns a standard error code. + + To enable solr1.1 behavior, remove the /update handler or change its path + + "update.processor.class" is the class name for the UpdateRequestProcessor. It is initalized + only once. This can not be changed for each request. + --> + <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" > + <!-- + <str name="update.processor.class">org.apache.solr.handler.UpdateRequestProcessor</str> + --> + </requestHandler> + + <!-- + Analysis request handler. Since Solr 1.3. Use to returnhow a document is analyzed. Useful + for debugging and as a token server for other types of applications + --> + <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" > + <!-- + <str name="update.processor.class">org.apache.solr.handler.UpdateRequestProcessor</str> + --> + </requestHandler> + + <!-- CSV update handler, loaded on demand --> + <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" /> + + + <!-- + Admin Handlers - This will register all the standard admin RequestHandlers. Adding + this single handler is equivolent to registering: + + <requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" /> + <requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" /> + <requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" /> + <requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" /> + <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" /> + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + + If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using: + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + <lst name="invariants"> + <str name="hidden">synonyms.txt</str> + <str name="hidden">anotherfile.txt</str> + </lst> + </requestHandler> + --> + <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> + + <!-- ping/healthcheck --> + <requestHandler name="/admin/ping" class="PingRequestHandler"> + <lst name="defaults"> + <str name="qt">standard</str> + <str name="q">solrpingquery</str> + <str name="echoParams">all</str> + </lst> + </requestHandler> + + <!-- Echo the request contents back to the client --> + <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > + <lst name="defaults"> + <str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' --> + <str name="echoHandler">true</str> + </lst> + </requestHandler> + + <searchComponent class="solr.HighlightComponent" name="highlight"> + <highlighting> + <!-- Configure the standard fragmenter --> + <!-- This could most likely be commented out in the "default" case --> + <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true"> + <lst name="defaults"> + <int name="hl.fragsize">100</int> + </lst> + </fragmenter> + + <!-- A regular-expression-based fragmenter (f.i., for sentence extraction) --> + <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> + <lst name="defaults"> + <!-- slightly smaller fragsizes work better because of slop --> + <int name="hl.fragsize">70</int> + <!-- allow 50% slop on fragment sizes --> + <float name="hl.regex.slop">0.5</float> + <!-- a basic sentence pattern --> + <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str> + </lst> + </fragmenter> + + <!-- Configure the standard formatter --> + <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true"> + <lst name="defaults"> + <str name="hl.simple.pre"><![CDATA[<em>]]></str> + <str name="hl.simple.post"><![CDATA[</em>]]></str> + </lst> + </formatter> + </highlighting> + </searchComponent> + + <!-- queryResponseWriter plugins... query responses will be written using the + writer specified by the 'wt' request parameter matching the name of a registered + writer. + The "standard" writer is the default and will be used if 'wt' is not specified + in the request. XMLResponseWriter will be used if nothing is specified here. + The json, python, and ruby writers are also available by default. + + <queryResponseWriter name="standard" class="org.apache.solr.request.XMLResponseWriter"/> + <queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/> + <queryResponseWriter name="python" class="org.apache.solr.request.PythonResponseWriter"/> + <queryResponseWriter name="ruby" class="org.apache.solr.request.RubyResponseWriter"/> + + <queryResponseWriter name="custom" class="com.example.MyResponseWriter"/> + --> +<!-- + XSLT response writer (SOLR-49) + Changes to XSLT transforms are taken into account every xsltCacheLifetimeSeconds at most. + --> + <queryResponseWriter + name="xslt" + class="org.apache.solr.response.XSLTResponseWriter" + > + <int name="xsltCacheLifetimeSeconds">5</int> + </queryResponseWriter> + + <!-- config for the admin interface --> + <admin> + <defaultQuery>shakespeare</defaultQuery> + + <!-- configure a healthcheck file for servers behind a loadbalancer + <healthcheck type="file">server-enabled</healthcheck> + --> + </admin> + +</config> + diff --git a/solr/solr.xml b/solr/solr.xml new file mode 100644 index 0000000000000000000000000000000000000000..694a3c36eb67ea450f6a98ab8a9b5e31a19872a3 --- /dev/null +++ b/solr/solr.xml @@ -0,0 +1,8 @@ +<solr persistent="true" sharedLib="lib"> + <cores adminPath="/admin/multicore"> + <core name="biblio" instanceDir="biblio"/> + <core name="authority" instanceDir="authority"/> + <core name="stats" instanceDir="stats"/> + <!-- uncomment to enable reserves core: <core name="reserves" instanceDir="reserves"/> --> + </cores> +</solr> diff --git a/solr/stats/conf/schema.xml b/solr/stats/conf/schema.xml new file mode 100644 index 0000000000000000000000000000000000000000..de2a60669c4ae7208870179f1076bf85d3ae23c2 --- /dev/null +++ b/solr/stats/conf/schema.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" ?> +<schema name="VuFind Usage Statistics Index" version="1.1"> + <types> + <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> + <fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> + <fieldtype name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/> + </types> + <fields> + <!-- Core Fields --> + <field name="id" type="string" indexed="true" stored="true"/> + <field name="datestamp" type="date" indexed="true" stored="true"/> + + <!-- Institutional Fields --> + <field name="institution" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="collection" type="string" indexed="true" stored="true" multiValued="true"/> + + <!-- User fields --> + <field name="browser" type="string" indexed="true" stored="true"/> + <field name="browserVersion" type="string" indexed="true" stored="true"/> + <field name="ipaddress" type="string" indexed="true" stored="true"/> + <field name="referrer" type="string" indexed="true" stored="true"/> + <field name="session" type="string" indexed="true" stored="true"/> + <field name="url" type="string" indexed="true"/> + + <!-- Search fields --> + <field name="noresults" type="boolean" indexed="true" stored="true"/> + <field name="phrase" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="resultCount" type="string" indexed="true" stored="true"/> + <field name="type" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="searchSource" type="string" indexed="true" stored="true"/> + + <!-- Record fields --> + <field name="recordId" type="string" indexed="true" stored="true"/> + <field name="recordSource" type="string" indexed="true" stored="true"/> + </fields> + + <uniqueKey>id</uniqueKey> + + <defaultSearchField>id</defaultSearchField> + + <!-- Default Boolean Operator --> + <solrQueryParser defaultOperator="OR"/> +</schema> diff --git a/solr/stats/conf/solrconfig.xml b/solr/stats/conf/solrconfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..08e2e3a2fbbdb0d69762bc316abb3d428287a3a6 --- /dev/null +++ b/solr/stats/conf/solrconfig.xml @@ -0,0 +1,628 @@ +<?xml version="1.0" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<config> + + <!-- Set this to 'false' if you want solr to continue working after it has + encountered an severe configuration error. In a production environment, + you may want solr to keep working even if one handler is mis-configured. + + You may also set this to false using by setting the system property: + -Dsolr.abortOnConfigurationError=false + --> + <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError> + + <!-- Controls what version of Lucene various components of Solr + adhere to. Generally, you want to use the latest version to + get all bug fixes and improvements. It is highly recommended + that you fully re-index after changing this setting as it can + affect both how text is indexed and queried. + --> + <luceneMatchVersion>LUCENE_35</luceneMatchVersion> + + <!-- Used to specify an alternate directory to hold all index data + other than the default ./data under the Solr home. + If replication is in use, this should match the replication configuration. --> + <dataDir>${solr.solr.home:./solr}/stats</dataDir> + + <indexDefaults> + <!-- Values here affect all index writers and act as a default unless overridden. --> + <useCompoundFile>false</useCompoundFile> + <mergeFactor>10</mergeFactor> + <!-- + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <!--<maxBufferedDocs>1000</maxBufferedDocs>--> + <!-- Tell Lucene when to flush documents to disk. + Giving Lucene more memory for indexing means faster indexing at the cost of more RAM + + If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush based on whichever limit is hit first. + + --> + <ramBufferSizeMB>32</ramBufferSizeMB> + <maxMergeDocs>2147483647</maxMergeDocs> + <writeLockTimeout>1000</writeLockTimeout> + <commitLockTimeout>10000</commitLockTimeout> + + <!-- + Expert: Turn on Lucene's auto commit capability. + + TODO: Add recommendations on why you would want to do this. + + NOTE: Despite the name, this value does not have any relation to Solr's autoCommit functionality + + --> + <!--<luceneAutoCommit>false</luceneAutoCommit>--> + <!-- + Expert: + The Merge Policy in Lucene controls how merging is handled by Lucene. The default in 2.3 is the LogByteSizeMergePolicy, previous + versions used LogDocMergePolicy. + + LogByteSizeMergePolicy chooses segments to merge based on their size. The Lucene 2.2 default, LogDocMergePolicy chose when + to merge based on number of documents + + Other implementations of MergePolicy must have a no-argument constructor + --> + <!--<mergePolicy>org.apache.lucene.index.LogByteSizeMergePolicy</mergePolicy>--> + + <!-- + Expert: + The Merge Scheduler in Lucene controls how merges are performed. The ConcurrentMergeScheduler (Lucene 2.3 default) + can perform merges in the background using separate threads. The SerialMergeScheduler (Lucene 2.2 default) does not. + --> + <!--<mergeScheduler>org.apache.lucene.index.ConcurrentMergeScheduler</mergeScheduler>--> + + <!-- + As long as Solr is the only process modifying your index, it is + safe to use Lucene's in process locking mechanism. But you may + specify one of the other Lucene LockFactory implementations in + the event that you have a custom situation. + + none = NoLockFactory (typically only used with read only indexes) + single = SingleInstanceLockFactory (suggested) + native = NativeFSLockFactory + simple = SimpleFSLockFactory + + ('simple' is the default for backwards compatibility with Solr 1.2) + --> + <lockType>single</lockType> + + <!-- TODO: check if this are needed --> + <maxFieldLength>10000</maxFieldLength> + + </indexDefaults> + + <mainIndex> + <!-- options specific to the main on-disk lucene index --> + <useCompoundFile>false</useCompoundFile> + <ramBufferSizeMB>32</ramBufferSizeMB> + <mergeFactor>10</mergeFactor> + <maxMergeDocs>2147483647</maxMergeDocs> + <maxFieldLength>10000</maxFieldLength> + + <!-- If true, unlock any held write or commit locks on startup. + This defeats the locking mechanism that allows multiple + processes to safely access a lucene index, and should be + used with care. --> + <unlockOnStartup>false</unlockOnStartup> + </mainIndex> + + <!-- the default high-performance update handler --> + <updateHandler class="solr.DirectUpdateHandler2"> + + <!-- autocommit pending docs if certain criteria are met --> + <autoCommit> + <maxDocs>10000</maxDocs> + <maxTime>20000</maxTime> + </autoCommit> + + <!-- The RunExecutableListener executes an external command. + exe - the name of the executable to run + dir - dir to use as the current working directory. default="." + wait - the calling thread waits until the executable returns. default="true" + args - the arguments to pass to the program. default=nothing + env - environment variables to set. default=nothing + --> + <!-- A postCommit event is fired after every commit or optimize command + <listener event="postCommit" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + <arr name="args"> <str>arg1</str> <str>arg2</str> </arr> + <arr name="env"> <str>MYVAR=val1</str> </arr> + </listener> + --> + <!-- A postOptimize event is fired only after every optimize command, useful + in conjunction with index distribution to only distribute optimized indicies + <listener event="postOptimize" class="solr.RunExecutableListener"> + <str name="exe">snapshooter</str> + <str name="dir">solr/bin</str> + <bool name="wait">true</bool> + </listener> + --> + + </updateHandler> + + + <query> + <!-- Maximum number of clauses in a boolean query... can affect + range or prefix queries that expand to big boolean + queries. An exception is thrown if exceeded. --> + <maxBooleanClauses>1024</maxBooleanClauses> + + + <!-- Cache used by SolrIndexSearcher for filters (DocSets), + unordered sets of *all* documents that match a query. + When a new searcher is opened, its caches may be prepopulated + or "autowarmed" using data from caches in the old searcher. + autowarmCount is the number of items to prepopulate. For LRUCache, + the autowarmed items will be the most recently accessed items. + Parameters: + class - the SolrCache implementation (currently only LRUCache) + size - the maximum number of entries in the cache + initialSize - the initial capacity (number of entries) of + the cache. (seel java.util.HashMap) + autowarmCount - the number of entries to prepopulate from + and old cache. + <filterCache + class="solr.LRUCache" + size="512" + initialSize="512" + autowarmCount="256"/> + --> + <filterCache + class="solr.LRUCache" + size="300000" + initialSize="300000" + autowarmCount="50000"/> + + <!-- queryResultCache caches results of searches - ordered lists of + document ids (DocList) based on a query, a sort, and the range + of documents requested. + <queryResultCache + class="solr.LRUCache" + size="512" + initialSize="512" + autowarmCount="256"/> + --> + <queryResultCache + class="solr.LRUCache" + size="100000" + initialSize="5000" + autowarmCount="5000"/> + + <!-- documentCache caches Lucene Document objects (the stored fields for each document). + Since Lucene internal document ids are transient, this cache will not be autowarmed. --> + <documentCache + class="solr.LRUCache" + size="50000" + initialSize="50000" + autowarmCount="10000"/> + + <!-- If true, stored fields that are not requested will be loaded lazily. + --> + <enableLazyFieldLoading>false</enableLazyFieldLoading> + + <!-- Example of a generic cache. These caches may be accessed by name + through SolrIndexSearcher.getCache(),cacheLookup(), and cacheInsert(). + The purpose is to enable easy caching of user/application level data. + The regenerator argument should be specified as an implementation + of solr.search.CacheRegenerator if autowarming is desired. --> + <!-- + <cache name="myUserCache" + class="solr.LRUCache" + size="4096" + initialSize="1024" + autowarmCount="1024" + regenerator="org.mycompany.mypackage.MyRegenerator" + /> + --> + + <!-- An optimization that attempts to use a filter to satisfy a search. + If the requested sort does not include score, then the filterCache + will be checked for a filter matching the query. If found, the filter + will be used as the source of document ids, and then the sort will be + applied to that. --> + <useFilterForSortedQuery>true</useFilterForSortedQuery> + + <!-- An optimization for use with the queryResultCache. When a search + is requested, a superset of the requested number of document ids + are collected. For example, if a search for a particular query + requests matching documents 10 through 19, and queryWindowSize is 50, + then documents 0 through 50 will be collected and cached. Any further + requests in that range can be satisfied via the cache. --> + <queryResultWindowSize>50</queryResultWindowSize> + + <!-- Maximum number of documents to cache for any entry in the + queryResultCache. --> + <queryResultMaxDocsCached>200</queryResultMaxDocsCached> + + <!-- This entry enables an int hash representation for filters (DocSets) + when the number of items in the set is less than maxSize. For smaller + sets, this representation is more memory efficient, more efficient to + iterate over, and faster to take intersections. --> + <HashDocSet maxSize="3000" loadFactor="0.75"/> + + <!-- a newSearcher event is fired whenever a new searcher is being prepared + and there is a current searcher handling requests (aka registered). --> + <!-- QuerySenderListener takes an array of NamedList and executes a + local query request for each NamedList in sequence. --> + <!-- + <listener event="newSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst> + <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst> + </arr> + </listener> + --> + + <!-- a firstSearcher event is fired whenever a new searcher is being + prepared but there is no current registered searcher to handle + requests or to gain autowarming data from. --> + <!-- + <listener event="firstSearcher" class="solr.QuerySenderListener"> + <arr name="queries"> + <lst> <str name="q">fast_warm</str> <str name="start">0</str> <str name="rows">10</str> </lst> + </arr> + </listener> + --> + + <!-- If a search request comes in and there is no current registered searcher, + then immediately register the still warming searcher and use it. If + "false" then all requests will block until the first searcher is done + warming. --> + <useColdSearcher>false</useColdSearcher> + + <!-- Maximum number of searchers that may be warming in the background + concurrently. An error is returned if this limit is exceeded. Recommend + 1-2 for read-only slaves, higher for masters w/o cache warming. --> + <maxWarmingSearchers>4</maxWarmingSearchers> + + </query> + + <!-- + Let the dispatch filter handler /select?qt=XXX + handleSelect=true will use consistent error handling for /select and /update + handleSelect=false will use solr1.1 style error formatting + --> + <requestDispatcher handleSelect="true" > + <!--Make sure your system has some authentication before enabling remote streaming! --> + <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> + + <!-- Set HTTP caching related parameters (for proxy caches and clients). + + To get the behaviour of Solr 1.2 (ie: no caching related headers) + use the never304="true" option and do not specify a value for + <cacheControl> + --> + <!-- <httpCaching never304="true"> --> + <httpCaching lastModifiedFrom="openTime" + etagSeed="Solr"> + <!-- lastModFrom="openTime" is the default, the Last-Modified value + (and validation against If-Modified-Since requests) will all be + relative to when the current Searcher was opened. + You can change it to lastModFrom="dirLastMod" if you want the + value to exactly corrispond to when the physical index was last + modified. + + etagSeed="..." is an option you can change to force the ETag + header (and validation against If-None-Match requests) to be + differnet even if the index has not changed (ie: when making + significant changes to your config file) + + lastModifiedFrom and etagSeed are both ignored if you use the + never304="true" option. + --> + <!-- If you include a <cacheControl> directive, it will be used to + generate a Cache-Control header, as well as an Expires header + if the value contains "max-age=" + + By default, no Cache-Control header is generated. + + You can use the <cacheControl> option even if you have set + never304="true" + --> + <!-- <cacheControl>max-age=30, public</cacheControl> --> + </httpCaching> + </requestDispatcher> + + <!-- requestHandler plugins... incoming queries will be dispatched to the + correct handler based on the qt (query type) param matching the + name of registered handlers. + The "standard" request handler is the default and will be used if qt + is not specified in the request. + --> + <requestHandler name="standard" class="solr.StandardRequestHandler" default="true"> + <!-- default values for query parameters may optionally be defined here + <lst name="defaults"> + <int name="rows">10</int> + <str name="fl">*</str> + <str name="version">2.1</str> + <lst> + --> + <lst name="defaults"> + <str name="echoParam">explicit</str> + </lst> + </requestHandler> + + <!-- DisMaxRequestHandler is an example of a request handler that + supports optional parameters which are passed to + its init() method. + --> + <requestHandler name="dismax" class="solr.DisMaxRequestHandler" > + <lst name="defaults"> + <float name="tie">0.01</float> + <str name="qf"> + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + </str> + <str name="pf"> + text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9 + </str> + <str name="bf"> + ord(poplarity)^0.5 recip(rord(price),1,1000,1000)^0.3 + </str> + <str name="fl"> + id,name,price,score + </str> + <str name="mm"> + 2<-1 5<-2 6<90% + </str> + <int name="ps">100</int> + </lst> + </requestHandler> + <!-- Note how you can register the same handler multiple times with + different names (and different init parameters) + --> + <requestHandler name="partitioned" class="solr.DisMaxRequestHandler" > + <lst name="defaults"> + <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0</str> + <str name="mm">2<-1 5<-2 6<90%</str> + <!-- This is an example of using Date Math to specify a constantly + moving date range in a config... + --> + <str name="bq">incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2</str> + </lst> + <!-- In addition to defaults, "appends" params can be specified + to identify values which should be appended to the list of + multi-val params from the query (or the existing "defaults"). + + In this example, the param "fq=instock:true" will be appended to + any query time fq params the user may specify, as a mechanism for + partitioning the index, independent of any user selected filtering + that may also be desired (perhaps as a result of faceted searching). + + NOTE: there is *absolutely* nothing a client can do to prevent these + "appends" values from being used, so don't use this mechanism + unless you are sure you always want it. + --> + <lst name="appends"> + <str name="fq">inStock:true</str> + </lst> + <!-- "invariants" are a way of letting the Solr maintainer lock down + the options available to Solr clients. Any params values + specified here are used regardless of what values may be specified + in either the query, the "defaults", or the "appends" params. + + In this example, the facet.field and facet.query params are fixed, + limiting the facets clients can use. Faceting is not turned on by + default - but if the client does specify facet=true in the request, + these are the only facets they will be able to see counts for; + regardless of what other facet.field or facet.query params they + may specify. + + NOTE: there is *absolutely* nothing a client can do to prevent these + "invariants" values from being used, so don't use this mechanism + unless you are sure you always want it. + --> + <lst name="invariants"> + <str name="facet.field">cat</str> + <str name="facet.field">manu_exact</str> + <str name="facet.query">price:[* TO 500]</str> + <str name="facet.query">price:[500 TO *]</str> + </lst> + </requestHandler> + + <requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> + <lst name="defaults"> + <str name="mlt.fl">manu,cat</str> + <int name="mlt.mindf">1</int> + </lst> + </requestHandler> + + <!-- + + Search components are registered to SolrCore and used by Search Handlers + + By default, the following components are avaliable: + + <searchComponent name="query" class="org.apache.solr.handler.component.QueryComponent" /> + <searchComponent name="facet" class="org.apache.solr.handler.component.FacetComponent" /> + <searchComponent name="mlt" class="org.apache.solr.handler.component.MoreLikeThisComponent" /> + <searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" /> + <searchComponent name="debug" class="org.apache.solr.handler.component.DebugComponent" /> + + If you register a searchComponent to one of the standard names, that will be used instead. + + --> + + <requestHandler name="/search" class="org.apache.solr.handler.component.SearchHandler"> + <lst name="defaults"> + <str name="echoParams">explicit</str> + </lst> + <!-- + By default, this will register the following components: + + <arr name="components"> + <str>query</str> + <str>facet</str> + <str>mlt</str> + <str>highlight</str> + <str>debug</str> + </arr> + + To insert handlers before or after the 'standard' components, use: + + <arr name="first-components"> + <str>first</str> + </arr> + + <arr name="last-components"> + <str>last</str> + </arr> + + --> + </requestHandler> + + <!-- Update request handler. + + Note: Since solr1.1 requestHandlers requires a valid content type header if posted in + the body. For example, curl now requires: -H 'Content-type:text/xml; charset=utf-8' + The response format differs from solr1.1 formatting and returns a standard error code. + + To enable solr1.1 behavior, remove the /update handler or change its path + + "update.processor.class" is the class name for the UpdateRequestProcessor. It is initalized + only once. This can not be changed for each request. + --> + <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" > + <!-- + <str name="update.processor.class">org.apache.solr.handler.UpdateRequestProcessor</str> + --> + </requestHandler> + + <!-- + Analysis request handler. Since Solr 1.3. Use to returnhow a document is analyzed. Useful + for debugging and as a token server for other types of applications + --> + <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" > + <!-- + <str name="update.processor.class">org.apache.solr.handler.UpdateRequestProcessor</str> + --> + </requestHandler> + + <!-- CSV update handler, loaded on demand --> + <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" /> + + + <!-- + Admin Handlers - This will register all the standard admin RequestHandlers. Adding + this single handler is equivolent to registering: + + <requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" /> + <requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" /> + <requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" /> + <requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" /> + <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" /> + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + + If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using: + <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" > + <lst name="invariants"> + <str name="hidden">synonyms.txt</str> + <str name="hidden">anotherfile.txt</str> + </lst> + </requestHandler> + --> + <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> + + <!-- ping/healthcheck --> + <requestHandler name="/admin/ping" class="PingRequestHandler"> + <lst name="defaults"> + <str name="qt">standard</str> + <str name="q">solrpingquery</str> + <str name="echoParams">all</str> + </lst> + </requestHandler> + + <!-- Echo the request contents back to the client --> + <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > + <lst name="defaults"> + <str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' --> + <str name="echoHandler">true</str> + </lst> + </requestHandler> + + <searchComponent class="solr.HighlightComponent" name="highlight"> + <highlighting> + <!-- Configure the standard fragmenter --> + <!-- This could most likely be commented out in the "default" case --> + <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true"> + <lst name="defaults"> + <int name="hl.fragsize">100</int> + </lst> + </fragmenter> + + <!-- A regular-expression-based fragmenter (f.i., for sentence extraction) --> + <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> + <lst name="defaults"> + <!-- slightly smaller fragsizes work better because of slop --> + <int name="hl.fragsize">70</int> + <!-- allow 50% slop on fragment sizes --> + <float name="hl.regex.slop">0.5</float> + <!-- a basic sentence pattern --> + <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str> + </lst> + </fragmenter> + + <!-- Configure the standard formatter --> + <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true"> + <lst name="defaults"> + <str name="hl.simple.pre"><![CDATA[<em>]]></str> + <str name="hl.simple.post"><![CDATA[</em>]]></str> + </lst> + </formatter> + </highlighting> + </searchComponent> + + <!-- queryResponseWriter plugins... query responses will be written using the + writer specified by the 'wt' request parameter matching the name of a registered + writer. + The "standard" writer is the default and will be used if 'wt' is not specified + in the request. XMLResponseWriter will be used if nothing is specified here. + The json, python, and ruby writers are also available by default. + + <queryResponseWriter name="standard" class="org.apache.solr.request.XMLResponseWriter"/> + <queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/> + <queryResponseWriter name="python" class="org.apache.solr.request.PythonResponseWriter"/> + <queryResponseWriter name="ruby" class="org.apache.solr.request.RubyResponseWriter"/> + + <queryResponseWriter name="custom" class="com.example.MyResponseWriter"/> + --> +<!-- + XSLT response writer (SOLR-49) + Changes to XSLT transforms are taken into account every xsltCacheLifetimeSeconds at most. + --> + <queryResponseWriter + name="xslt" + class="org.apache.solr.response.XSLTResponseWriter" + > + <int name="xsltCacheLifetimeSeconds">5</int> + </queryResponseWriter> + + <!-- config for the admin interface --> + <admin> + <defaultQuery>shakespeare</defaultQuery> + + <!-- configure a healthcheck file for servers behind a loadbalancer + <healthcheck type="file">server-enabled</healthcheck> + --> + </admin> + +</config> +