[ 
https://issues.apache.org/jira/browse/GUACAMOLE-1246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Speck updated GUACAMOLE-1246:
-----------------------------------------
    Description: 
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.

  was:
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.


> 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)

Reply via email to