Commit Graph

340 Commits (e088ecd1bc4d6b98c06f7afccaaf06dbdd3a5023)

Author SHA1 Message Date
Dave Syer ed2876e931 Add a PrefixMetricWriter interface to cleanly separate write/read
The PrefixMetricGroupExporter only really makes sesne if the writer
is aware of the groups, so it seemed better to use a new interface
than mix read/write.
11 years ago
Dave Syer 94e891e924 Rename method count() -> countGroups()
Fixes gh-923
11 years ago
Phillip Webb 8bcda1bcbe Polish 11 years ago
Christian Dupuis 3f498a4803 Add configuration properties to disable out of the box health checks 11 years ago
Christian Dupuis 4ffe816a21 Fix typo 11 years ago
Christian Dupuis fef998f914 Remove autowired injection of HealthIndicators into HealthEndpoint
Moved into EndpointAutoConfiguration
11 years ago
Phillip Webb 938609fdc0 Merge branch '1.0.x'
Conflicts:
	spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/CrshAutoConfiguration.java
	spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java
11 years ago
Christian Dupuis 875e77d420 Correctly decode URL coming into the Jolokia endpoint
fixes #869
11 years ago
Phillip Webb fa7da5925b Remove checked exceptions from @PostConstructs
Update all @PostConstruct methods to ensure that they don't throw
checked exceptions. Required to allow deployment of Spring Boot
applications on Glassfish.

Fixes gh-868
11 years ago
Dave Syer 5249f54c5a Integrate @ConfigurationProperties @Beans with DataSource configuration
We now have a much simpler DataSourceAutoConfiguration that binds to whatever
DataSource concrete type it finds at runtime. To be able to quickly switch between
Hikari and the other types of DataSource there's a minute shim for translating
the common properties (username, password, url, driverClassName), but actually
only url is different. The shim and also DataSource initialization is supported
through DataSourceProperties, but the other native properties get bound directly
through the concrete runtime type of the DataSource.

The /configprops endpoint works (and is exposed in the actuator sample).

Fixes gh-840, fixes gh-477, see also gh-808.
11 years ago
Dave Syer 660b73b5c6 Ensure only bindable properties are reported in /configprops
Introspects the properties that are being exposed in the report
and only renders the ones that are a) convertible from String
and b) have a setter. That goes a long way to making it a bullet
proof generic renderer of any Java object that can be bound with
@ConfigurationProperties.
11 years ago
Dave Syer 85719f75e4 Add @Bean-level config properties to /configprops 11 years ago
Christian Dupuis 9e56c38b7a Rename DefaulErrorAttributes to DefaultErrorAttributes
fixes #853
11 years ago
Phillip Webb 30ac768cbf Remove @ControllerAdvice from BasicErrorController
Update the BasicErrorController so that it no longer needs to implement
@ControllerAdvice or have an @ExceptionHandler method.

A new ErrorAttributes interface is now used to obtain error details,
the DefaultErrorAttributes implementation uses a
HandlerExceptionResolver to obtain root exception details if the
`javax.servlet.error.*` attributes are missing.

This change also removes the need for the extract(...) method on
ErrorController as classes such as WebRequestTraceFilter can
now use the ErrorAttributes interface directly.

See gh-839, gh-538
Fixes gh-843
11 years ago
Andy Wilkinson fec136e213 Merge branch '1.0.x'
Conflicts:
	spring-boot-dependencies/pom.xml
11 years ago
Andy Wilkinson f761daf253 Upgrade to CRaSH 1.3.0-beta18
Closes #841
11 years ago
Lukasz Kryger e7484c66f5 Registering PID file to be deleted on JVM exit 11 years ago
Phillip Webb bd38893f55 Rename rabbitHealthIndicator bean
Rename the rabbitHealthIndicator bean which was accidentally named
redisHealthIndicator.
11 years ago
Christian Dupuis a62bc9ca60 Polish 11 years ago
Christian Dupuis b026b13c66 Add HealthIndicator for Rabbit 11 years ago
Phillip Webb 1acffdf649 Polish 11 years ago
Christian Dupuis 51dddc2dc4 Add gc information to /metrics endpoint 11 years ago
Christian Dupuis dfd6f91aef Merge pull request #819 from cdupuis/health-indicator
Rework HealthIndicator support
11 years ago
Christian Dupuis 288e7a5d92 Rename missing test 11 years ago
Christian Dupuis 916a85c615 Rename SimpleHealthIndicator to SimpleDataSourceHealthIndicator 11 years ago
Christian Dupuis eeaa96725f Rename SimpleHealthIndicator to SimpleDataSourceHealthIndicator 11 years ago
Christian Dupuis c5ec735afb Add unit test for (Mongo|Redis)HealthIndicator 11 years ago
Dave Syer 14d3b46809 Add constants to SecurityProperties and ManagementServerProperties
For the convenience of users who want to selectively override the
access rules in an application without taking complete control of the
security configuration we now have some constants:

