[
https://issues.apache.org/jira/browse/GUACAMOLE-1246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17255745#comment-17255745
]
Christopher Speck commented on GUACAMOLE-1246:
----------------------------------------------
Okay thank you I can post on the mailing list. It didn't seem appropriate for
the users mailing list and the dev mailing list seems like it's primarily
automated email communication from JIRA, GitHub, and Jenkins.
> Unable to implement GuacamoleHTTPTunnelServlet using different web server API
> -----------------------------------------------------------------------------
>
> Key: GUACAMOLE-1246
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-1246
> Project: Guacamole
> Issue Type: Improvement
> Components: guacamole-common
> Affects Versions: 1.2.0
> Environment: Java 11, Play Framework 2.7
> Reporter: Christopher Speck
> Priority: Trivial
>
> I'm investigating the possibility of hosting a Guacamole server using the
> Play Framework ([https://www.playframework.com/]) which is not compatible
> with HTTP Servlets. This requires re-implementing the
> {{GuacamoleHTTPTunnelServlet}} as an endpoint compatible with the Play API.
> The servlet implementation is not overly large and is a good candidate for
> re-implementing for a different web server API however the servlet makes use
> of {{GuacamoleHTTPTunnelMap}} as a means of managing known tunnels across
> different requests. That class is package-private which means it cannot be
> used outside of the guacamole-common module/source.
>
> Workaround attempts:
> * I've tried creating an {{org.apache.guacamole.servlet}} package in my
> project and making a new public class which extends
> {{GuacamoleHTTPTunnelMap}} however this is not compatible with Java 9 module
> system.
> * I've tried copy/pasting the entire contents into its own class. This ends
> up with the same module issues because internally this class uses
> {{GuacamoleHTTPTunnel}} which is also package-private.
> Using either of these attempts results in {{IllegalAccessError}} during
> runtime which I'm unsure if there's a way to work around. I've tried using
> {{add-opens}}/{{add-exports}} when running the server however this does not
> seem to be able to identify the right module for
> {{guacamole-common-1.1.0.jar}}. Using the {{jar}} tool I've inspected the
> {{guacamole-common-1.1.0.jar}} and it identifies using an automated module of
> {{[email protected]}} however this line
> {{--add-opens guacamole.common/org.apache.guacamole.servlet=ALL-UNNAMED}}
> and this line
> {{--add-opens
> [email protected]/org.apache.guacamole.servlet=ALL-UNNAMED}}
> Both result in this warning
> {{WARNING: Unknown module: guacamole.common specified to --add-opens}}
>
> I think making {{GuacamoleHTTPTunnelMap}} public is a small and low-risk
> change that should resolve the module issues and allow alternate server API
> implementations.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)