Commit Graph

7089 Commits (8ae6ea0a06eb08fce27f8f4b5505bd74688efe9e)
 

Author SHA1 Message Date
Andy Wilkinson 70ab613465 Merge pull request #5168 from Vedran Pavic
* gh-5168:
  Tag Docker images created by launch script integration tests
9 years ago
Vedran Pavic 2641fe8f26 Tag Docker images created by launch script integration tests
Closes gh-5168
9 years ago
Andy Wilkinson f7eec4b3de Merge branch '1.3.x' 9 years ago
Andy Wilkinson b061aa5d7e Upgrade to Spring Data Gosling SR4
Closes gh-5119
9 years ago
Andy Wilkinson 03ebef58fb Merge branch '1.3.x' 9 years ago
Andy Wilkinson b1afd091c2 Document log file endpoint's support for using Range header
Closes gh-5062
9 years ago
Andy Wilkinson 64fd322ad1 Merge branch '1.3.x' 9 years ago
Andy Wilkinson a6b1f4ce63 Add a note about a fully executable jar's working directory
Closes gh-5164
9 years ago
Andy Wilkinson a3afc859bd Merge branch '1.3.x' 9 years ago
Andy Wilkinson 617c97322d Allow endpoint paths to be configured via endpoint.<name>.path
Support for configuring an endpoint’s path separately from its id was
introduced in 97255785, but it didn’t work for a variety of reasons:

 1. Some custom MVC endpoints did not have configuration properties
    bound to them
 2. Some generic endpoints rejected the path property as they were
    configured not to ignore unknown fields
 3. The property used to configure the path was dependent on the id
    of the endpoint. This meant that the path property’s name would
    change if the endpoint’s id was changed

This commit addresses these problems:

 1. @ConfigurationProperties has been added to custom MvcEndpoints where
    it was missing
 2. Generic endpoints have been updated to ignore unknown fields,
    allowing the path of their MVC adapter to be configured
 3. Rather than using the id of a generic endpoint to determine the name
    of its path property, the prefix or value of the endpoint’s
    @ConfigurationProperties annotation is used instead. Any generic
    endpoint that is not annotated with @ConfigurationProperties is
    ignored, making its path unconfigurable.

Closes gh-5105
9 years ago
Stephane Nicoll 2da9f6d91c Merge branch '1.3.x' 9 years ago
Stephane Nicoll c4205d04b3 Rework ListenerContainerFactory configurers
Rework commit b726974 to avoid exposing setters that would permit anyone
to change Spring Boot's defaults. Also, since these are configurers of a
specific instance, they should be named accordingly.

Closes gh-5138
9 years ago
Phillip Webb 34ae7e3eee Fix packages and annotations used in sample
Fixup accidental error in previous commit.
9 years ago
Phillip Webb 95c4cdbedc Fix packages and annotations used in sample
Update a few of the samples to correct the packages used in tests and
to make use of the `@SpringBootApplication` annotation.
9 years ago
Phillip Webb 566008336c Polish 9 years ago
Andy Wilkinson f46862d186 Merge branch '1.3.x' 9 years ago
Andy Wilkinson f94e8bd287 Do not try to auto-configure Jolokia if Spring MVC is not on classpath
The Jolokia auto-configuration requires ServletWrappingController from
Spring MVC to be on the classpath. This commit updates the
auto-configuration to make it conditional on the presence of this
class.

Closes gh-5153
9 years ago
Andy Wilkinson cc4562f96a Merge branch '1.3.x' 9 years ago
Andy Wilkinson b4cda625c4 Break cycle caused by JndiDataSourceAutoConfiguration
There's a long cycle when Spring Data REST, Data JPA and Actuator
are used in an app that retrieves its DataSource from JNDI. The cycle
is:

- WebMvcAutoConfiguration
- HttpMessageConverters
- MappingJackson2HttpMessageConverter (needs an ObjectMapper)
- SpringBootRepositoryRestMvcConfiguration
- ObjectMapper
- RepositoryResourceMappings (part of a custom Jackson module)
- Repositories
- EntityManagerFactory (Triggered by application's Spring Data JPA repository)
- HibernateJpaAutoConfiguration
- JndiDataSourceAutoConfiguration
- MBeanExporter (Used to prevent export of DataSource MBean that's already in JMX)
- EndpointMBeanExportAutoConfiguration
- ObjectMapper (Used to format JSON produced by the exported endpoints)

Spring Data Rest caused the ObjectMapper to depend on JPA. JPA depends
on the DataSource. JnidDataSourceAutoConfiguration depends on the
MBeanExporter. Actuator's MBeanExporter requires an ObjectMapper to
produce JSON strings.

This commit breaks the cycle by making JndiDataSourceAutoConfiguration
access the MBeanExporter lazily. Rather than using `@Lazy`. which does
not work with `@Autowired(required=false)`, the application context
is injected and the MBeanExporter is retrieved manually when it is
needed.

Closes gh-4980
9 years ago
Andy Wilkinson cb9780dbb8 Merge branch '1.3.x' 9 years ago
Andy Wilkinson d05f94170b Merge pull request #5190 from Gary Russell
* gh-5190:
  Upgrade to Spring Integration 4.2.5.RELEASE
9 years ago
Gary Russell 5e180641ec Upgrade to Spring Integration 4.2.5.RELEASE
Closes gh-5190
9 years ago
Andy Wilkinson 1697276d7d Merge branch '1.3.x' 9 years ago
Andy Wilkinson 1c00fdd80c Upgrade to Undertow 1.3.18.Final
Closes gh-5182
9 years ago
Andy Wilkinson 0392d126b8 Merge branch '1.3.x' 9 years ago
Andy Wilkinson 5d256196a6 Upgrade to Groovy 2.4.6
Closes gh-4149
9 years ago
Stephane Nicoll 7df05c7d6d Merge branch '1.3.x' 9 years ago
Stephane Nicoll 094f7aa20e Fix Hazelcast Cache auto-configuration ordering
Spring Boot supports the automatic configuration of an additional
HazelcastInstance if one already exists and an explicit property has been
set to use a different configuration for caching. So three cases are
supported really: no `HazelcastInstance` exists so we need to create one
anyway or an `HazelcastInstance` already exists; in that latter case, we
should either reuse it or create a new one.

Unfortunately, the conditions that checked those three use cases were
not ordered consistently and we could easily get in a situation where
both conditions were evaluated.

This commit makes sure that we  first check if an `HazelcastInstance`
exists and then (and only then) we create the missing `HazelcastInstance`
used for caching. The tests have also been improved to validate the
proper `HazelcastInstance` is used for caching.

Closes gh-5181
9 years ago
Andy Wilkinson ca79ba8291 Add dependency management for new spring-restdocs-restassured module
Closes gh-5160
9 years ago
Andy Wilkinson bbef9fcdb3 Add dependency management for new spring-session-data-gemfire module
Closes gh-5161
9 years ago
Dave Syer e021a30745 Merge branch '1.3.x'
Conflicts:
	spring-boot-dependencies/pom.xml
9 years ago
Dave Syer f2c34612f6 Fix javadocs on ManagementServerProperties 9 years ago
Dave Syer 14a5feacea Update to OAuth 2.0.9 9 years ago
Phillip Webb 2baad56108 Fix spring-boot-launch-script-tests dependency
Remove the reference to the spring-boot:test jar since it's not
published.

See gh-5184
9 years ago
Phillip Webb 602a09332d Switch disallowedMethods test to use PATCH
Update the requestsWithDisallowedMethodsAreRejected test to use PATCH
rather than HEAD. The change is to allow support for Spring Framework
4.3 which will implicitly map HEAD requests to GET.

Pre-flight requests are also only for "non-simple" HTTP methods [1]
(i.e. anything but GET, HEAD, POST) so there is really no such a thing
as a pre-flight request for HEAD.

[1] https://www.w3.org/TR/cors/#resource-preflight-requests
9 years ago
Phillip Webb 89b7704977 Extract spring-boot-test.jar
Relocate the `org.springframework.boot.test` package from the
`spring-boot.jar` to `spring-boot-test.jar`.

Fixes gh-5184
9 years ago
Phillip Webb 4b55144d80 Polish 9 years ago
Phillip Webb 03dad33b0c Polish diagnostics support
Rework a few parts of the diagnostics support:

- Move code from SpringApplication to FailureAnalyzers
- Allow AbstractFailureAnalyzer to take generic cause type
- Move own analyzers into a new package and make package private

See gh-4907
9 years ago
Phillip Webb c6c2959aa3 Merge remote-tracking branch '1.3.x' 9 years ago
Phillip Webb a9afe0a944 Formatting 9 years ago
Andy Wilkinson 5ed4ef1272 Add manifest entries for location of lib and classes in executable archives
Closes gh-5183
9 years ago
Andy Wilkinson 59e119eb9a Merge pull request #4823 from Pedro Costa
* gh-4823:
  Polish contribution
  Make TLS protocols and cipher suites configurable via the environemnt
9 years ago
Andy Wilkinson 742df6b63b Polish contribution
Rename the new property to enabledProtocols to align more closely with
Undertow and Tomcat’s underlying configuration setting.

Closes gh-2109
9 years ago
Pedro Costa 766ccd753b Make TLS protocols and cipher suites configurable via the environemnt
Closes gh-4823
9 years ago
Andy Wilkinson 7512687cba Upgrade to Spring Session 1.1.0.RC1
Closes gh-5161
9 years ago
Andy Wilkinson 99b3af9216 Use a random server port in the Couchbase sample’s tests 9 years ago
Andy Wilkinson df6c204193 Provide better diagnostics when an application fails to start
This commit introduces a new failure analysis mechanism that can be
used to provide diagnostics to a user when their application fails
to start.

When application context refresh fails. FailureAnalyzer
implementations are loaded via spring.factories. The analyzers are
called in order, with the first non-null analysis of the failure
being used. The analysis is reported to the use by
FailureAnalysisReporters which are also loaded via spring.factories.

A single FailureAnalysisReporter is provided out of the box. It logs
an error message with details of the analysis, providing the user
with a description of the failure and, if available, some actions
that they may be able to take to resolve the problem without also
displaying a stack trace that is of little value.

Two analysers are provided initially. One for an embedded servlet
container port clash and another for BeanCurrentlyInCreationExceptions.
More analysers are planned (for UnsatisfiedDependencyException and for
NoUniqueBeanDefinitionException) once some updates have been made
to Spring Framework to make those failures more amenable to analysis.

Closes gh-4907
9 years ago
Andy Wilkinson d454896755 Update documentation following changes to executable jar layout
See gh-4897
9 years ago
Andy Wilkinson fcbf15aea3 Update Ant support following changes the executable jar layout
Closes gh-4897
9 years ago
Andy Wilkinson 87fe0b2ade Use a conventional delegation model in LaunchedURLClassLoader
When an application is run as an executable archive with nested jars,
the application's own classes need to be able to load classes from
within the nested jars. This means that the application's classes need
to be loaded by the same class loader as is used for the nested jars.
When an application is launched with java -jar the contents of the
jar are on the class path of the app class loader, which is the
parent of the LaunchedURLClassLoader that is used to load classes
from within the nested jars. If the root of the jar includes the
application's classes, they would be loaded by the app class loader
and, therefore, would not be able to load classes from within the
nested jars.

Previously, this problem was resolved by LaunchedURLClassLoader being
created with a copy of all of the app class laoder's URLs and by
using an unconventional delegation model that caused it to skip its
parent (the app class loader) and jump straight to its root class
loader. This ensured that the LaunchedURLClassLoader would load both
the application's own classes and those from within any nested jars.
Unfortunately, this unusual delegation model has proved to be
problematic. We have seen and worked around some problems with Java
Agents (see gh-4911 and gh-863), but there are others (see gh-4868)
that cannot be made to work with the current delegation model.

This commit reworks LaunchedURLClassLoader to use a conventional
delegate model with the app class loader as its parent. With this
change in place, the application's own classes need to be hidden
from the app class loader via some other means. This is now achieved
by packaging application classes in BOOT-INF/classes (and, for
symmetry, nested jars are now packaged in BOOT-INF/lib). Both the
JarLauncher and the PropertiesLauncher (which supports the executable
jar layout) have been updated to look for classes and nested jars in
these new locations.

Closes gh-4897
Fixes gh-4868
9 years ago