Skip to content

Commit f50f328

Browse files
Christopher Frostnebhale
authored andcommitted
Add support for Gem Fire session replication
This commit adds support for automatic Tomcat session replication using Gem Fire by binding to a service that exposes the required service tag 'session_replication' and service credentials 'locators', 'username' and 'password'. [#81541998]
1 parent a8766c2 commit f50f328

28 files changed

Lines changed: 1012 additions & 1 deletion

config/tomcat.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,22 @@ redis_store:
3434
database: 0
3535
timeout: 2000
3636
connection_pool_size: 2
37+
gemfire_store:
38+
gemfire:
39+
version: 8.0.+
40+
repository_root: "{default.repository.root}/gem-fire"
41+
gemfire_modules:
42+
version: 8.0.+
43+
repository_root: "{default.repository.root}/gem-fire-modules"
44+
gemfire_modules_tomcat7:
45+
version: 8.0.+
46+
repository_root: "{default.repository.root}/gem-fire-modules-tomcat7"
47+
gemfire_security:
48+
version: 8.0.+
49+
repository_root: "{default.repository.root}/gem-fire-security"
50+
gemfire_logging:
51+
version: 1.5.8
52+
repository_root: "{default.repository.root}/slf4j-jdk14"
53+
gemfire_logging_api:
54+
version: 1.5.8
55+
repository_root: "{default.repository.root}/slf4j-api"

lib/java_buildpack/container/tomcat.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
require 'java_buildpack/container/tomcat/tomcat_logging_support'
2323
require 'java_buildpack/container/tomcat/tomcat_access_logging_support'
2424
require 'java_buildpack/container/tomcat/tomcat_redis_store'
25+
require 'java_buildpack/container/tomcat/tomcat_gemfire_store'
2526

2627
module JavaBuildpack
2728
module Container
@@ -51,6 +52,7 @@ def sub_components(context)
5152
TomcatLoggingSupport.new(sub_configuration_context(context, 'logging_support')),
5253
TomcatAccessLoggingSupport.new(sub_configuration_context(context, 'access_logging_support')),
5354
TomcatRedisStore.new(sub_configuration_context(context, 'redis_store')),
55+
TomcatGemfireStore.new(sub_configuration_context(context, 'gemfire_store')),
5456
TomcatInsightSupport.new(context)
5557
]
5658
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Encoding: utf-8
2+
# Cloud Foundry Java Buildpack
3+
# Copyright 2013 the original author or authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
require 'java_buildpack/component/versioned_dependency_component'
18+
require 'java_buildpack/container'
19+
require 'java_buildpack/container/tomcat/tomcat_utils'
20+
require 'java_buildpack/logging/logger_factory'
21+
22+
module JavaBuildpack
23+
module Container
24+
25+
# Encapsulates the detect, compile, and release functionality for Tomcat Redis support.
26+
class GemFire < JavaBuildpack::Component::VersionedDependencyComponent
27+
include JavaBuildpack::Container
28+
29+
# (see JavaBuildpack::Component::BaseComponent#compile)
30+
def compile
31+
download_jar(jar_name, tomcat_lib)
32+
end
33+
34+
# (see JavaBuildpack::Component::BaseComponent#release)
35+
def release
36+
end
37+
38+
protected
39+
40+
# (see JavaBuildpack::Component::VersionedDependencyComponent#supports?)
41+
def supports?
42+
true
43+
end
44+
45+
private
46+
47+
def jar_name
48+
"gemfire-#{@version}.jar"
49+
end
50+
end
51+
52+
end
53+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Encoding: utf-8
2+
# Cloud Foundry Java Buildpack
3+
# Copyright 2013 the original author or authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
require 'java_buildpack/component/versioned_dependency_component'
18+
require 'java_buildpack/container'
19+
require 'java_buildpack/container/tomcat/tomcat_utils'
20+
require 'java_buildpack/logging/logger_factory'
21+
22+
module JavaBuildpack
23+
module Container
24+
25+
# Encapsulates the detect, compile, and release functionality for Tomcat Redis support.
26+
class GemFireLogging < JavaBuildpack::Component::VersionedDependencyComponent
27+
include JavaBuildpack::Container
28+
29+
# (see JavaBuildpack::Component::BaseComponent#compile)
30+
def compile
31+
download_jar(jar_name, tomcat_lib)
32+
end
33+
34+
# (see JavaBuildpack::Component::BaseComponent#release)
35+
def release
36+
end
37+
38+
protected
39+
40+
# (see JavaBuildpack::Component::VersionedDependencyComponent#supports?)
41+
def supports?
42+
true
43+
end
44+
45+
private
46+
47+
def jar_name
48+
"slf4j-jdk14-#{@version}.jar"
49+
end
50+
end
51+
52+
end
53+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Encoding: utf-8
2+
# Cloud Foundry Java Buildpack
3+
# Copyright 2013 the original author or authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
require 'java_buildpack/component/versioned_dependency_component'
18+
require 'java_buildpack/container'
19+
require 'java_buildpack/container/tomcat/tomcat_utils'
20+
require 'java_buildpack/logging/logger_factory'
21+
22+
module JavaBuildpack
23+
module Container
24+
25+
# Encapsulates the detect, compile, and release functionality for Tomcat Redis support.
26+
class GemFireLoggingApi < JavaBuildpack::Component::VersionedDependencyComponent
27+
include JavaBuildpack::Container
28+
29+
# (see JavaBuildpack::Component::BaseComponent#compile)
30+
def compile
31+
download_jar(jar_name, tomcat_lib)
32+
end
33+
34+
# (see JavaBuildpack::Component::BaseComponent#release)
35+
def release
36+
end
37+
38+
protected
39+
40+
# (see JavaBuildpack::Component::VersionedDependencyComponent#supports?)
41+
def supports?
42+
true
43+
end
44+
45+
private
46+
47+
def jar_name
48+
"slf4j-api-#{@version}.jar"
49+
end
50+
end
51+
52+
end
53+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Encoding: utf-8
2+
# Cloud Foundry Java Buildpack
3+
# Copyright 2013 the original author or authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
require 'java_buildpack/component/versioned_dependency_component'
18+
require 'java_buildpack/container'
19+
require 'java_buildpack/container/tomcat/tomcat_utils'
20+
require 'java_buildpack/logging/logger_factory'
21+
22+
module JavaBuildpack
23+
module Container
24+
25+
# Encapsulates the detect, compile, and release functionality for Tomcat Redis support.
26+
class GemFireModules < JavaBuildpack::Component::VersionedDependencyComponent
27+
include JavaBuildpack::Container
28+
29+
# (see JavaBuildpack::Component::BaseComponent#compile)
30+
def compile
31+
download_jar(jar_name, tomcat_lib)
32+
end
33+
34+
# (see JavaBuildpack::Component::BaseComponent#release)
35+
def release
36+
end
37+
38+
protected
39+
40+
# (see JavaBuildpack::Component::VersionedDependencyComponent#supports?)
41+
def supports?
42+
true
43+
end
44+
45+
private
46+
47+
def jar_name
48+
"gemfire-modules-#{@version}.jar"
49+
end
50+
end
51+
52+
end
53+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Encoding: utf-8
2+
# Cloud Foundry Java Buildpack
3+
# Copyright 2013 the original author or authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
require 'java_buildpack/component/versioned_dependency_component'
18+
require 'java_buildpack/container'
19+
require 'java_buildpack/container/tomcat/tomcat_utils'
20+
require 'java_buildpack/logging/logger_factory'
21+
22+
module JavaBuildpack
23+
module Container
24+
25+
# Encapsulates the detect, compile, and release functionality for Tomcat Redis support.
26+
class GemFireModulesTomcat7 < JavaBuildpack::Component::VersionedDependencyComponent
27+
include JavaBuildpack::Container
28+
29+
# (see JavaBuildpack::Component::BaseComponent#compile)
30+
def compile
31+
download_jar(jar_name, tomcat_lib)
32+
end
33+
34+
# (see JavaBuildpack::Component::BaseComponent#release)
35+
def release
36+
end
37+
38+
protected
39+
40+
# (see JavaBuildpack::Component::VersionedDependencyComponent#supports?)
41+
def supports?
42+
true
43+
end
44+
45+
private
46+
47+
def jar_name
48+
"gemfire-modules-tomcat7-#{@version}.jar"
49+
end
50+
end
51+
52+
end
53+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Encoding: utf-8
2+
# Cloud Foundry Java Buildpack
3+
# Copyright 2013 the original author or authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
require 'java_buildpack/component/versioned_dependency_component'
18+
require 'java_buildpack/container'
19+
require 'java_buildpack/container/tomcat/tomcat_utils'
20+
require 'java_buildpack/logging/logger_factory'
21+
22+
module JavaBuildpack
23+
module Container
24+
25+
# Encapsulates the detect, compile, and release functionality for Tomcat Redis support.
26+
class GemFireSecurity < JavaBuildpack::Component::VersionedDependencyComponent
27+
include JavaBuildpack::Container
28+
29+
# (see JavaBuildpack::Component::BaseComponent#compile)
30+
def compile
31+
download_jar(jar_name, tomcat_lib)
32+
end
33+
34+
# (see JavaBuildpack::Component::BaseComponent#release)
35+
def release
36+
end
37+
38+
protected
39+
40+
# (see JavaBuildpack::Component::VersionedDependencyComponent#supports?)
41+
def supports?
42+
true
43+
end
44+
45+
private
46+
47+
def jar_name
48+
"gemfire-security-#{@version}.jar"
49+
end
50+
end
51+
52+
end
53+
end

0 commit comments

Comments
 (0)