Thomas Hackel created TAP5-2080:
-----------------------------------
Summary: Its not possible to use Tapestry5 behind an SSL Proxy AND
internally / BaseURLSource is crap
Key: TAP5-2080
URL: https://issues.apache.org/jira/browse/TAP5-2080
Project: Tapestry 5
Issue Type: Bug
Affects Versions: 5.3.6
Reporter: Thomas Hackel
Two Scenario:
1. User(Internet)->SSL-Proxy:443->Tomcat:8080
2. User(Intranet)->Tomcat:8080
The BaseURLSourceImpl DOES NOT use the Scheme of the request, it just uses the
secured flag to change the scheme. Which is not required/useful in the scenario
above.
The BaseURLSource creates links like "http://foo:443/bar" instead of
"https://foo/bar".
This problem was already mentioned in TAP5-167 which was "silently" closed.
Overwriting the BaseURLSource, as described in
http://tapestry.apache.org/https.html is also not possible because you would
need a Request object which can't be injected because it causes some "service
cycle" problem. The Request object is required to physically map 443 to https,
because the Tap5 Request object also lacks the Request Scheme...
{code}
public static void contributeServiceOverride(
MappedConfiguration<Class<?>, Object> configuration,
@Inject Request request) {
BaseURLSource source = new ProxyEnabledBaseURLSource(request);
configuration.add(BaseURLSource.class, source);
}
{code}
Causes:
{code}
java.lang.IllegalStateException: Construction of service 'ServiceOverride' has
failed due to recursion: the service depends on itself in some way. Please
check org.apache.tapestry5.ioc.internal.services.ServiceOverrideImpl(Map) (at
ServiceOverrideImpl.java:31) via
org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:49) for references to another service that is itself
dependent on service 'ServiceOverride'.
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira