UnderpantsGnome-sunspot 0.9.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +39 -0
- data/LICENSE +18 -0
- data/README.rdoc +154 -0
- data/Rakefile +9 -0
- data/TODO +4 -0
- data/VERSION.yml +4 -0
- data/bin/sunspot-configure-solr +46 -0
- data/bin/sunspot-solr +62 -0
- data/lib/light_config.rb +40 -0
- data/lib/sunspot.rb +470 -0
- data/lib/sunspot/adapters.rb +265 -0
- data/lib/sunspot/composite_setup.rb +186 -0
- data/lib/sunspot/configuration.rb +38 -0
- data/lib/sunspot/data_extractor.rb +47 -0
- data/lib/sunspot/date_facet.rb +36 -0
- data/lib/sunspot/date_facet_row.rb +17 -0
- data/lib/sunspot/dsl.rb +3 -0
- data/lib/sunspot/dsl/field_query.rb +72 -0
- data/lib/sunspot/dsl/fields.rb +86 -0
- data/lib/sunspot/dsl/query.rb +59 -0
- data/lib/sunspot/dsl/query_facet.rb +31 -0
- data/lib/sunspot/dsl/restriction.rb +25 -0
- data/lib/sunspot/dsl/scope.rb +193 -0
- data/lib/sunspot/dsl/search.rb +30 -0
- data/lib/sunspot/facet.rb +51 -0
- data/lib/sunspot/facet_row.rb +34 -0
- data/lib/sunspot/field.rb +157 -0
- data/lib/sunspot/field_factory.rb +126 -0
- data/lib/sunspot/indexer.rb +127 -0
- data/lib/sunspot/instantiated_facet.rb +38 -0
- data/lib/sunspot/instantiated_facet_row.rb +12 -0
- data/lib/sunspot/query.rb +190 -0
- data/lib/sunspot/query/base_query.rb +90 -0
- data/lib/sunspot/query/connective.rb +77 -0
- data/lib/sunspot/query/dynamic_query.rb +69 -0
- data/lib/sunspot/query/field_facet.rb +149 -0
- data/lib/sunspot/query/field_query.rb +57 -0
- data/lib/sunspot/query/pagination.rb +39 -0
- data/lib/sunspot/query/query_facet.rb +72 -0
- data/lib/sunspot/query/query_facet_row.rb +19 -0
- data/lib/sunspot/query/restriction.rb +225 -0
- data/lib/sunspot/query/scope.rb +165 -0
- data/lib/sunspot/query/sort.rb +36 -0
- data/lib/sunspot/query/sort_composite.rb +33 -0
- data/lib/sunspot/query_facet.rb +33 -0
- data/lib/sunspot/query_facet_row.rb +21 -0
- data/lib/sunspot/schema.rb +165 -0
- data/lib/sunspot/search.rb +222 -0
- data/lib/sunspot/search/hit.rb +62 -0
- data/lib/sunspot/session.rb +201 -0
- data/lib/sunspot/setup.rb +271 -0
- data/lib/sunspot/type.rb +200 -0
- data/lib/sunspot/util.rb +164 -0
- data/solr/etc/jetty.xml +212 -0
- data/solr/etc/webdefault.xml +379 -0
- data/solr/lib/jetty-6.1.3.jar +0 -0
- data/solr/lib/jetty-util-6.1.3.jar +0 -0
- data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
- data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
- data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
- data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
- data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
- data/solr/solr/conf/elevate.xml +36 -0
- data/solr/solr/conf/protwords.txt +21 -0
- data/solr/solr/conf/schema.xml +50 -0
- data/solr/solr/conf/solrconfig.xml +696 -0
- data/solr/solr/conf/stopwords.txt +57 -0
- data/solr/solr/conf/synonyms.txt +31 -0
- data/solr/start.jar +0 -0
- data/solr/webapps/solr.war +0 -0
- data/spec/api/adapters_spec.rb +33 -0
- data/spec/api/build_search_spec.rb +918 -0
- data/spec/api/indexer_spec.rb +311 -0
- data/spec/api/query_spec.rb +153 -0
- data/spec/api/search_retrieval_spec.rb +325 -0
- data/spec/api/session_spec.rb +157 -0
- data/spec/api/spec_helper.rb +1 -0
- data/spec/api/sunspot_spec.rb +18 -0
- data/spec/integration/dynamic_fields_spec.rb +55 -0
- data/spec/integration/faceting_spec.rb +169 -0
- data/spec/integration/keyword_search_spec.rb +83 -0
- data/spec/integration/scoped_search_spec.rb +188 -0
- data/spec/integration/spec_helper.rb +1 -0
- data/spec/integration/stored_fields_spec.rb +10 -0
- data/spec/integration/test_pagination.rb +32 -0
- data/spec/mocks/adapters.rb +32 -0
- data/spec/mocks/blog.rb +3 -0
- data/spec/mocks/comment.rb +19 -0
- data/spec/mocks/connection.rb +84 -0
- data/spec/mocks/mock_adapter.rb +30 -0
- data/spec/mocks/mock_record.rb +41 -0
- data/spec/mocks/photo.rb +8 -0
- data/spec/mocks/post.rb +70 -0
- data/spec/mocks/user.rb +8 -0
- data/spec/spec_helper.rb +47 -0
- data/tasks/gemspec.rake +25 -0
- data/tasks/rcov.rake +28 -0
- data/tasks/rdoc.rake +21 -0
- data/tasks/schema.rake +19 -0
- data/tasks/spec.rake +24 -0
- data/tasks/todo.rake +4 -0
- data/templates/schema.xml.haml +24 -0
- metadata +245 -0
data/lib/sunspot/util.rb
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
module Sunspot
|
2
|
+
#
|
3
|
+
# The Sunspot::Util module provides utility methods used elsewhere in the
|
4
|
+
# library.
|
5
|
+
#
|
6
|
+
module Util #:nodoc:
|
7
|
+
class <<self
|
8
|
+
#
|
9
|
+
# Get all of the superclasses for a given class, including the class
|
10
|
+
# itself.
|
11
|
+
#
|
12
|
+
# ==== Parameters
|
13
|
+
#
|
14
|
+
# clazz<Class>:: class for which to get superclasses
|
15
|
+
#
|
16
|
+
# ==== Returns
|
17
|
+
#
|
18
|
+
# Array:: Collection containing class and its superclasses
|
19
|
+
#
|
20
|
+
def superclasses_for(clazz)
|
21
|
+
superclasses = [clazz]
|
22
|
+
superclasses << (clazz = clazz.superclass) while clazz.superclass != Object
|
23
|
+
superclasses
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Convert a string to snake case
|
28
|
+
#
|
29
|
+
# ==== Parameters
|
30
|
+
#
|
31
|
+
# string<String>:: String to convert to snake case
|
32
|
+
#
|
33
|
+
# ==== Returns
|
34
|
+
#
|
35
|
+
# String:: String in snake case
|
36
|
+
#
|
37
|
+
def snake_case(string)
|
38
|
+
string.scan(/(^|[A-Z])([^A-Z]+)/).map! { |word| word.join.downcase }.join('_')
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Convert a string to camel case
|
43
|
+
#
|
44
|
+
# ==== Parameters
|
45
|
+
#
|
46
|
+
# string<String>:: String to convert to camel case
|
47
|
+
#
|
48
|
+
# ==== Returns
|
49
|
+
#
|
50
|
+
# String:: String in camel case
|
51
|
+
#
|
52
|
+
def camel_case(string)
|
53
|
+
string.split('_').map! { |word| word.capitalize }.join
|
54
|
+
end
|
55
|
+
|
56
|
+
#
|
57
|
+
# Get a constant from a fully qualified name
|
58
|
+
#
|
59
|
+
# ==== Parameters
|
60
|
+
#
|
61
|
+
# string<String>:: The fully qualified name of a constant
|
62
|
+
#
|
63
|
+
# ==== Returns
|
64
|
+
#
|
65
|
+
# Object:: Value of constant named
|
66
|
+
#
|
67
|
+
def full_const_get(string)
|
68
|
+
string.split('::').inject(Object) do |context, const_name|
|
69
|
+
context.const_get(const_name)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
#
|
74
|
+
# Evaluate the given proc in the context of the given object if the
|
75
|
+
# block's arity is non-positive, or by passing the given object as an
|
76
|
+
# argument if it is negative.
|
77
|
+
#
|
78
|
+
# ==== Parameters
|
79
|
+
#
|
80
|
+
# object<Object>:: Object to pass to the proc
|
81
|
+
#
|
82
|
+
def instance_eval_or_call(object, &block)
|
83
|
+
if block.arity > 0
|
84
|
+
block.call(object)
|
85
|
+
else
|
86
|
+
object.instance_eval(&block)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# Perform a deep merge of hashes, returning the result as a new hash.
|
92
|
+
# See #deep_merge_into for rules used to merge the hashes
|
93
|
+
#
|
94
|
+
# ==== Parameters
|
95
|
+
#
|
96
|
+
# left<Hash>:: Hash to merge
|
97
|
+
# right<Hash>:: The other hash to merge
|
98
|
+
#
|
99
|
+
# ==== Returns
|
100
|
+
#
|
101
|
+
# Hash:: New hash containing the given hashes deep-merged.
|
102
|
+
#
|
103
|
+
def deep_merge(left, right)
|
104
|
+
deep_merge_into({}, left, right)
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# Perform a deep merge of the right hash into the left hash
|
109
|
+
#
|
110
|
+
# ==== Parameters
|
111
|
+
#
|
112
|
+
# left:: Hash to receive merge
|
113
|
+
# right:: Hash to merge into left
|
114
|
+
#
|
115
|
+
# ==== Returns
|
116
|
+
#
|
117
|
+
# Hash:: left
|
118
|
+
#
|
119
|
+
def deep_merge!(left, right)
|
120
|
+
deep_merge_into(left, left, right)
|
121
|
+
end
|
122
|
+
|
123
|
+
private
|
124
|
+
|
125
|
+
#
|
126
|
+
# Deep merge two hashes into a third hash, using rules that produce nice
|
127
|
+
# merged parameter hashes. The rules are as follows, for a given key:
|
128
|
+
#
|
129
|
+
# * If only one hash has a value, or if both hashes have the same value,
|
130
|
+
# just use the value.
|
131
|
+
# * If either of the values is not a hash, create arrays out of both
|
132
|
+
# values and concatenate them.
|
133
|
+
# * Otherwise, deep merge the two values (which are both hashes)
|
134
|
+
#
|
135
|
+
# ==== Parameters
|
136
|
+
#
|
137
|
+
# destination<Hash>:: Hash into which to perform the merge
|
138
|
+
# left<Hash>:: One hash to merge
|
139
|
+
# right<Hash>:: The other hash to merge
|
140
|
+
#
|
141
|
+
# ==== Returns
|
142
|
+
#
|
143
|
+
# Hash:: destination
|
144
|
+
#
|
145
|
+
def deep_merge_into(destination, left, right)
|
146
|
+
left.each_pair do |name, left_value|
|
147
|
+
right_value = right[name]
|
148
|
+
destination[name] =
|
149
|
+
if right_value.nil? || left_value == right_value
|
150
|
+
left_value
|
151
|
+
elsif !left_value.respond_to?(:each_pair) || !right_value.respond_to?(:each_pair)
|
152
|
+
Array(left_value) + Array(right_value)
|
153
|
+
else
|
154
|
+
merged_value = {}
|
155
|
+
deep_merge_into(merged_value, left_value, right_value)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
left_keys = Set.new(left.keys)
|
159
|
+
destination.merge!(right.reject { |k, v| left_keys.include?(k) })
|
160
|
+
destination
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
data/solr/etc/jetty.xml
ADDED
@@ -0,0 +1,212 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
|
3
|
+
|
4
|
+
<!-- =============================================================== -->
|
5
|
+
<!-- Configure the Jetty Server -->
|
6
|
+
<!-- -->
|
7
|
+
<!-- Documentation of this file format can be found at: -->
|
8
|
+
<!-- http://docs.codehaus.org/display/JETTY/jetty.xml -->
|
9
|
+
<!-- -->
|
10
|
+
<!-- =============================================================== -->
|
11
|
+
|
12
|
+
|
13
|
+
<Configure id="Server" class="org.mortbay.jetty.Server">
|
14
|
+
|
15
|
+
<!-- Increase the maximum POST size to 1 MB to be able to handle large shard requests -->
|
16
|
+
<Call class="java.lang.System" name="setProperty">
|
17
|
+
<Arg>org.mortbay.jetty.Request.maxFormContentSize</Arg>
|
18
|
+
<Arg>1000000</Arg>
|
19
|
+
</Call>
|
20
|
+
|
21
|
+
<!-- =========================================================== -->
|
22
|
+
<!-- Server Thread Pool -->
|
23
|
+
<!-- =========================================================== -->
|
24
|
+
<Set name="ThreadPool">
|
25
|
+
<!-- Default bounded blocking threadpool
|
26
|
+
-->
|
27
|
+
<New class="org.mortbay.thread.BoundedThreadPool">
|
28
|
+
<Set name="minThreads">10</Set>
|
29
|
+
<Set name="lowThreads">50</Set>
|
30
|
+
<Set name="maxThreads">10000</Set>
|
31
|
+
</New>
|
32
|
+
|
33
|
+
<!-- Optional Java 5 bounded threadpool with job queue
|
34
|
+
<New class="org.mortbay.thread.concurrent.ThreadPool">
|
35
|
+
<Arg type="int">0</Arg>
|
36
|
+
<Set name="corePoolSize">10</Set>
|
37
|
+
<Set name="maximumPoolSize">250</Set>
|
38
|
+
</New>
|
39
|
+
-->
|
40
|
+
</Set>
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
<!-- =========================================================== -->
|
45
|
+
<!-- Set connectors -->
|
46
|
+
<!-- =========================================================== -->
|
47
|
+
<!-- One of each type! -->
|
48
|
+
<!-- =========================================================== -->
|
49
|
+
|
50
|
+
<!-- Use this connector for many frequently idle connections
|
51
|
+
and for threadless continuations.
|
52
|
+
<Call name="addConnector">
|
53
|
+
<Arg>
|
54
|
+
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
|
55
|
+
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>
|
56
|
+
<Set name="maxIdleTime">30000</Set>
|
57
|
+
<Set name="Acceptors">2</Set>
|
58
|
+
<Set name="confidentialPort">8443</Set>
|
59
|
+
</New>
|
60
|
+
</Arg>
|
61
|
+
</Call>
|
62
|
+
-->
|
63
|
+
|
64
|
+
<!-- Use this connector if NIO is not available. -->
|
65
|
+
<!-- This connector is currently being used for Solr because the
|
66
|
+
nio.SelectChannelConnector showed poor performance under WindowsXP
|
67
|
+
from a single client with non-persistent connections (35s vs ~3min)
|
68
|
+
to complete 10,000 requests)
|
69
|
+
-->
|
70
|
+
<Call name="addConnector">
|
71
|
+
<Arg>
|
72
|
+
<New class="org.mortbay.jetty.bio.SocketConnector">
|
73
|
+
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>
|
74
|
+
<Set name="maxIdleTime">50000</Set>
|
75
|
+
<Set name="lowResourceMaxIdleTime">1500</Set>
|
76
|
+
</New>
|
77
|
+
</Arg>
|
78
|
+
</Call>
|
79
|
+
|
80
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
81
|
+
<!-- To add a HTTPS SSL listener -->
|
82
|
+
<!-- see jetty-ssl.xml to add an ssl connector. use -->
|
83
|
+
<!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml -->
|
84
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
85
|
+
|
86
|
+
<!-- =========================================================== -->
|
87
|
+
<!-- Set up global session ID manager -->
|
88
|
+
<!-- =========================================================== -->
|
89
|
+
<!--
|
90
|
+
<Set name="sessionIdManager">
|
91
|
+
<New class="org.mortbay.jetty.servlet.HashSessionIdManager">
|
92
|
+
<Set name="workerName">node1</Set>
|
93
|
+
</New>
|
94
|
+
</Set>
|
95
|
+
-->
|
96
|
+
|
97
|
+
<!-- =========================================================== -->
|
98
|
+
<!-- Set handler Collection Structure -->
|
99
|
+
<!-- =========================================================== -->
|
100
|
+
<Set name="handler">
|
101
|
+
<New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
|
102
|
+
<Set name="handlers">
|
103
|
+
<Array type="org.mortbay.jetty.Handler">
|
104
|
+
<Item>
|
105
|
+
<New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
|
106
|
+
</Item>
|
107
|
+
<Item>
|
108
|
+
<New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
|
109
|
+
</Item>
|
110
|
+
<Item>
|
111
|
+
<New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
|
112
|
+
</Item>
|
113
|
+
</Array>
|
114
|
+
</Set>
|
115
|
+
</New>
|
116
|
+
</Set>
|
117
|
+
|
118
|
+
<!-- =========================================================== -->
|
119
|
+
<!-- Configure the context deployer -->
|
120
|
+
<!-- A context deployer will deploy contexts described in -->
|
121
|
+
<!-- configuration files discovered in a directory. -->
|
122
|
+
<!-- The configuration directory can be scanned for hot -->
|
123
|
+
<!-- deployments at the configured scanInterval. -->
|
124
|
+
<!-- -->
|
125
|
+
<!-- This deployer is configured to deploy contexts configured -->
|
126
|
+
<!-- in the $JETTY_HOME/contexts directory -->
|
127
|
+
<!-- -->
|
128
|
+
<!-- =========================================================== -->
|
129
|
+
<Call name="addLifeCycle">
|
130
|
+
<Arg>
|
131
|
+
<New class="org.mortbay.jetty.deployer.ContextDeployer">
|
132
|
+
<Set name="contexts"><Ref id="Contexts"/></Set>
|
133
|
+
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
|
134
|
+
<Set name="scanInterval">1</Set>
|
135
|
+
</New>
|
136
|
+
</Arg>
|
137
|
+
</Call>
|
138
|
+
|
139
|
+
<!-- =========================================================== -->
|
140
|
+
<!-- Configure the webapp deployer. -->
|
141
|
+
<!-- A webapp deployer will deploy standard webapps discovered -->
|
142
|
+
<!-- in a directory at startup, without the need for additional -->
|
143
|
+
<!-- configuration files. It does not support hot deploy or -->
|
144
|
+
<!-- non standard contexts (see ContextDeployer above). -->
|
145
|
+
<!-- -->
|
146
|
+
<!-- This deployer is configured to deploy webapps from the -->
|
147
|
+
<!-- $JETTY_HOME/webapps directory -->
|
148
|
+
<!-- -->
|
149
|
+
<!-- Normally only one type of deployer need be used. -->
|
150
|
+
<!-- -->
|
151
|
+
<!-- =========================================================== -->
|
152
|
+
<Call name="addLifeCycle">
|
153
|
+
<Arg>
|
154
|
+
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
|
155
|
+
<Set name="contexts"><Ref id="Contexts"/></Set>
|
156
|
+
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
|
157
|
+
<Set name="parentLoaderPriority">false</Set>
|
158
|
+
<Set name="extract">true</Set>
|
159
|
+
<Set name="allowDuplicates">false</Set>
|
160
|
+
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
|
161
|
+
</New>
|
162
|
+
</Arg>
|
163
|
+
</Call>
|
164
|
+
|
165
|
+
<!-- =========================================================== -->
|
166
|
+
<!-- Configure Authentication Realms -->
|
167
|
+
<!-- Realms may be configured for the entire server here, or -->
|
168
|
+
<!-- they can be configured for a specific web app in a context -->
|
169
|
+
<!-- configuration (see $(jetty.home)/contexts/test.xml for an -->
|
170
|
+
<!-- example). -->
|
171
|
+
<!-- =========================================================== -->
|
172
|
+
<Set name="UserRealms">
|
173
|
+
<Array type="org.mortbay.jetty.security.UserRealm">
|
174
|
+
<!--
|
175
|
+
<Item>
|
176
|
+
<New class="org.mortbay.jetty.security.HashUserRealm">
|
177
|
+
<Set name="name">Test Realm</Set>
|
178
|
+
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
|
179
|
+
</New>
|
180
|
+
</Item>
|
181
|
+
-->
|
182
|
+
</Array>
|
183
|
+
</Set>
|
184
|
+
|
185
|
+
<!-- =========================================================== -->
|
186
|
+
<!-- Configure Request Log -->
|
187
|
+
<!-- Request logs may be configured for the entire server here, -->
|
188
|
+
<!-- or they can be configured for a specific web app in a -->
|
189
|
+
<!-- contexts configuration (see $(jetty.home)/contexts/test.xml -->
|
190
|
+
<!-- for an example). -->
|
191
|
+
<!-- =========================================================== -->
|
192
|
+
<Ref id="RequestLog">
|
193
|
+
<Set name="requestLog">
|
194
|
+
<!-- New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
|
195
|
+
<Arg><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Arg>
|
196
|
+
<Set name="retainDays">90</Set>
|
197
|
+
<Set name="append">true</Set>
|
198
|
+
<Set name="extended">false</Set>
|
199
|
+
<Set name="LogTimeZone">GMT</Set>
|
200
|
+
</New -->
|
201
|
+
</Set>
|
202
|
+
</Ref>
|
203
|
+
|
204
|
+
<!-- =========================================================== -->
|
205
|
+
<!-- extra options -->
|
206
|
+
<!-- =========================================================== -->
|
207
|
+
<Set name="stopAtShutdown">true</Set>
|
208
|
+
<!-- ensure/prevent Server: header being sent to browsers -->
|
209
|
+
<Set name="sendServerVersion">true</Set>
|
210
|
+
|
211
|
+
</Configure>
|
212
|
+
|
@@ -0,0 +1,379 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
|
3
|
+
<!-- ===================================================================== -->
|
4
|
+
<!-- This file contains the default descriptor for web applications. -->
|
5
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
6
|
+
<!-- The intent of this descriptor is to include jetty specific or common -->
|
7
|
+
<!-- configuration for all webapps. If a context has a webdefault.xml -->
|
8
|
+
<!-- descriptor, it is applied before the contexts own web.xml file -->
|
9
|
+
<!-- -->
|
10
|
+
<!-- A context may be assigned a default descriptor by: -->
|
11
|
+
<!-- + Calling WebApplicationContext.setDefaultsDescriptor -->
|
12
|
+
<!-- + Passed an arg to addWebApplications -->
|
13
|
+
<!-- -->
|
14
|
+
<!-- This file is used both as the resource within the jetty.jar (which is -->
|
15
|
+
<!-- used as the default if no explicit defaults descriptor is set) and it -->
|
16
|
+
<!-- is copied to the etc directory of the Jetty distro and explicitly -->
|
17
|
+
<!-- by the jetty.xml file. -->
|
18
|
+
<!-- -->
|
19
|
+
<!-- ===================================================================== -->
|
20
|
+
<web-app
|
21
|
+
xmlns="http://java.sun.com/xml/ns/javaee"
|
22
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
23
|
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
|
24
|
+
metadata-complete="true"
|
25
|
+
version="2.5">
|
26
|
+
|
27
|
+
<description>
|
28
|
+
Default web.xml file.
|
29
|
+
This file is applied to a Web application before it's own WEB_INF/web.xml file
|
30
|
+
</description>
|
31
|
+
|
32
|
+
|
33
|
+
<!-- ==================================================================== -->
|
34
|
+
<!-- Context params to control Session Cookies -->
|
35
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
36
|
+
<!-- UNCOMMENT TO ACTIVATE
|
37
|
+
<context-param>
|
38
|
+
<param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
|
39
|
+
<param-value>127.0.0.1</param-value>
|
40
|
+
</context-param>
|
41
|
+
|
42
|
+
<context-param>
|
43
|
+
<param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
|
44
|
+
<param-value>/</param-value>
|
45
|
+
</context-param>
|
46
|
+
|
47
|
+
<context-param>
|
48
|
+
<param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
|
49
|
+
<param-value>-1</param-value>
|
50
|
+
</context-param>
|
51
|
+
-->
|
52
|
+
|
53
|
+
<context-param>
|
54
|
+
<param-name>org.mortbay.jetty.webapp.NoTLDJarPattern</param-name>
|
55
|
+
<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>
|
56
|
+
</context-param>
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
<!-- ==================================================================== -->
|
61
|
+
<!-- The default servlet. -->
|
62
|
+
<!-- This servlet, normally mapped to /, provides the handling for static -->
|
63
|
+
<!-- content, OPTIONS and TRACE methods for the context. -->
|
64
|
+
<!-- The following initParameters are supported: -->
|
65
|
+
<!-- -->
|
66
|
+
<!-- acceptRanges If true, range requests and responses are -->
|
67
|
+
<!-- supported -->
|
68
|
+
<!-- -->
|
69
|
+
<!-- dirAllowed If true, directory listings are returned if no -->
|
70
|
+
<!-- welcome file is found. Else 403 Forbidden. -->
|
71
|
+
<!-- -->
|
72
|
+
<!-- redirectWelcome If true, redirect welcome file requests -->
|
73
|
+
<!-- else use request dispatcher forwards -->
|
74
|
+
<!-- -->
|
75
|
+
<!-- gzip If set to true, then static content will be served-->
|
76
|
+
<!-- as gzip content encoded if a matching resource is -->
|
77
|
+
<!-- found ending with ".gz" -->
|
78
|
+
<!-- -->
|
79
|
+
<!-- resoureBase Can be set to replace the context resource base -->
|
80
|
+
<!-- -->
|
81
|
+
<!-- relativeResourceBase -->
|
82
|
+
<!-- Set with a pathname relative to the base of the -->
|
83
|
+
<!-- servlet context root. Useful for only serving -->
|
84
|
+
<!-- static content from only specific subdirectories. -->
|
85
|
+
<!-- -->
|
86
|
+
<!-- useFileMappedBuffer -->
|
87
|
+
<!-- If set to true (the default), a memory mapped -->
|
88
|
+
<!-- file buffer will be used to serve static content -->
|
89
|
+
<!-- when using an NIO connector. Setting this value -->
|
90
|
+
<!-- to false means that a direct buffer will be used -->
|
91
|
+
<!-- instead. If you are having trouble with Windows -->
|
92
|
+
<!-- file locking, set this to false. -->
|
93
|
+
<!-- -->
|
94
|
+
<!-- cacheControl If set, all static content will have this value -->
|
95
|
+
<!-- set as the cache-control header. -->
|
96
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
97
|
+
<servlet>
|
98
|
+
<servlet-name>default</servlet-name>
|
99
|
+
<servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class>
|
100
|
+
<init-param>
|
101
|
+
<param-name>acceptRanges</param-name>
|
102
|
+
<param-value>true</param-value>
|
103
|
+
</init-param>
|
104
|
+
<init-param>
|
105
|
+
<param-name>dirAllowed</param-name>
|
106
|
+
<param-value>true</param-value>
|
107
|
+
</init-param>
|
108
|
+
<init-param>
|
109
|
+
<param-name>redirectWelcome</param-name>
|
110
|
+
<param-value>false</param-value>
|
111
|
+
</init-param>
|
112
|
+
<init-param>
|
113
|
+
<param-name>maxCacheSize</param-name>
|
114
|
+
<param-value>2000000</param-value>
|
115
|
+
</init-param>
|
116
|
+
<init-param>
|
117
|
+
<param-name>maxCachedFileSize</param-name>
|
118
|
+
<param-value>254000</param-value>
|
119
|
+
</init-param>
|
120
|
+
<init-param>
|
121
|
+
<param-name>maxCachedFiles</param-name>
|
122
|
+
<param-value>1000</param-value>
|
123
|
+
</init-param>
|
124
|
+
<init-param>
|
125
|
+
<param-name>gzip</param-name>
|
126
|
+
<param-value>false</param-value>
|
127
|
+
</init-param>
|
128
|
+
<init-param>
|
129
|
+
<param-name>useFileMappedBuffer</param-name>
|
130
|
+
<param-value>false</param-value>
|
131
|
+
</init-param>
|
132
|
+
<!--
|
133
|
+
<init-param>
|
134
|
+
<param-name>cacheControl</param-name>
|
135
|
+
<param-value>max-age=3600,public</param-value>
|
136
|
+
</init-param>
|
137
|
+
-->
|
138
|
+
<load-on-startup>0</load-on-startup>
|
139
|
+
</servlet>
|
140
|
+
|
141
|
+
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
|
142
|
+
|
143
|
+
|
144
|
+
<!-- ==================================================================== -->
|
145
|
+
<!-- JSP Servlet -->
|
146
|
+
<!-- This is the jasper JSP servlet from the jakarta project -->
|
147
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
148
|
+
<!-- The JSP page compiler and execution servlet, which is the mechanism -->
|
149
|
+
<!-- used by Glassfish to support JSP pages. Traditionally, this servlet -->
|
150
|
+
<!-- is mapped to URL patterh "*.jsp". This servlet supports the -->
|
151
|
+
<!-- following initialization parameters (default values are in square -->
|
152
|
+
<!-- brackets): -->
|
153
|
+
<!-- -->
|
154
|
+
<!-- checkInterval If development is false and reloading is true, -->
|
155
|
+
<!-- background compiles are enabled. checkInterval -->
|
156
|
+
<!-- is the time in seconds between checks to see -->
|
157
|
+
<!-- if a JSP page needs to be recompiled. [300] -->
|
158
|
+
<!-- -->
|
159
|
+
<!-- compiler Which compiler Ant should use to compile JSP -->
|
160
|
+
<!-- pages. See the Ant documenation for more -->
|
161
|
+
<!-- information. [javac] -->
|
162
|
+
<!-- -->
|
163
|
+
<!-- classdebuginfo Should the class file be compiled with -->
|
164
|
+
<!-- debugging information? [true] -->
|
165
|
+
<!-- -->
|
166
|
+
<!-- classpath What class path should I use while compiling -->
|
167
|
+
<!-- generated servlets? [Created dynamically -->
|
168
|
+
<!-- based on the current web application] -->
|
169
|
+
<!-- Set to ? to make the container explicitly set -->
|
170
|
+
<!-- this parameter. -->
|
171
|
+
<!-- -->
|
172
|
+
<!-- development Is Jasper used in development mode (will check -->
|
173
|
+
<!-- for JSP modification on every access)? [true] -->
|
174
|
+
<!-- -->
|
175
|
+
<!-- enablePooling Determines whether tag handler pooling is -->
|
176
|
+
<!-- enabled [true] -->
|
177
|
+
<!-- -->
|
178
|
+
<!-- fork Tell Ant to fork compiles of JSP pages so that -->
|
179
|
+
<!-- a separate JVM is used for JSP page compiles -->
|
180
|
+
<!-- from the one Tomcat is running in. [true] -->
|
181
|
+
<!-- -->
|
182
|
+
<!-- ieClassId The class-id value to be sent to Internet -->
|
183
|
+
<!-- Explorer when using <jsp:plugin> tags. -->
|
184
|
+
<!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] -->
|
185
|
+
<!-- -->
|
186
|
+
<!-- javaEncoding Java file encoding to use for generating java -->
|
187
|
+
<!-- source files. [UTF-8] -->
|
188
|
+
<!-- -->
|
189
|
+
<!-- keepgenerated Should we keep the generated Java source code -->
|
190
|
+
<!-- for each page instead of deleting it? [true] -->
|
191
|
+
<!-- -->
|
192
|
+
<!-- logVerbosityLevel The level of detailed messages to be produced -->
|
193
|
+
<!-- by this servlet. Increasing levels cause the -->
|
194
|
+
<!-- generation of more messages. Valid values are -->
|
195
|
+
<!-- FATAL, ERROR, WARNING, INFORMATION, and DEBUG. -->
|
196
|
+
<!-- [WARNING] -->
|
197
|
+
<!-- -->
|
198
|
+
<!-- mappedfile Should we generate static content with one -->
|
199
|
+
<!-- print statement per input line, to ease -->
|
200
|
+
<!-- debugging? [false] -->
|
201
|
+
<!-- -->
|
202
|
+
<!-- -->
|
203
|
+
<!-- reloading Should Jasper check for modified JSPs? [true] -->
|
204
|
+
<!-- -->
|
205
|
+
<!-- suppressSmap Should the generation of SMAP info for JSR45 -->
|
206
|
+
<!-- debugging be suppressed? [false] -->
|
207
|
+
<!-- -->
|
208
|
+
<!-- dumpSmap Should the SMAP info for JSR45 debugging be -->
|
209
|
+
<!-- dumped to a file? [false] -->
|
210
|
+
<!-- False if suppressSmap is true -->
|
211
|
+
<!-- -->
|
212
|
+
<!-- scratchdir What scratch directory should we use when -->
|
213
|
+
<!-- compiling JSP pages? [default work directory -->
|
214
|
+
<!-- for the current web application] -->
|
215
|
+
<!-- -->
|
216
|
+
<!-- tagpoolMaxSize The maximum tag handler pool size [5] -->
|
217
|
+
<!-- -->
|
218
|
+
<!-- xpoweredBy Determines whether X-Powered-By response -->
|
219
|
+
<!-- header is added by generated servlet [false] -->
|
220
|
+
<!-- -->
|
221
|
+
<!-- If you wish to use Jikes to compile JSP pages: -->
|
222
|
+
<!-- Set the init parameter "compiler" to "jikes". Define -->
|
223
|
+
<!-- the property "-Dbuild.compiler.emacs=true" when starting Jetty -->
|
224
|
+
<!-- to cause Jikes to emit error messages in a format compatible with -->
|
225
|
+
<!-- Jasper. -->
|
226
|
+
<!-- If you get an error reporting that jikes can't use UTF-8 encoding, -->
|
227
|
+
<!-- try setting the init parameter "javaEncoding" to "ISO-8859-1". -->
|
228
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
229
|
+
<servlet id="jsp">
|
230
|
+
<servlet-name>jsp</servlet-name>
|
231
|
+
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
|
232
|
+
<init-param>
|
233
|
+
<param-name>logVerbosityLevel</param-name>
|
234
|
+
<param-value>DEBUG</param-value>
|
235
|
+
</init-param>
|
236
|
+
<init-param>
|
237
|
+
<param-name>fork</param-name>
|
238
|
+
<param-value>false</param-value>
|
239
|
+
</init-param>
|
240
|
+
<init-param>
|
241
|
+
<param-name>xpoweredBy</param-name>
|
242
|
+
<param-value>false</param-value>
|
243
|
+
</init-param>
|
244
|
+
<!--
|
245
|
+
<init-param>
|
246
|
+
<param-name>classpath</param-name>
|
247
|
+
<param-value>?</param-value>
|
248
|
+
</init-param>
|
249
|
+
-->
|
250
|
+
<load-on-startup>0</load-on-startup>
|
251
|
+
</servlet>
|
252
|
+
|
253
|
+
<servlet-mapping>
|
254
|
+
<servlet-name>jsp</servlet-name>
|
255
|
+
<url-pattern>*.jsp</url-pattern>
|
256
|
+
<url-pattern>*.jspf</url-pattern>
|
257
|
+
<url-pattern>*.jspx</url-pattern>
|
258
|
+
<url-pattern>*.xsp</url-pattern>
|
259
|
+
<url-pattern>*.JSP</url-pattern>
|
260
|
+
<url-pattern>*.JSPF</url-pattern>
|
261
|
+
<url-pattern>*.JSPX</url-pattern>
|
262
|
+
<url-pattern>*.XSP</url-pattern>
|
263
|
+
</servlet-mapping>
|
264
|
+
|
265
|
+
<!-- ==================================================================== -->
|
266
|
+
<!-- Dynamic Servlet Invoker. -->
|
267
|
+
<!-- This servlet invokes anonymous servlets that have not been defined -->
|
268
|
+
<!-- in the web.xml or by other means. The first element of the pathInfo -->
|
269
|
+
<!-- of a request passed to the envoker is treated as a servlet name for -->
|
270
|
+
<!-- an existing servlet, or as a class name of a new servlet. -->
|
271
|
+
<!-- This servlet is normally mapped to /servlet/* -->
|
272
|
+
<!-- This servlet support the following initParams: -->
|
273
|
+
<!-- -->
|
274
|
+
<!-- nonContextServlets If false, the invoker can only load -->
|
275
|
+
<!-- servlets from the contexts classloader. -->
|
276
|
+
<!-- This is false by default and setting this -->
|
277
|
+
<!-- to true may have security implications. -->
|
278
|
+
<!-- -->
|
279
|
+
<!-- verbose If true, log dynamic loads -->
|
280
|
+
<!-- -->
|
281
|
+
<!-- * All other parameters are copied to the -->
|
282
|
+
<!-- each dynamic servlet as init parameters -->
|
283
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
284
|
+
<!-- Uncomment for dynamic invocation
|
285
|
+
<servlet>
|
286
|
+
<servlet-name>invoker</servlet-name>
|
287
|
+
<servlet-class>org.mortbay.jetty.servlet.Invoker</servlet-class>
|
288
|
+
<init-param>
|
289
|
+
<param-name>verbose</param-name>
|
290
|
+
<param-value>false</param-value>
|
291
|
+
</init-param>
|
292
|
+
<init-param>
|
293
|
+
<param-name>nonContextServlets</param-name>
|
294
|
+
<param-value>false</param-value>
|
295
|
+
</init-param>
|
296
|
+
<init-param>
|
297
|
+
<param-name>dynamicParam</param-name>
|
298
|
+
<param-value>anyValue</param-value>
|
299
|
+
</init-param>
|
300
|
+
<load-on-startup>0</load-on-startup>
|
301
|
+
</servlet>
|
302
|
+
|
303
|
+
<servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>
|
304
|
+
-->
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
<!-- ==================================================================== -->
|
309
|
+
<session-config>
|
310
|
+
<session-timeout>30</session-timeout>
|
311
|
+
</session-config>
|
312
|
+
|
313
|
+
<!-- ==================================================================== -->
|
314
|
+
<!-- Default MIME mappings -->
|
315
|
+
<!-- The default MIME mappings are provided by the mime.properties -->
|
316
|
+
<!-- resource in the org.mortbay.jetty.jar file. Additional or modified -->
|
317
|
+
<!-- mappings may be specified here -->
|
318
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
319
|
+
<!-- UNCOMMENT TO ACTIVATE
|
320
|
+
<mime-mapping>
|
321
|
+
<extension>mysuffix</extension>
|
322
|
+
<mime-type>mymime/type</mime-type>
|
323
|
+
</mime-mapping>
|
324
|
+
-->
|
325
|
+
|
326
|
+
<!-- ==================================================================== -->
|
327
|
+
<welcome-file-list>
|
328
|
+
<welcome-file>index.html</welcome-file>
|
329
|
+
<welcome-file>index.htm</welcome-file>
|
330
|
+
<welcome-file>index.jsp</welcome-file>
|
331
|
+
</welcome-file-list>
|
332
|
+
|
333
|
+
<!-- ==================================================================== -->
|
334
|
+
<locale-encoding-mapping-list>
|
335
|
+
<locale-encoding-mapping><locale>ar</locale><encoding>ISO-8859-6</encoding></locale-encoding-mapping>
|
336
|
+
<locale-encoding-mapping><locale>be</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
337
|
+
<locale-encoding-mapping><locale>bg</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
338
|
+
<locale-encoding-mapping><locale>ca</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
339
|
+
<locale-encoding-mapping><locale>cs</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
340
|
+
<locale-encoding-mapping><locale>da</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
341
|
+
<locale-encoding-mapping><locale>de</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
342
|
+
<locale-encoding-mapping><locale>el</locale><encoding>ISO-8859-7</encoding></locale-encoding-mapping>
|
343
|
+
<locale-encoding-mapping><locale>en</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
344
|
+
<locale-encoding-mapping><locale>es</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
345
|
+
<locale-encoding-mapping><locale>et</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
346
|
+
<locale-encoding-mapping><locale>fi</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
347
|
+
<locale-encoding-mapping><locale>fr</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
348
|
+
<locale-encoding-mapping><locale>hr</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
349
|
+
<locale-encoding-mapping><locale>hu</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
350
|
+
<locale-encoding-mapping><locale>is</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
351
|
+
<locale-encoding-mapping><locale>it</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
352
|
+
<locale-encoding-mapping><locale>iw</locale><encoding>ISO-8859-8</encoding></locale-encoding-mapping>
|
353
|
+
<locale-encoding-mapping><locale>ja</locale><encoding>Shift_JIS</encoding></locale-encoding-mapping>
|
354
|
+
<locale-encoding-mapping><locale>ko</locale><encoding>EUC-KR</encoding></locale-encoding-mapping>
|
355
|
+
<locale-encoding-mapping><locale>lt</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
356
|
+
<locale-encoding-mapping><locale>lv</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
357
|
+
<locale-encoding-mapping><locale>mk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
358
|
+
<locale-encoding-mapping><locale>nl</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
359
|
+
<locale-encoding-mapping><locale>no</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
360
|
+
<locale-encoding-mapping><locale>pl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
361
|
+
<locale-encoding-mapping><locale>pt</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
362
|
+
<locale-encoding-mapping><locale>ro</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
363
|
+
<locale-encoding-mapping><locale>ru</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
364
|
+
<locale-encoding-mapping><locale>sh</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
365
|
+
<locale-encoding-mapping><locale>sk</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
366
|
+
<locale-encoding-mapping><locale>sl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
367
|
+
<locale-encoding-mapping><locale>sq</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
|
368
|
+
<locale-encoding-mapping><locale>sr</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
369
|
+
<locale-encoding-mapping><locale>sv</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
|
370
|
+
<locale-encoding-mapping><locale>tr</locale><encoding>ISO-8859-9</encoding></locale-encoding-mapping>
|
371
|
+
<locale-encoding-mapping><locale>uk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
|
372
|
+
<locale-encoding-mapping><locale>zh</locale><encoding>GB2312</encoding></locale-encoding-mapping>
|
373
|
+
<locale-encoding-mapping><locale>zh_TW</locale><encoding>Big5</encoding></locale-encoding-mapping>
|
374
|
+
</locale-encoding-mapping-list>
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
</web-app>
|
379
|
+
|