* SecurityProperties.ACCESS_OVERRIDE_ORDER for overriding just the
application endpoint access rules

* ManagementServerProperties.ACCESS_OVERRIDE_ORDER for overriding the
application endpoint and management endpoint access rules

Fixes gh-803
11 years ago
Christian Dupuis 127328a833 Rework HealthEndpoint and HealthIndicators
Refactored HealthEndpoint to be able to take multiple HealthIndicators. Extracted configuration of HealthIndicators out of EndpointAutoConfiguration and added new HealthIndicatorAutoConfiguration class.

Added HealthIndicators for Redis and Mongo.
11 years ago
Christian Dupuis 126fedc14a Add support for disabling crash commands
fixes #587 and #588
11 years ago
Stephane Nicoll 33082fd56d Harmonized maven dependency management
This commit harmonizes the dependency management of internal modules
so that versions can be omitted everywhere. Update the maven coordinates
to provide the full groupId for consistency
11 years ago
Phillip Webb dd7391d07e Add missing @Since tag 11 years ago
Tyler Frederick 43bd42f0f5 Add multi-datasource health indicator support
Update EndpointAutoConfiguration to support multiple datasources.

Fixes gh-783
11 years ago
Tyler Frederick 697afe3842 Add CompositeHealthIndicator
Add CompositeHealthIndicator that allows multiple HealthIndicators
to be combined into a single result.

Fixes gh-782
11 years ago
Stephane Nicoll e26e06d5dd Fix build
Two modules are still relying on the spring-boot test-jar but it was
not generated anymore. Adding the generation of test-jar again as
a workaround until we completely removes the use of it.
11 years ago
Christian Dupuis a66fc3030e Add more runtime metrics like information about heap, class loading and threads to the metrics infrastructure 11 years ago
Dave Syer ef4e83a879 Move ErrorController to autoconfig 11 years ago
Dave Syer 27580e726f Add generic error handling to BasicErrorController
Since Spring supports gobal error handling through
@ControllerAdvice, it is quite easy to set up more meta-data
about an exception for the BasicErrorController. You need
to be careful not to swallow Security exceptions, and probably
others (optionally) so this feature needs a bit more work.

See gh-538
11 years ago
Andy Wilkinson b6cd2c970c Use Jedis rather than Lettuce as preferred Redis client
Salvatore has indicated that Jedis is his Java Redis client of choice.
This commit updates the auto-configuration support, actuator and
Redis starter accordingly.

Completes #745
11 years ago
sopov.ivan 174b654faf minor test fixes
Reverting arguments in assertEquals where constant was placed on
the "actual" place. Replacing assertEquals with assertFalse, assertTrue
and assertNull where applicable.

Fixes gh-735
11 years ago
Phillip Webb 64a835e91a Move master to 1.1.0.BUILD-SNAPSHOT 11 years ago
Spring Buildmaster d3954a1703 Next development version 11 years ago
Phillip Webb 4119ef5cf4 Use random ports for tests
Update remaining tests to use random ports.

Fixes gh-337
11 years ago
Phillip Webb f847ed2b1f Remove getEmbeddedServletContainers()
Remove the mutable getEmbeddedServletContainers() Map from
EmbeddedWebApplicationContext and instead use the `namespace` to
distinguish the management container.

The ServerPortInfoApplicationContextInitializer class replaces the
previous TestExecutionListener to exposes port properties (by
listening for EmbeddedServletContainerInitializedEvents).
11 years ago
Phillip Webb fad5ce45db Polish 11 years ago
Phillip Webb 316cb87583 Create ApplicationPid and remove SystemUtils
Create a new ApplicationPid class to remove the need for SystemUtils
and refactor existing calls.
11 years ago
Dave Syer b291332cd4 Use CountDownLatch instead of Thread.sleep()
... to wait for ApplicationContext to close in the 3 tests
that we needed to do so.

Fixes gh-664
11 years ago
Dave Syer 00b85e8c42 Ensure path starts with "/" in ErrorController
When mapping the ErrorController path to Spring Security it's
important that it starts with "/". This change ensures that is
the case even if the user has omitted the leading "/".

Fixes gh-694
11 years ago
Dave Syer 7b07fe8ce0 Convert remaining samples to use random port
Partial fix for gh-337. See also gh-607 which complements this, but might
conflict on a merge.
11 years ago
Dave Syer f134e96053 Convert Actuator sample to dynamic ports 11 years ago
Dave Syer 41cdb7b48d Add parent directory creation
Also tidied a few other things up (like not needing
SmartApplicationListener).

Fixes gh-550
11 years ago
Jakub Kubrynski f6488c7f66 Now after starting application PID file will be created
Fixes gh-550
11 years ago
Dave Syer 708d5ade9f Fix path stripper in JolokiaEndpoint to account for management.contextPath
When the user sets management.contextPath=/admin the Jolokia
endpoint gets mapped to /admin/jolokia, but that the path stripper it uses
internally makes a false assumption about the form of the request path.
The fix is simple (just use a smarter search for the endpoint path in the
request path).

Fixes gh-642
11 years ago
Spring Buildmaster a5864ebcd0 Next development version 11 years ago
Dave Syer 72d7c286c0 Add Spring MVC-generated path suffixes to endpoint paths
Spring Security doesn't know that Spring MVC maps /foo, /foo.json
and /foo/ all to the same handler. This change explicitly adds
suffixes to the actuator endpoint matchers so they are properly
protected.
11 years ago
Spring Buildmaster 15e9dbe98b Next development version 11 years ago
Phillip Webb 1e68b7e0a9 Remove superfluous <packaging> tags from POMs 11 years ago
Phillip Webb 0af7f7e347 Add missing POM info 11 years ago
Phillip Webb 488b03387f Polish POM formatting 11 years ago
Phillip Webb 6f9bb233ad Revert "Next development version"
This reverts commit b67bb70ee3.
11 years ago
Spring Buildmaster b67bb70ee3 Next development version 11 years ago
Dave Syer 499f54893b Add @Conditionals to switch off non-generic endpoints
Fixes gh-601
11 years ago
Phillip Webb ac4cdd33c3 Revert "Next development version"
This reverts commit 1d0eea12eb.
Returning to 1.0.0.BUILD-SNAPSHOT for an updated release.
11 years ago
Spring Buildmaster 1d0eea12eb Next development version 11 years ago
Phillip Webb d117a6b22b Polish 11 years ago
Dave Syer 71c2c69c92 Return actual status code not 200 to machine client
Machine clients are much more fussy than browsers and we
should take care to preserve the HTTP status for them.

Fixes gh-596
11 years ago
Dave Syer d13827c45c Switch default query to 'select 1'
Fixes gh-555
11 years ago
Phillip Webb beaddb2362 Polish 11 years ago
Dave Syer e059d0cd5f Re-order security auto configuration so the fallback can be applied
The management security autoconfiguration wanted to come last in the chain
but that won't suit the fallback that was already in place for gh-568. This
change re-orders the autoconfig so that @EnableWebSecurity is still added
if the user sets security.basic.enabled=false and includes the actuator
endpoints.

Fixes gh-568
11 years ago
Phillip Webb d42bedf295 Rename @ConfigurationProperties attributes
Rename `name` to `prefix` and `path` to `locations`.
11 years ago
Dave Syer 45315a97ff Prevent accidental failure of deployed war when management.port is set
We can't support (yet) embedded containers inside a deployed war (class
loader conflicts are inevitable, really). Until we figure out a way to
do it, we should just log a warning and advise the user to switch to
JMX for the actuator endpoints.

See gh-552
11 years ago
Dave Syer b824a6ea05 Tweak to support finer grained locking
Fixes gh-543
11 years ago
Nicholas Hagen 8d442b1fbc Fix issue with paralellism and CodaHale metrics
Since there is no atomic remove/register operation for
Gauges, we need to synchronize.
11 years ago
Christian Dupuis d08d98492d Add Environment to shell context; disable shell banner if spring.main.show_banner is set to false 11 years ago
Christian Dupuis b760722234 Add endpoint command to shell
fixex #461
11 years ago
Phillip Webb c5ee3c7eba Remove duplicate documentation
Remove README files that have been since been migrated to the reference
documentation. Also updated remaining markdown files to asciidoctor to
save having a mix of different formats.

Fixed gh-503
11 years ago
Phillip Webb 80ac1fb0cd Polish 11 years ago
Phillip Webb 22e397cda2 Polish 11 years ago
Dave Syer 6657e3ef84 More care taken with management.contextPath
The management.contextPath property should now be respected in a
secure application, whether or not the management.port is different.

Added some test cases in the sample to verify.

Fixes gh-469
11 years ago
Dave Syer c9efa5ac13 Allow non-string return from health query 11 years ago
Spring Buildmaster b0d4e8ae69 Next development version 11 years ago
Spring Buildmaster cb8668a151 Release version 1.0.0.RC4 11 years ago
Phillip Webb 99350a2216 Tidy ConfigurableEmbeddedServletContainerFactory
Rename ConfigurableEmbeddedServletContainerFactory to
ConfigurableEmbeddedServletContainer and extract
AbstractConfigurableEmbeddedServletContainer from
AbstractEmbeddedServletContainerFactory.
11 years ago
Phillip Webb 468728a2c0 Polish 11 years ago
Dave Syer 07b88630f4 Be defensive with auto-config of Servlet 3.0 features
There's no explicit support for older Servlet specs in Spring Boot,
but we can at least make it easy for others to provide such
support by not adding stuff to the context when in an older container.
11 years ago
Dave Syer b0b7bc0e7f Fix tests
Some assumptions were being made in tests, e.g. about
there being an AuthenticationManager @Bean, which were
false with the new Security 3.2.1 updates from Rob.

Also parent-child contexts with the actuator were
problematic because they didn't exclude the web configuration
for the management security in the parent context.

Fixes gh-244
11 years ago
Rob Winch 6b0eba3759 Update to Spring Security 3.2.1
Also change strategy for defaulting of Authentication. Spring
Boot authentication defaults are now encapsulated and can easily
be overridden by a user defined AuthenticationManager.
11 years ago
Dave Syer 13e040c06e Add ErrorWrapperEmbeddedServletContainerFactory for error pages in WARs
Error pages are a feature of the servlet spec but there is no Java API for
registering them in the spec. This filter works around that by accepting error page
registrations from Spring Boot's EmbeddedServletContainerCustomizer (any beans
of that type in the context will be applied to this container).

In addition the ErrorController interface was enhanced to provide callers
the option to suppress logging.

Fixes gh-410
11 years ago
Dave Syer 82f49abeba Expose setter for Map store in InMemoryMetricRepository
User can then use a weak reference map (for instance), if worried
about memory usage.
11 years ago
Phillip Webb 083cb388c0 Upgrade to Spring Security 3.2.1
Fixes gh-392
11 years ago
Phillip Webb cf23b519d2 Polish 11 years ago
Dave Syer 08d8cb8efd Add /mappings endpoint
Lists AbstractUrlMappings and AbstractHandlerMethodMappings
in a loose Map structure. E.g.

{
  "/**/favicon.ico": {
    "bean": "faviconHandlerMapping"
  },
  "/**": {
    "bean": "resourceHandlerMapping"
  },
  "/webjars/**": {
    "bean": "resourceHandlerMapping"
  },
  "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}":
     {
       "bean": "requestMappingHandlerMapping",
       "method": "public java.util.Map<java.lang.String, java.lang.Object> org.springframework.boot.actuate.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)"
...
}

Fixes gh-378
11 years ago
Dave Syer d98bfdea37 Make sure metricsExecutor is shutdown cleanly
The default executor for publishing metrics was a single
thread (native JDK) ExecutorService with a non-daemon thread.
Changed it to a Spring-managed thread pool of size 1, which
is then shutdown with e ApplicationContext automatically.

Fixes gh-388
11 years ago
Dave Syer b2b487ee5f Add ServletRegistrationBean for DispatcherServlet
Mapping is exposed via server.servletPath.

Fixes gh-379
11 years ago
Dave Syer 0aa3b00fdf Ensure shutdown endpoint is disabled by default
Fixes gh-377
11 years ago
Phillip Webb b69c659d8f Polish 11 years ago
Dave Syer f888567c1d Be defensive about Spring Security dependencies
In particular don't assume that Spring Security Web is on the
classpath, just because Spring Security Core is.

Fixes gh-363
11 years ago
Spring Buildmaster 1367d57e8c Next development version 11 years ago
Spring Buildmaster eaff1677a7 Release version 1.0.0.RC3 11 years ago
Dave Syer 8de9890757 Add scope=test to hsqldb (fixes #330) 11 years ago