Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
593dff46
Commit
593dff46
authored
May 20, 2015
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'gh-3014'
parents
3eb5c348
95f31b0d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
132 additions
and
6 deletions
+132
-6
ServerProperties.java
...ingframework/boot/autoconfigure/web/ServerProperties.java
+43
-0
appendix-application-properties.adoc
...cs/src/main/asciidoc/appendix-application-properties.adoc
+3
-0
application.properties
...sample-undertow/src/main/resources/application.properties
+3
-0
TomcatEmbeddedServletContainerFactory.java
...mbedded/tomcat/TomcatEmbeddedServletContainerFactory.java
+11
-6
UndertowEmbeddedServletContainerFactory.java
...ded/undertow/UndertowEmbeddedServletContainerFactory.java
+72
-0
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java
View file @
593dff46
...
@@ -56,6 +56,7 @@ import org.springframework.util.StringUtils;
...
@@ -56,6 +56,7 @@ import org.springframework.util.StringUtils;
* @author Stephane Nicoll
* @author Stephane Nicoll
* @author Andy Wilkinson
* @author Andy Wilkinson
* @author Ivan Sopov
* @author Ivan Sopov
* @author Marcos Barbero
*/
*/
@ConfigurationProperties
(
prefix
=
"server"
,
ignoreUnknownFields
=
false
)
@ConfigurationProperties
(
prefix
=
"server"
,
ignoreUnknownFields
=
false
)
public
class
ServerProperties
implements
EmbeddedServletContainerCustomizer
,
Ordered
{
public
class
ServerProperties
implements
EmbeddedServletContainerCustomizer
,
Ordered
{
...
@@ -578,6 +579,21 @@ public class ServerProperties implements EmbeddedServletContainerCustomizer, Ord
...
@@ -578,6 +579,21 @@ public class ServerProperties implements EmbeddedServletContainerCustomizer, Ord
private
Boolean
directBuffers
;
private
Boolean
directBuffers
;
/**
* Format pattern for access logs.
*/
private
String
accessLogPattern
=
"common"
;
/**
* Enable access log.
*/
private
boolean
accessLogEnabled
=
false
;
/**
* Undertow access log directory.
*/
private
File
accessLogDir
=
new
File
(
"logs"
);
public
Integer
getBufferSize
()
{
public
Integer
getBufferSize
()
{
return
this
.
bufferSize
;
return
this
.
bufferSize
;
}
}
...
@@ -618,12 +634,39 @@ public class ServerProperties implements EmbeddedServletContainerCustomizer, Ord
...
@@ -618,12 +634,39 @@ public class ServerProperties implements EmbeddedServletContainerCustomizer, Ord
this
.
directBuffers
=
directBuffers
;
this
.
directBuffers
=
directBuffers
;
}
}
public
String
getAccessLogPattern
()
{
return
this
.
accessLogPattern
;
}
public
void
setAccessLogPattern
(
String
accessLogPattern
)
{
this
.
accessLogPattern
=
accessLogPattern
;
}
public
boolean
isAccessLogEnabled
()
{
return
this
.
accessLogEnabled
;
}
public
void
setAccessLogEnabled
(
boolean
accessLogEnabled
)
{
this
.
accessLogEnabled
=
accessLogEnabled
;
}
public
File
getAccessLogDir
()
{
return
this
.
accessLogDir
;
}
public
void
setAccessLogDir
(
File
accessLogDir
)
{
this
.
accessLogDir
=
accessLogDir
;
}
void
customizeUndertow
(
UndertowEmbeddedServletContainerFactory
factory
)
{
void
customizeUndertow
(
UndertowEmbeddedServletContainerFactory
factory
)
{
factory
.
setBufferSize
(
this
.
bufferSize
);
factory
.
setBufferSize
(
this
.
bufferSize
);
factory
.
setBuffersPerRegion
(
this
.
buffersPerRegion
);
factory
.
setBuffersPerRegion
(
this
.
buffersPerRegion
);
factory
.
setIoThreads
(
this
.
ioThreads
);
factory
.
setIoThreads
(
this
.
ioThreads
);
factory
.
setWorkerThreads
(
this
.
workerThreads
);
factory
.
setWorkerThreads
(
this
.
workerThreads
);
factory
.
setDirectBuffers
(
this
.
directBuffers
);
factory
.
setDirectBuffers
(
this
.
directBuffers
);
factory
.
setAccessLogDirectory
(
this
.
accessLogDir
);
factory
.
setAccessLogPattern
(
this
.
accessLogPattern
);
factory
.
setAccessLogEnabled
(
this
.
accessLogEnabled
);
}
}
}
}
...
...
spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
View file @
593dff46
...
@@ -95,6 +95,9 @@ content into your application; rather pick only the properties that you need.
...
@@ -95,6 +95,9 @@ content into your application; rather pick only the properties that you need.
server.tomcat.max-http-header-size= # maximum size in bytes of the HTTP message header
server.tomcat.max-http-header-size= # maximum size in bytes of the HTTP message header
server.tomcat.max-threads = 0 # number of threads in protocol handler
server.tomcat.max-threads = 0 # number of threads in protocol handler
server.tomcat.uri-encoding = UTF-8 # character encoding to use for URL decoding
server.tomcat.uri-encoding = UTF-8 # character encoding to use for URL decoding
server.undertow.access-log-enabled=false # if access logging is enabled
server.undertow.access-log-pattern=common # log pattern of the access log
server.undertow.access-log-dir=logs # access logs directory
# SPRING MVC ({sc-spring-boot-autoconfigure}/web/WebMvcProperties.{sc-ext}[WebMvcProperties])
# SPRING MVC ({sc-spring-boot-autoconfigure}/web/WebMvcProperties.{sc-ext}[WebMvcProperties])
spring.mvc.locale= # set fixed locale, e.g. en_UK
spring.mvc.locale= # set fixed locale, e.g. en_UK
...
...
spring-boot-samples/spring-boot-sample-undertow/src/main/resources/application.properties
0 → 100644
View file @
593dff46
server.undertow.access-log-enabled
=
true
server.undertow.access-log-dir
=
target/logs
server.undertow.access-log-pattern
=
combined
\ No newline at end of file
spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java
View file @
593dff46
...
@@ -382,7 +382,17 @@ public class TomcatEmbeddedServletContainerFactory extends
...
@@ -382,7 +382,17 @@ public class TomcatEmbeddedServletContainerFactory extends
return
new
TomcatEmbeddedServletContainer
(
tomcat
,
getPort
()
>=
0
);
return
new
TomcatEmbeddedServletContainer
(
tomcat
,
getPort
()
>=
0
);
}
}
private
File
createTempDir
(
String
prefix
)
{
@Override
public
void
setResourceLoader
(
ResourceLoader
resourceLoader
)
{
this
.
resourceLoader
=
resourceLoader
;
}
/**
* Returns the absolute temp dir for given web server.
* @param prefix webserver name
* @return The temp dir for given web server.
*/
protected
File
createTempDir
(
String
prefix
)
{
try
{
try
{
File
tempFolder
=
File
.
createTempFile
(
prefix
+
"."
,
"."
+
getPort
());
File
tempFolder
=
File
.
createTempFile
(
prefix
+
"."
,
"."
+
getPort
());
tempFolder
.
delete
();
tempFolder
.
delete
();
...
@@ -396,11 +406,6 @@ public class TomcatEmbeddedServletContainerFactory extends
...
@@ -396,11 +406,6 @@ public class TomcatEmbeddedServletContainerFactory extends
}
}
}
}
@Override
public
void
setResourceLoader
(
ResourceLoader
resourceLoader
)
{
this
.
resourceLoader
=
resourceLoader
;
}
/**
/**
* Set the Tomcat base directory. If not specified a temporary directory will be used.
* Set the Tomcat base directory. If not specified a temporary directory will be used.
* @param baseDirectory the tomcat base directory
* @param baseDirectory the tomcat base directory
...
...
spring-boot/src/main/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactory.java
View file @
593dff46
...
@@ -19,6 +19,11 @@ package org.springframework.boot.context.embedded.undertow;
...
@@ -19,6 +19,11 @@ package org.springframework.boot.context.embedded.undertow;
import
io.undertow.Undertow
;
import
io.undertow.Undertow
;
import
io.undertow.Undertow.Builder
;
import
io.undertow.Undertow.Builder
;
import
io.undertow.UndertowMessages
;
import
io.undertow.UndertowMessages
;
import
io.undertow.server.HandlerWrapper
;
import
io.undertow.server.HttpHandler
;
import
io.undertow.server.handlers.accesslog.AccessLogHandler
;
import
io.undertow.server.handlers.accesslog.AccessLogReceiver
;
import
io.undertow.server.handlers.accesslog.DefaultAccessLogReceiver
;
import
io.undertow.server.handlers.resource.ClassPathResourceManager
;
import
io.undertow.server.handlers.resource.ClassPathResourceManager
;
import
io.undertow.server.handlers.resource.FileResourceManager
;
import
io.undertow.server.handlers.resource.FileResourceManager
;
import
io.undertow.server.handlers.resource.Resource
;
import
io.undertow.server.handlers.resource.Resource
;
...
@@ -69,8 +74,11 @@ import org.springframework.context.ResourceLoaderAware;
...
@@ -69,8 +74,11 @@ import org.springframework.context.ResourceLoaderAware;
import
org.springframework.core.io.ResourceLoader
;
import
org.springframework.core.io.ResourceLoader
;
import
org.springframework.util.Assert
;
import
org.springframework.util.Assert
;
import
org.springframework.util.ResourceUtils
;
import
org.springframework.util.ResourceUtils
;
import
org.xnio.OptionMap
;
import
org.xnio.Options
;
import
org.xnio.Options
;
import
org.xnio.SslClientAuthMode
;
import
org.xnio.SslClientAuthMode
;
import
org.xnio.Xnio
;
import
org.xnio.XnioWorker
;
/**
/**
* {@link EmbeddedServletContainerFactory} that can be used to create
* {@link EmbeddedServletContainerFactory} that can be used to create
...
@@ -81,6 +89,7 @@ import org.xnio.SslClientAuthMode;
...
@@ -81,6 +89,7 @@ import org.xnio.SslClientAuthMode;
*
*
* @author Ivan Sopov
* @author Ivan Sopov
* @author Andy Wilkinson
* @author Andy Wilkinson
* @author Marcos Barbero
* @since 1.2.0
* @since 1.2.0
* @see UndertowEmbeddedServletContainer
* @see UndertowEmbeddedServletContainer
*/
*/
...
@@ -105,6 +114,12 @@ public class UndertowEmbeddedServletContainerFactory extends
...
@@ -105,6 +114,12 @@ public class UndertowEmbeddedServletContainerFactory extends
private
Boolean
directBuffers
;
private
Boolean
directBuffers
;
private
File
accessLogDirectory
;
private
String
accessLogPattern
;
private
boolean
accessLogEnabled
=
false
;
/**
/**
* Create a new {@link UndertowEmbeddedServletContainerFactory} instance.
* Create a new {@link UndertowEmbeddedServletContainerFactory} instance.
*/
*/
...
@@ -337,6 +352,9 @@ public class UndertowEmbeddedServletContainerFactory extends
...
@@ -337,6 +352,9 @@ public class UndertowEmbeddedServletContainerFactory extends
for
(
UndertowDeploymentInfoCustomizer
customizer
:
this
.
deploymentInfoCustomizers
)
{
for
(
UndertowDeploymentInfoCustomizer
customizer
:
this
.
deploymentInfoCustomizers
)
{
customizer
.
customize
(
deployment
);
customizer
.
customize
(
deployment
);
}
}
if
(
isAccessLogEnabled
())
{
configureAccessLog
(
deployment
);
}
DeploymentManager
manager
=
Servlets
.
defaultContainer
().
addDeployment
(
deployment
);
DeploymentManager
manager
=
Servlets
.
defaultContainer
().
addDeployment
(
deployment
);
manager
.
deploy
();
manager
.
deploy
();
SessionManager
sessionManager
=
manager
.
getDeployment
().
getSessionManager
();
SessionManager
sessionManager
=
manager
.
getDeployment
().
getSessionManager
();
...
@@ -345,6 +363,44 @@ public class UndertowEmbeddedServletContainerFactory extends
...
@@ -345,6 +363,44 @@ public class UndertowEmbeddedServletContainerFactory extends
return
manager
;
return
manager
;
}
}
private
void
configureAccessLog
(
DeploymentInfo
deploymentInfo
)
{
deploymentInfo
.
addInitialHandlerChainWrapper
(
new
HandlerWrapper
()
{
@Override
public
HttpHandler
wrap
(
HttpHandler
handler
)
{
return
createAccessLogHandler
(
handler
);
}
});
}
private
AccessLogHandler
createAccessLogHandler
(
HttpHandler
handler
)
{
try
{
createAccessLogDirectoryIfNecessary
();
AccessLogReceiver
accessLogReceiver
=
new
DefaultAccessLogReceiver
(
createWorker
(),
this
.
accessLogDirectory
,
"access_log"
);
String
formatString
=
(
this
.
accessLogPattern
!=
null
)
?
this
.
accessLogPattern
:
"common"
;
return
new
AccessLogHandler
(
handler
,
accessLogReceiver
,
formatString
,
Undertow
.
class
.
getClassLoader
());
}
catch
(
IOException
ex
)
{
throw
new
IllegalStateException
(
"Failed to create AccessLogHandler"
,
ex
);
}
}
private
void
createAccessLogDirectoryIfNecessary
()
{
Assert
.
notNull
(
this
.
accessLogDirectory
,
"accesslogDirectory must not be null"
);
if
(!
this
.
accessLogDirectory
.
isDirectory
()
&&
!
this
.
accessLogDirectory
.
mkdirs
())
{
throw
new
IllegalStateException
(
"Failed to create access log directory '"
+
this
.
accessLogDirectory
+
"'"
);
}
}
private
XnioWorker
createWorker
()
throws
IOException
{
Xnio
xnio
=
Xnio
.
getInstance
(
Undertow
.
class
.
getClassLoader
());
OptionMap
.
Builder
builder
=
OptionMap
.
builder
();
return
xnio
.
createWorker
(
builder
.
getMap
());
}
private
void
registerServletContainerInitializerToDriveServletContextInitializers
(
private
void
registerServletContainerInitializerToDriveServletContextInitializers
(
DeploymentInfo
deployment
,
ServletContextInitializer
...
initializers
)
{
DeploymentInfo
deployment
,
ServletContextInitializer
...
initializers
)
{
ServletContextInitializer
[]
mergedInitializers
=
mergeInitializers
(
initializers
);
ServletContextInitializer
[]
mergedInitializers
=
mergeInitializers
(
initializers
);
...
@@ -442,6 +498,22 @@ public class UndertowEmbeddedServletContainerFactory extends
...
@@ -442,6 +498,22 @@ public class UndertowEmbeddedServletContainerFactory extends
this
.
directBuffers
=
directBuffers
;
this
.
directBuffers
=
directBuffers
;
}
}
public
void
setAccessLogDirectory
(
File
accessLogDirectory
)
{
this
.
accessLogDirectory
=
accessLogDirectory
;
}
public
void
setAccessLogPattern
(
String
accessLogPattern
)
{
this
.
accessLogPattern
=
accessLogPattern
;
}
public
void
setAccessLogEnabled
(
boolean
accessLogEnabled
)
{
this
.
accessLogEnabled
=
accessLogEnabled
;
}
public
boolean
isAccessLogEnabled
()
{
return
this
.
accessLogEnabled
;
}
/**
/**
* Undertow {@link ResourceManager} for JAR resources.
* Undertow {@link ResourceManager} for JAR resources.
*/
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment