Commit Graph

659 Commits (f6f07dd426a183e8e4e0975395a1dad5129e440e)

Author SHA1 Message Date
Phillip Webb fae9ab4140 Fix failing tests 10 years ago
Dave Syer 049cd4b85b Merge branch '1.1.x' 10 years ago
Dave Syer deef784403 Blitz some more special characters from the metric names
When MVC path matchers are used as metric keys, they can still contain
invalid characters and patterns (like asterisks). This change removes
some more special characters and also tidies up the names a bit so
no key part starts or ends with "-" (which is ugly).

Fixes gh-1528
10 years ago
Dave Syer 437fb75424 Add /error to ignored paths for security autoconfig
Protecting /error doesn't make a great deal of sense and if it is
protected you don't get the ErrorPageFilter for the attempt at loading
it, so Tomcat renders its own HTML error page (when deployed as WAR).

Fixes gh-1548
10 years ago
Dave Syer f26209f248 Blitz some more special characters from the metric names
When MVC path matchers are used as metric keys, they can still contain
invalid characters and patterns (like asterisks). This change removes
some more special characters and also tidies up the names a bit so
no key part starts or ends with "-" (which is ugly).

Fixes gh-1528
10 years ago
Phillip Webb 8bf1f9567a Apply eclipse formatting and cleanup rules 10 years ago
Phillip Webb eaa3bd040d Apply eclipse formatting rules 10 years ago
Phillip Webb c8809afe1b Polish 10 years ago
Phillip Webb a512bcf766 Always auto-configure pool metadata providers
Import DataSourcePoolMetadataProvidersConfiguration from
DataSourceAutoConfiguration so that PoolMetadataProviders are configured
even if actuator is not used.
10 years ago
Phillip Webb 69107cb1df Create metadata sub-package
Create `org.springframework.boot.autoconfigure.jdbc.metadata` package
and move DataSourcePoolMetadata classes.
10 years ago
Phillip Webb e56be6cf3d DataSourceMetadata -> DataSourcePoolMetadata
Rename DataSourceMetadata to DataSourcePoolMetadata
10 years ago
Phillip Webb 169a46b1aa Rename MetricDataSourceAutoConfiguration
Rename MetricDataSourceAutoConfiguration to
DataSourceMetricsAutoConfiguration
10 years ago
Phillip Webb adbded33ff Apply eclipse formatting rules to 3dc932db 10 years ago
Stephane Nicoll 53c4859a6a Reuse data source validation query in health endpoint
This commit improves DataSourceMetadata to expose the validation
query. This can be used by DataSourceHealthIndicator as the query
to use instead of "guessing" which query could be applied according
to the database type.

Fixes gh-1282
10 years ago
Stephane Nicoll 2694941b93 Fix DataSourceMetadata location
This commit complements 3dc932db8 and fix the package location of
DataSourceMetadata.

Fixes gh-1013
10 years ago
Stephane Nicoll 3dc932db88 DataSource metrics
This commit adds an abstraction that provides a standard manner to
retrieve various metadata that are shared by most data sources.

DataSourceMetadata is implemented by the three data source
implementations that boot supports out-of-the-box: Tomcat, Hikari and
Commons dbcp.

This abstraction is used to provide two additional metrics per data
source defined in the application: the number of allocated
connection(s) (.active) and the current usage of the connection pool
(.usage).

All such metrics share the 'datasource.' prefix. The prefix is further
qualified for each data source:

* If the data source is the primary data source (that is either the
  only available data source or the one flagged @Primary amongst the
  existing ones), the prefix is "datasource.primary"
* If the data source bean name ends with "dataSource", the prefix is
  the name of the bean without it (i.e. batchDataSource becomes batch)
* In all other cases, the name of the bean is used

It is possible to override part or all of those defaults by
registering a bean with a customized version of
DataSourcePublicMetrics.

Additional DataSourceMetadata implementations for other data source
types can be added very easily, check
DataourceMetadataProvidersConfiguration for more details.

Fixes gh-1013
10 years ago
Phillip Webb fc7823bc42 Merge branch '1.1.x' 10 years ago
Phillip Webb 5c34b07742 Fix DefaultCounterService.reset
Fix DefaultCounterService.reset to call the reset method of the
underlying MetricWriter.

Fixes gh-1391
10 years ago
Dave Syer 300910f7d5 Merge branch '1.1.x' 10 years ago
Dave Syer 0cf1c6f0e5 Refactor AuthenticationManagerConfiguration to make sure it works
if user also adds @EnableWebMvcSecurity. The problem is that the ordering
of the init() and configure() methods in the Spring Security configurers
can force things to happen too early unless we are careful. It's still a bit
twitchy I would say, but this relatively small change seems to fix the GS guide
and not break any existing tests.

I added a sample which mimic ths GS guide so we get an integration test that
executes the new code paths.

Fixes gh-1364
10 years ago
Phillip Webb 7d0a3ddcce Rename VanillaHealthIndicator to Application...
Rename `VanillaHealthIndicator` to `ApplicationHealthIndicator` and
changed the exposed bean name from `statusHealthIndicator` to
`applicationHealthIndicator`.

This provides less confusing JSON output:

  {"status":"UP","application":{"status":"UP"}}

vs:

  {"status":"UP","status":{"status":"UP"}}

Fixes gh-1291
10 years ago
Christian Dupuis 063f67da5f Maintain same structure in /health output
JSON output of /health now has the same structure for 1 or more HealthIndicators. This makes it easier to consume the response from scripts or apps

fixes #1291
10 years ago
Phillip Webb 7641f23f71 Merge branch '1.1.x' 10 years ago
Phillip Webb d854c09d5a Add option to disable `X-Application-Context`
Add `management.add-application-context-header` option to disable
the automatic adding of the `X-Application-Context` HTTP header.

Fixes gh-1308
10 years ago
Phillip Webb 92899474ac Polish 10 years ago
Dave Syer 1e51c5db15 Merge branch '1.1.x' 10 years ago
Dave Syer 1259057acb Change unknownPath to unmapped 10 years ago
Taylor Wicksell 733b22f46a gh-1331 defaulting 404 response metrics to "unkownPath" when no matching handler can be found
Fixes gh-1331, Fixes gh-1333
10 years ago
Taylor Wicksell c6f5961ad6 fix for gh-1331 MetricFilter now supports uri template variables when available 10 years ago
Phillip Webb 642224feff Support regex in keys-to-sanitize
Update EnvironmentEndpoint and ConfigurationPropertiesReportEndpoint
to allow regex patterns in `keys-to-sanitize`.

Fixes gh-1245
10 years ago
Phillip Webb da5c36c3a9 Polish 10 years ago
Phillip Webb 14c6243637 Refactor PublicMetrics registration
Rework flexible PublicMetrics registration introduced in 2be6b3e4 to
restore compatibility with v1.1 VanillaPublicMetrics. The new
MetricReaderPublicMetrics class now exposes metrics from a MetricReader
and VanillaPublicMetrics is deprecated. The MetricsEndpoint can now
exposes a collection of PublicMetric interface directly.

See gh-1094
10 years ago
Christian Dupuis 68163a66a5 Change query in MongoHealthIndicator
This commit changes the query in MongoHealthIndicator from serverStatus to buildInfo to avoid unprivileged access and corresponding errors.

fixes #1289
10 years ago
Christian Dupuis 13ee41d04d Change query in MongoHealthIndicator
This commit changes the query in MongoHealthIndicator from serverStatus to buildInfo to avoid unprivileged access and corresponding errors.

fixes #1289
10 years ago
Stephane Nicoll 2be6b3e419 Flexible registration of additional PublicMetrics
This commit permits the use of several PublicMetrics instances by
default. Previously, only one PublicMetrics service could be specified
and a user configuration would remove all the defaulting.

VanillaPublicMetrics now takes a collection of PublicMetrics and
invokes them in sequence to build the final collection of metrics.
The system-related metrics have been moved to SystemPublicMetrics and
are registered by default.

Also updated the documentation to mention this feature and how it
could be fully overridden.

Fixes gh-1094
10 years ago
Phillip Webb fa88c481a5 Remote trailing whitespace 11 years ago
Phillip Webb 9632abf825 Formatting and cleanup 11 years ago
Dave Syer 123ffd736c Exclude @ManagedResources from Endpoint MBeans
If an Endpoint is already @ManagedResource then it doesn't need
an additional (probably wrong) MBEan registration based on the invoke()
method.
11 years ago
Christian Dupuis b5d65bfc56 Delegate shell access decision to bean named "shellAccessDecisionManager"
In order to solve issues with multiple or incompatible AccessDecisionManagers, the CRaSH integration will now only delegate to an explicit shellAccessDecisionManager bean refs #1121
11 years ago
Tobias Gesellchen 21846f3bc7 update javadoc and test method to reflect current implementation 11 years ago
Stephane Nicoll b646231327 Properly close context hierarchy in tests
Prior to this commit, some tests were creating a parent/child
relationship but were only closing the child context. This could
be an issue with the autoconfig module as a lot of auto-config
kicks in by default.

This commit adds a new test utility designed to properly handle
those situations. Updated tests that were creating a context
hierarchy to benefit from that.

Fixes gh-1034
11 years ago
Phillip Webb 24471bc51e Polish 11 years ago
Dave Syer 9cc6bff177 Increase priority of EndpointHandlerMapping
The Actuator endpoints ought to take precedence over others (since
they are important and users can isolate them using management.contextPath
if necessary). This change puts the @Order at -100 (well before the default
order of the RequestMappingHandlerMapping at 0).

Fixes gh-1107
11 years ago
Dave Syer 3378ede231 Ensure CompositePropertySources are listed in EnvironmentEndpoint 11 years ago
Christian Dupuis 5d25588d7b Make properties to sanitize configurable in EnvironmentEndpoint.
Add "key" to default keys that will be sanitized. fixes #1027
11 years ago
Phillip Webb e891aa3525 Polish 11 years ago
Dave Syer 09200361de Align expectations of various JMX configurations
They all want to create an MBeanServer and when that happens
user sees no MBeans, or sometimes just one set (Spring Core,
Spring Integration or Spring Boot). To harmonise them we
create a @Bean of type MBeanServer and link to it in the
other autoconfigs

Fixes gh-1046
11 years ago
Andy Wilkinson 9b44c322d4 Update dependencies to latest maintenance releases
Despite Javassist 3.18.2-GA being available, it has not be upgraded.
This is to keep it in sync with Hibernate.
11 years ago
Dave Syer 5e3cc95ccf Adjust security.basic.enabled=false behaviour
Actually the web-secure sample is misusing
security.basic.enabled=false (IMO) - it should be a flag
to say that you want to temporarily disable the basic security
fallback on application endpoins, not  way to disable all
security autoconfiguration.

Added test case to web-secure sample to ensure a user
can log in.

Fixes gh-979
11 years ago
Phillip Webb a91e85b848 Add local.management.port when on same port
Add a `local.management.port` alias when the management server is
running on the same port as the main server.

Fixes gh-952
11 years ago
Phillip Webb 91bd78047e Rename TraceWebFilterAutoConfigurationTest
Rename TraceWebFilterAutoConfigurationTest to
TraceWebFilterAutoConfigurationTests
11 years ago
Christian Dupuis 057e149846 Introduce Health.Builder to clean up HealthIndicator implementations 11 years ago
Phillip Webb 96a0d672af Rename SimpleDataSourceHealthIndicator
Rename SimpleDataSourceHealthIndicator to DataSourceHealthIndicator.
11 years ago
Phillip Webb aa03d9a41c Make Health and Status immutable
Update Health and Status objects to be immutable, update the existing
builder methods to return new instances and add static convenience
methods to Health.
11 years ago
Eric Dahl 3457cc4f39 Fix multiple typos in documentation, as well as "thread.deamon" typo in actuator 11 years ago
Phillip Webb 1a475102de Polish 11 years ago
Andy Wilkinson b76a519f65 Add a HealthIndicator for Solr 11 years ago
Dave Syer 59c108a4b0 Fix bug in group names (again) 11 years ago
Dave Syer 1fabfaa259 Align behaviour of in-memory and redis mult repos
The in-memory version has to force the incoming metric keys to
start with the group name. Redis doesn't have that restriction
but normally we expect both to be used in such a way that
the metric keys already match the prefix. In that case the two
repositories behave the same now in terms of set and get.
11 years ago
Dave Syer b12d7c705c Improve redis repository implementations
Storing values in zset makes them less prone to races.

Fixes gh-929
11 years ago
Dave Syer 0cbd0b609a Add increment() to PrefixMetricWriter
In the redis repository we also switch to store the value in the
zset (so it can be atomically incremented) rather than in the
regular key-value.

Fixes gh-929
11 years ago
Christian Dupuis 0c2bc99af3 Return different http return status codes for different system health states
fixes #880
11 years ago
Christian Dupuis 4648188782 Rework HealthEndpoint and HealthIndicator
With this commit the state of a component or subsystem becomes a first-class citizen in Boot's application health support. HealthIndicators now return a Health instance with status and some contextual details.

An aggregation strategy has been introduced to aggregate several Health instances into one final application Health instance. Out of the box OrderedHealthAggregator can be configured to allow different ordering or a custom HealthAggregator bean can be registered.
11 years ago
Dave Syer d59cbc830a Group resolution for RedisMultiMetricRepository with prefix
The prefix needs to be added before looking for keys. In addition
I rationalized the constructor and final fields (it didn't make
any sense for the prefix to be mutable).

Fixes gh-927
11 years ago
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 fef998f914 Remove autowired injection of HealthIndicators into HealthEndpoint
Moved into EndpointAutoConfiguration
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 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
Phillip Webb bd38893f55 Rename rabbitHealthIndicator bean
Rename the rabbitHealthIndicator bean which was accidentally named
redisHealthIndicator.
11 years ago
Christian Dupuis b026b13c66 Add HealthIndicator for Rabbit 11 years ago
Phillip Webb 1acffdf649 Polish 11 years ago
Christian Dupuis 288e7a5d92 Rename missing test 11 years ago
Christian Dupuis 916a85c615 Rename SimpleHealthIndicator to SimpleDataSourceHealthIndicator 11 years ago
Christian Dupuis c5ec735afb Add unit test for (Mongo|Redis)HealthIndicator 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
Tyler Frederick 697afe3842 Add CompositeHealthIndicator
Add CompositeHealthIndicator that allows multiple HealthIndicators
to be combined into a single result.

Fixes gh-782
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 4119ef5cf4 Use random ports for tests
Update remaining tests to use random ports.

Fixes gh-337
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 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
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
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
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
Phillip Webb 80ac1fb0cd Polish 11 years ago
Dave Syer c9efa5ac13 Allow non-string return from health query 11 years ago
Phillip Webb 468728a2c0 Polish 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
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
Christian Dupuis af75dd0e40 Move remaining properties for consistency 11 years ago
Phillip Webb ed9735361e Apply source cleanup and formatting 11 years ago
Phillip Webb 676cacd308 Use '-1' to disable management port
Update `EndpointWebMvcAutoConfiguration` to use '-1' to indicate that
the management context should be disabled. This brings consistency
between the server settings and the management settings and allows '0'
to be used to pick a random port.

Fixed gh-311
11 years ago
Phillip Webb f7d4490b2d Fix package tangle with AutoConfigurationReport
Rename AutoConfigurationReport to ConditionEvaluationReport and
co-locate with conditions.
11 years ago
Christian Dupuis 5cf2387e58 Append context id to objectName of Endpoint MBeans if name already exists in MBeanServer 11 years ago
Dave Syer 4d608f20e9 Support for AuthenticationManagerBuilder injection into user code
Spring Boot provides a default AuthenticatiomManager for getting
started quickly with security and never exposing insecure
endpoints. To override that feature as users move to the next
stage in their project, they may have to do something slightly
different depending on whether it is a webapp or not.

In any app (web or not), providing a @Bean of type
AuthenticationManager always works, but you don't get the benefit of
the builder features.

In a webapp the user can also extend WebSecurityConfigurerAdapter
to provides a custom AuthenticationManager, and the preferred
way of doing that is via a void method that is autowired with an
AuthenticationManagerBuilder. The default AuthenticationManager is
built in a configurer with @Order(LOWEST_PRECEDENCE - 3) so
to override it the user's confugrer must have higher precedence
(lower @Order).

@EnableGlobalMethodSecurity can also be used in a non-webapp, and
Spring Boot will still provide a default AuthenticationManager.
To override it the user has to either extend
GlobalMethodSecurityConfiguration or provide a @Bean of type
AuthenticationManager (there's no other way to
capture the AuthenticationManagerBuilder that doesn't happen too late
in the beans lifecyle).

Fixes gh-244
11 years ago
Christian Dupuis 07238b1ce8 Restructure /configprops output
/configprops output now contains the prefix from @ConfigurationProperties as wells as bean name and actual properties

fixes #267
11 years ago
Dave Syer 5a7d89c9a9 Look in parent context for Endpoints to expose
Fixes gh-275
11 years ago
Dave Syer 2d54b54d81 Listen for parent close events and close child context
If the context hierarchy is from a SpringApplication we can control
the shutdown semantics a bit. Specifically we need a listener in the child context
that will shut it down when the parent closes (since assummably the child relies
on beans in the arent that may now be disposed).

Fixes gh-275
11 years ago
Dave Syer 195eb9f9bc Updates to redis repositories
* Ensure prefix ends with period
* Allow prefix and key index to be set separately
11 years ago
Phillip Webb 43e54d38f7 Make fields private where possible 11 years ago
Phillip Webb 0160760568 Apply latest eclipse cleanup rules 11 years ago
Phillip Webb ac54d7fe3c Final polish before 1.0.0.RC1 11 years ago
Phillip Webb cdda330acd Update copyright header for files changed in 2014 11 years ago
Phillip Webb e38f10d7a6 Upgrade CRaSH shell to 1.3.0-beta14 11 years ago
Phillip Webb 0a6074be6f Fix failing test due to cache timeout property
Related to gh-232
11 years ago
Phillip Webb 47da8a817a Polish 11 years ago
Dave Syer b1db714c23 Allow @EnableGlobalMethodSecurity in a non webapp
Fixes gh-202
11 years ago
Christian Dupuis b8b948d366 Migrate JolokiaAutoConfiguration to use ConfigurationProperties instead of accessing the environment directly to obtain configuration properties 11 years ago
Dave Syer c8152bfc70 SpringBootTestUtils->EnvironmentTestUtils 11 years ago
Dave Syer 478e655758 Change algorithm for determining active profile from external config
Instead of adding active prpfiles for every one we encounter, we need to
build up a complete "default" Environment and then ask it what the active
profiles are. Implemented in ConfigFileApplicationListener.

Fixes gh-198
11 years ago
Dave Syer 561cb3a50f TestUtils -> SpringBootTestUtils 11 years ago
Dave Syer 321ce3aad2 TestUtils -> SpringBootTestUtils 11 years ago
Dave Syer 633dea9d80 Add declarative ApplicationListener 11 years ago
Dave Syer 3dacf4be17 Migrate Logging and Liquibase initializers to be listeners 11 years ago
Phillip Webb 6b3e79e693 Polish 11 years ago
Phillip Webb 1bcd3de7b5 Polish 11 years ago
Dave Syer aa2b020660 Refactor metrics to expose richer feature set
Main user-facing interface is still Counter/GaugeService but the
back end behind that has more options. The Default*Services write
metrics to a MetricWriter and there are some variants of that, and
also variants of MetricReader (basic read-only actions).

MetricRepository is now a combination of MetricReader, MetricWriter
and some more methods that make it a bit more repository like.

There is also a MultiMetricReader and a MultiMetricRepository for
the common case where metrics are stored in related (often open
ended) groups. Examples would be complex metrics like histograms
and "rich" metrics with averages and statistics attached (which
are both closed) and "field counters" which count the occurrences
of values of a particular named field or slot in an incoming message
(e.g. counting Twitter hastags, open ended).

In memory and redis implementations are provided for the repositories.
Generally speaking the in memory repository should be used as a
local buffer and then scheduled "exports" can be executed to copy
metric values accross to a remote repository for aggregation.
There is an Exporter interface to support this and a few implementations
dealing with different strategies for storing the results (singly or
grouped).

Codahale metrics are also supported through the MetricWriter interface.
Currently implemented through a naming convention (since Codahale has
a fixed object model this makes sense): metrics beginning with "histogram"
are Histograms, "timer" for Timers, "meter" for Meters etc.

Support for message driven metric consumption and production are provided
through a MetricWriterMessageHandler and a MessageChannelMetricWriter.

No support yet for pagination in the repositories, or for HATEOAS style
HTTP endpoints.
11 years ago
Christian Dupuis 384dfc91e3 Fix some tests to prevent JMX registration issues 11 years ago
Christian Dupuis 65d6757a10 Rework EndpointMBeanExporter to prevent name clashes and to provide more flexibility in naming of endpoint MBeans 11 years ago
Dave Syer 8e2a6eec2a Add database query defaults in SimpleHealthManager 11 years ago
Dave Syer 063403a043 Close connection properly in /health
Fixes gh-181
11 years ago
Dave Syer fa507005cd Use ServletWrappingController for jolokia instead of Servlet
We get more control over the handling and in particular the registration
of the endpoint this way. It was practically impossible to disable the
AgentServlet bean when in a parent context of the management server
because of lifecyce issues - you don't know that the user wants a
separate management server until too late.

This approach also makes it possible to test with spring-test MVC
support.
11 years ago
Christian Dupuis 72ae5d5a97 Rename invoke JMX operation
Rename invoke JMX operation to getData for endpoints that provide actuator data. Special case for ShutdownEndpoint to provide a shutdown method.
11 years ago
Christian Dupuis 31f7807acf Change naming strategy for endpoint mbeans 11 years ago
Phillip Webb 43b820a7d3 Rename Endpoint path to ID 11 years ago
Dave Syer 451acb5679 Move JolokiaEndpoint so it is not an Endpoint 11 years ago
Dave Syer 7f1264bb65 Replace @FrameworkEndpoint with MvcEndpoint interface 11 years ago
Dave Syer 87e00cfae9 Extract MVC concerns completely from Endpoint implementations 11 years ago
Dave Syer 332f23a0ee Add parent properties to config props endpoint 11 years ago
Dave Syer bbac4ea9fb @FrameworkEndpoint replaces EndpointHandlerAdapter 11 years ago
Christian Dupuis 5a978e2f31 Change strategy from ApplicationListener to SmartLifecycle to avoid multiple registration attempts for the same beans
When running with parent/child application contexts the previous implementation was trying to re-register the same beans with JMX which led to errors.
11 years ago
Christian Dupuis 32818515b7 Expose endpoints via JMX
Actuator endpoints are now being exposed over JMX.
11 years ago
Dave Syer b72002142d Split MessageConverters auto config out into separate class 11 years ago
Dave Syer 1db28e5b92 Prevent cryptic exception if SecurityProperties not created
Previously if a user happened to provide an @EnableWebSecurity bean
the SecurityProperties would not be created, which is fine until you
add the Actuator (which needs them). Fixed by adding an explicit
SecurityProperties @Bean if not already present.
11 years ago
Dave Syer 023faf092f Fix broken test 11 years ago
Dave Syer 884fd0125a Add some handler adapter tests 11 years ago
Dave Syer 2104d9a1e2 Prevent failure of web app with parent context
ServerProperties formerly had an @OnMissingBeanCondition
that didn't restrict the hierarchy. It also asserts that
the current context (not including parents) contains such
a bean. This led to an inevitable failure when there was
an existing instance in the parent context.

Fixed by a) searching only the current context, b) not
adding a ServerProperties bean if the context is not a
web app.
11 years ago
Christian Dupuis 5661f8fc28 Test key/value sanitization 11 years ago
Christian Dupuis 078933c8fd Add actuator endpoint to expose ConfigurationProperties
This information should probably be also available from the console and log similar to AutoConfigurationReport.
11 years ago
Christian Dupuis 2c67e06b47 Move enablement of endpoints into AbstractEndpoint 11 years ago
Dave Syer e74da3fa73 FIXME test additions 11 years ago
Dave Syer 3e6c1b435f Add @SpringApplicationConfiguration (for integration testing)
Example:

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringApplicationConfiguration(classes = SampleDataJpaApplication.class)
    public class CityRepositoryIntegrationTests {

    	@Autowired
    	CityRepository repository;

Fixes gh-66.
11 years ago
Dave Syer 3e5e058b02 Ensure /error view is available 11 years ago
Dave Syer b74a9b2d06 Add tests to FIXME 11 years ago
Dave Syer 171c1366f9 Move shutdown enable flag to the endpoint 11 years ago
Dave Syer 94e2f90793 Ensure endpoints.jolokia.enabled=false switches off jolokia 11 years ago
Christian Dupuis e69e190ae9 Close application context in test 11 years ago
Christian Dupuis 1b49605749 Make shell username and password configuration properties consistent with general security properties
Now simple authentication for the crsh shell can we configured using shell.auth.simple.user.name and shell.auth.simple.user.password. This is consistent with security.user.name and security.user.password.

fixes #113
11 years ago
Christian Dupuis 2d058570ca Add auto configure support for Jolokia a JMX-HTTP bridge 11 years ago
Christian Dupuis b14c607d36 Add missing tests 11 years ago
Christian Dupuis 845aeecbad Properly close application context in tests 11 years ago
Dave Syer bd26b28aa5 Extract actuator security into separate classes
So spring-security + a web app is secure by default
(you don't need the actuator).
11 years ago
Christian Dupuis f3a225f35f Polish and rework default authentication method if a Spring Security AuthenticationManager is available
In case a Spring Security AuthenticationManager is found in the app context the auto configuration will change default shell authentication method to auth against Spring Security. In addition shell access will get protected by the specific role configured in SecurityProperties.Management.

Certainly this can be overridden by providing shell.auth and shell.auth.spring.roles.
11 years ago
Christian Dupuis 2e926601f2 Polish 11 years ago
Christian Dupuis e009d3e47d Polish
Fixed inconsistency in method naming after last polish. Method and class name should use 'crsh' instead of 'crash' to be aligned with CRaSH code base.

Implemented facility to provide custom shell properties by adding beans of type CrshShellProperties to the ApplicationContext.
11 years ago
Dave Syer 2f7214002d Update Spring to catch SPR-11069 11 years ago
Phillip Webb 0f85f31960 Polish 11 years ago
Phillip Webb 883fd9162f Polish 11 years ago
Dave Syer b39ab925cf Make the AutoConfigurationReportEndpoint path a bit shorter 11 years ago
Phillip Webb dc3d670019 Strip trailing whitespace 11 years ago
Christian Dupuis a498a7f477 Make simple authentication the default and log default password 11 years ago
Phillip Webb dafeddca09 Rework auto-configure report
Update the auto-configuration report to improve log formatting and to
separate the internal report data-structure from the JSON friendly
endpoint data-structure.
11 years ago
Dave Syer 68475406eb Really fix it 11 years ago
Phillip Webb d784cb6a88 Apply eclipse-formatter conventions 11 years ago
Dave Syer 0c79c8913f Ensure AutoConfigurationReport is always present 11 years ago
Greg Turnquist b63016d8fc Create a report based on Boot's autoconfiguration decisions
- Gather autoconfiguration conditional decisiions (true and false)
- Provide an actuator endpoint as one means to read the report
- Define @EnableAutConfigurationReport annotation to turn this feature on
- Tidy up autoconfig report a bit and log it if --debug=true
11 years ago
Christian Dupuis f9caade3cc Fix test assertion 11 years ago
Christian Dupuis 6b599b8483 Add remote shell implementation based on crsh
This commit adds a new starter named spring-boot-starter-shell-crsh and auto configuration support to embed a system shell within Spring Boot applications.

The embedded shell allows clients to connect via ssh or telnet to the Boot app and execute commands. Commands can be implemented and embedded with app.

For sample usage see spring-boot-samples-actuator.
11 years ago
Dave Syer bd719c1330 Nest the @EnableWebSecurity so it can be added to a condition 11 years ago
Dave Syer 761c2dabd1 Fix build 11 years ago
Dave Syer 1bd65c7487 Make context hierarchies play nicely with actuator 11 years ago
Dave Syer e53dad879d Add sample with form login 11 years ago
Dave Syer 345c0fc5a4 Add SpringApplicationBuilder
Builder for SpringApplication and ApplicationContext instances with
convenient fluent API and context hierarchy support. Simple example
of a context hierarchy:

   new SpringApplicationBuilder(ParentConfig.class)
               .child(ChildConfig.class).run(args);

Another common use case is setting default arguments, e.g.
active Spring profiles, to set up the environment for an application:

     new SpringApplicationBuilder(Application.class).profiles("server")
 		.defaultArgs("--transport=local").run(args);

If your needs are simpler, consider using the static convenience
methods in SpringApplication instead.

[#49703716] [bs-116] Parent context for some beans maybe?
11 years ago
Dave Syer f7fa63bcb4 Add status and error messages to /trace
[Fixes #57949108] [bs-323] Make sure /trace shows error responses
11 years ago
Dave Syer ba4a81510b Add response headers to Trace 11 years ago
Dave Syer 7a6131c466 Make InMemoryMetricRepository.increment() thread safe 11 years ago
Dave Syer 5f8f062545 Allow security.ignored=none to switch off ignores 11 years ago
Dave Syer f63071d38a Allow security.ignored to be set as a list (e.g. indexed)
In particular this allows a YAML externalization as an array
as opposed to a CSV.
11 years ago
Dave Syer 5d7101fb5a Really disable security for app endpoints
If the user sets security.basic.enabled=false we should just
back away from the non-management endpoints completely.
Previously the Spring Security filter was still added but with
no authentication, creating complications when unexpected
headers etc. are added by Spring Security.
11 years ago
Dave Syer 9e18183dd5 Don't set deefault password if empty or unresolved 11 years ago
Dave Syer 621116c9b8 ManagementServerConfiguration security
Management endpoints are still secure by default if
Spring Security is present, but now the default
user details have an ADMIN role, and a random password
(which is logged at INFO level if not overridden).

To override you add management.user.password (name, role)
to external properties.

[Fixes #53029715] [bs-203]
11 years ago
Dave Syer c582fa2067 /info endpoint should be open by default
[#53029715] [bs-203] ManagementServerConfiguration security
11 years ago
Phillip Webb cf655945aa Polish 11 years ago
Dave Syer 521174754e Add default /error view for HTML clients
* Add integration tests for /error view
* Add "error" @Bean as default view for HTML

Users may see side effects because now there will be
a ContentNegotiatingViewResolver by default for the
first time in a vanilla Actuator app. Should be
interesting.

[Fixes #54597932] [bs-273] Circular view reference for /error
11 years ago
Dave Syer 12f0d4d95e Rename ops package to actuate 11 years ago
Dave Syer e967c2d551 Add exception with more helpful error message.
[#54676948] Filter registered twice
11 years ago
Dave Syer 5995b7727a Ops -> Actuator 11 years ago