You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@guacamole.apache.org by "Nick Couchman (Jira)" <ji...@apache.org> on 2020/12/28 23:02:00 UTC
[jira] [Commented] (GUACAMOLE-1246) Unable to implement
GuacamoleHTTPTunnelServlet using different web server API
[ https://issues.apache.org/jira/browse/GUACAMOLE-1246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17255741#comment-17255741 ]
Nick Couchman commented on GUACAMOLE-1246:
------------------------------------------
[~cspeckrun]: JIRA is not designed to be a support forum, but a bug/feature tracker. I think you'd be better off starting off this conversation on one of the mailing lists - user gets a bit more traffic and is more likely to get a response; but this seems like it might be appropriate for the dev list. Pick one of them, though - don't double-post :-).
http://guacamole.apache.org/support/
> 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 {{guacamole.common@1.1.0}} however this line
> {{--add-opens guacamole.common/org.apache.guacamole.servlet=ALL-UNNAMED}}
> and this line
> {{--add-opens guacamole.common@1.1.0/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)