nxa-sunspot 0.10.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/History.txt +153 -0
  2. data/LICENSE +18 -0
  3. data/README.rdoc +191 -0
  4. data/Rakefile +9 -0
  5. data/TODO +14 -0
  6. data/VERSION.yml +4 -0
  7. data/bin/sunspot-configure-solr +40 -0
  8. data/bin/sunspot-solr +95 -0
  9. data/lib/light_config.rb +40 -0
  10. data/lib/sunspot.rb +488 -0
  11. data/lib/sunspot/adapters.rb +265 -0
  12. data/lib/sunspot/composite_setup.rb +188 -0
  13. data/lib/sunspot/configuration.rb +56 -0
  14. data/lib/sunspot/data_extractor.rb +50 -0
  15. data/lib/sunspot/dsl.rb +4 -0
  16. data/lib/sunspot/dsl/field_query.rb +150 -0
  17. data/lib/sunspot/dsl/fields.rb +100 -0
  18. data/lib/sunspot/dsl/fulltext.rb +228 -0
  19. data/lib/sunspot/dsl/query.rb +162 -0
  20. data/lib/sunspot/dsl/query_facet.rb +36 -0
  21. data/lib/sunspot/dsl/restriction.rb +25 -0
  22. data/lib/sunspot/dsl/scope.rb +225 -0
  23. data/lib/sunspot/dsl/search.rb +30 -0
  24. data/lib/sunspot/field.rb +181 -0
  25. data/lib/sunspot/field_factory.rb +144 -0
  26. data/lib/sunspot/indexer.rb +133 -0
  27. data/lib/sunspot/query.rb +9 -0
  28. data/lib/sunspot/query/abstract_field_facet.rb +43 -0
  29. data/lib/sunspot/query/boost_query.rb +20 -0
  30. data/lib/sunspot/query/connective.rb +189 -0
  31. data/lib/sunspot/query/date_field_facet.rb +14 -0
  32. data/lib/sunspot/query/dismax.rb +88 -0
  33. data/lib/sunspot/query/field_facet.rb +9 -0
  34. data/lib/sunspot/query/highlighting.rb +55 -0
  35. data/lib/sunspot/query/local.rb +27 -0
  36. data/lib/sunspot/query/pagination.rb +38 -0
  37. data/lib/sunspot/query/query.rb +86 -0
  38. data/lib/sunspot/query/query_facet.rb +16 -0
  39. data/lib/sunspot/query/restriction.rb +254 -0
  40. data/lib/sunspot/query/scope.rb +9 -0
  41. data/lib/sunspot/query/sort.rb +105 -0
  42. data/lib/sunspot/query/sort_composite.rb +33 -0
  43. data/lib/sunspot/query/text_field_boost.rb +15 -0
  44. data/lib/sunspot/schema.rb +147 -0
  45. data/lib/sunspot/search.rb +216 -0
  46. data/lib/sunspot/search/date_facet.rb +35 -0
  47. data/lib/sunspot/search/facet_row.rb +27 -0
  48. data/lib/sunspot/search/field_facet.rb +44 -0
  49. data/lib/sunspot/search/highlight.rb +38 -0
  50. data/lib/sunspot/search/hit.rb +117 -0
  51. data/lib/sunspot/search/query_facet.rb +62 -0
  52. data/lib/sunspot/session.rb +236 -0
  53. data/lib/sunspot/setup.rb +323 -0
  54. data/lib/sunspot/text_field_setup.rb +29 -0
  55. data/lib/sunspot/type.rb +204 -0
  56. data/lib/sunspot/util.rb +210 -0
  57. data/solr/etc/jetty.xml +212 -0
  58. data/solr/etc/webdefault.xml +379 -0
  59. data/solr/lib/jetty-6.1.3.jar +0 -0
  60. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  61. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  62. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  63. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  64. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  65. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  66. data/solr/solr/conf/elevate.xml +36 -0
  67. data/solr/solr/conf/protwords.txt +21 -0
  68. data/solr/solr/conf/schema.xml +64 -0
  69. data/solr/solr/conf/solrconfig.xml +725 -0
  70. data/solr/solr/conf/stopwords.txt +57 -0
  71. data/solr/solr/conf/synonyms.txt +31 -0
  72. data/solr/solr/lib/geoapi-nogenerics-2.1-M2.jar +0 -0
  73. data/solr/solr/lib/gt2-referencing-2.3.1.jar +0 -0
  74. data/solr/solr/lib/jsr108-0.01.jar +0 -0
  75. data/solr/solr/lib/locallucene.jar +0 -0
  76. data/solr/solr/lib/localsolr.jar +0 -0
  77. data/solr/start.jar +0 -0
  78. data/solr/webapps/solr.war +0 -0
  79. data/spec/api/adapters_spec.rb +33 -0
  80. data/spec/api/indexer/attributes_spec.rb +110 -0
  81. data/spec/api/indexer/batch_spec.rb +46 -0
  82. data/spec/api/indexer/dynamic_fields_spec.rb +33 -0
  83. data/spec/api/indexer/fixed_fields_spec.rb +57 -0
  84. data/spec/api/indexer/fulltext_spec.rb +43 -0
  85. data/spec/api/indexer/removal_spec.rb +46 -0
  86. data/spec/api/indexer/spec_helper.rb +1 -0
  87. data/spec/api/indexer_spec.rb +4 -0
  88. data/spec/api/query/adjust_params_spec.rb +37 -0
  89. data/spec/api/query/connectives_spec.rb +176 -0
  90. data/spec/api/query/dsl_spec.rb +12 -0
  91. data/spec/api/query/dynamic_fields_spec.rb +149 -0
  92. data/spec/api/query/faceting_spec.rb +296 -0
  93. data/spec/api/query/fulltext_spec.rb +281 -0
  94. data/spec/api/query/highlighting_spec.rb +225 -0
  95. data/spec/api/query/local_spec.rb +62 -0
  96. data/spec/api/query/ordering_pagination_spec.rb +95 -0
  97. data/spec/api/query/scope_spec.rb +266 -0
  98. data/spec/api/query/spec_helper.rb +1 -0
  99. data/spec/api/query/text_field_scoping_spec.rb +30 -0
  100. data/spec/api/query/types_spec.rb +20 -0
  101. data/spec/api/search/dynamic_fields_spec.rb +27 -0
  102. data/spec/api/search/faceting_spec.rb +242 -0
  103. data/spec/api/search/highlighting_spec.rb +65 -0
  104. data/spec/api/search/hits_spec.rb +67 -0
  105. data/spec/api/search/results_spec.rb +52 -0
  106. data/spec/api/search/search_spec.rb +23 -0
  107. data/spec/api/search/spec_helper.rb +1 -0
  108. data/spec/api/session_spec.rb +198 -0
  109. data/spec/api/spec_helper.rb +1 -0
  110. data/spec/api/sunspot_spec.rb +18 -0
  111. data/spec/helpers/indexer_helper.rb +29 -0
  112. data/spec/helpers/query_helper.rb +13 -0
  113. data/spec/helpers/search_helper.rb +78 -0
  114. data/spec/integration/dynamic_fields_spec.rb +55 -0
  115. data/spec/integration/faceting_spec.rb +188 -0
  116. data/spec/integration/highlighting_spec.rb +22 -0
  117. data/spec/integration/indexing_spec.rb +7 -0
  118. data/spec/integration/keyword_search_spec.rb +245 -0
  119. data/spec/integration/local_search_spec.rb +56 -0
  120. data/spec/integration/scoped_search_spec.rb +303 -0
  121. data/spec/integration/spec_helper.rb +7 -0
  122. data/spec/integration/stored_fields_spec.rb +10 -0
  123. data/spec/integration/test_pagination.rb +32 -0
  124. data/spec/mocks/adapters.rb +32 -0
  125. data/spec/mocks/blog.rb +3 -0
  126. data/spec/mocks/comment.rb +19 -0
  127. data/spec/mocks/connection.rb +106 -0
  128. data/spec/mocks/mock_adapter.rb +30 -0
  129. data/spec/mocks/mock_record.rb +48 -0
  130. data/spec/mocks/photo.rb +11 -0
  131. data/spec/mocks/post.rb +75 -0
  132. data/spec/mocks/super_class.rb +2 -0
  133. data/spec/mocks/user.rb +8 -0
  134. data/spec/spec_helper.rb +68 -0
  135. data/tasks/gemspec.rake +42 -0
  136. data/tasks/rcov.rake +28 -0
  137. data/tasks/rdoc.rake +22 -0
  138. data/tasks/schema.rake +19 -0
  139. data/tasks/spec.rake +24 -0
  140. data/tasks/todo.rake +4 -0
  141. data/templates/schema.xml.erb +36 -0
  142. metadata +319 -0
@@ -0,0 +1,210 @@
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_defined?(const_name) ? context.const_get(const_name) : context.const_missing(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
+ def extract_options_from(args)
91
+ if args.last.is_a?(Hash)
92
+ args.pop
93
+ else
94
+ {}
95
+ end
96
+ end
97
+
98
+ #
99
+ # Ruby's treatment of Strings as Enumerables is heavily annoying. As far
100
+ # as I know the behavior of Kernel.Array() is otherwise fine.
101
+ #
102
+ def Array(object)
103
+ if object.is_a?(String)
104
+ [object]
105
+ else
106
+ super
107
+ end
108
+ end
109
+
110
+ #
111
+ # Perform a deep merge of hashes, returning the result as a new hash.
112
+ # See #deep_merge_into for rules used to merge the hashes
113
+ #
114
+ # ==== Parameters
115
+ #
116
+ # left<Hash>:: Hash to merge
117
+ # right<Hash>:: The other hash to merge
118
+ #
119
+ # ==== Returns
120
+ #
121
+ # Hash:: New hash containing the given hashes deep-merged.
122
+ #
123
+ def deep_merge(left, right)
124
+ deep_merge_into({}, left, right)
125
+ end
126
+
127
+ #
128
+ # Perform a deep merge of the right hash into the left hash
129
+ #
130
+ # ==== Parameters
131
+ #
132
+ # left:: Hash to receive merge
133
+ # right:: Hash to merge into left
134
+ #
135
+ # ==== Returns
136
+ #
137
+ # Hash:: left
138
+ #
139
+ def deep_merge!(left, right)
140
+ deep_merge_into(left, left, right)
141
+ end
142
+
143
+ private
144
+
145
+ #
146
+ # Deep merge two hashes into a third hash, using rules that produce nice
147
+ # merged parameter hashes. The rules are as follows, for a given key:
148
+ #
149
+ # * If only one hash has a value, or if both hashes have the same value,
150
+ # just use the value.
151
+ # * If either of the values is not a hash, create arrays out of both
152
+ # values and concatenate them.
153
+ # * Otherwise, deep merge the two values (which are both hashes)
154
+ #
155
+ # ==== Parameters
156
+ #
157
+ # destination<Hash>:: Hash into which to perform the merge
158
+ # left<Hash>:: One hash to merge
159
+ # right<Hash>:: The other hash to merge
160
+ #
161
+ # ==== Returns
162
+ #
163
+ # Hash:: destination
164
+ #
165
+ def deep_merge_into(destination, left, right)
166
+ left.each_pair do |name, left_value|
167
+ right_value = right[name]
168
+ destination[name] =
169
+ if right_value.nil? || left_value == right_value
170
+ left_value
171
+ elsif !left_value.respond_to?(:each_pair) || !right_value.respond_to?(:each_pair)
172
+ Array(left_value) + Array(right_value)
173
+ else
174
+ merged_value = {}
175
+ deep_merge_into(merged_value, left_value, right_value)
176
+ end
177
+ end
178
+ left_keys = Set.new(left.keys)
179
+ destination.merge!(right.reject { |k, v| left_keys.include?(k) })
180
+ destination
181
+ end
182
+ end
183
+
184
+ class Coordinates #:nodoc:
185
+ def initialize(coords)
186
+ @coords = coords
187
+ end
188
+
189
+ def lat
190
+ if @coords.respond_to?(:[])
191
+ @coords[0]
192
+ else
193
+ @coords.lat
194
+ end.to_f
195
+ end
196
+
197
+ def lng
198
+ if @coords.respond_to?(:[])
199
+ @coords[1]
200
+ elsif @coords.respond_to?(:lng)
201
+ @coords.lng
202
+ elsif @coords.respond_to?(:lon)
203
+ @coords.lon
204
+ elsif @coords.respond_to?(:long)
205
+ @coords.long
206
+ end.to_f
207
+ end
208
+ end
209
+ end
210
+ end
@@ -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
+