Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XMPP binding leads to ClassNotFoundException with current appengine-api-1.0-sdk:1.9.89 #236

Open
leonard84 opened this issue Jun 19, 2021 · 3 comments

Comments

@leonard84
Copy link

It seems that google has removed the XMPPServiceFactory and other xmpp releated classes.
https://cloud.google.com/appengine/docs/standard/java/javadoc/deprecated-list

This leads to a ClassNotFoundException in the GaelykBindingEnhancer when running the code with the current com.google.appengine:appengine-api-1.0-sdk:1.9.89.

java.lang.ClassNotFoundException: com.google.appengine.api.xmpp.XMPPServiceFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:209)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at groovyx.gaelyk.GaelykBindingEnhancer.bind(GaelykBindingEnhancer.groovy:73)
        at groovyx.gaelyk.GaelykBindingEnhancer$bind.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
        at groovyx.gaelyk.routes.RoutesFilter.loadRoutes(RoutesFilter.groovy:100)
        at groovyx.gaelyk.routes.RoutesFilter.init(RoutesFilter.groovy:78)
        at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:140)
        at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:731)
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:755)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:911)
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.server.Server.start(Server.java:423)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
        at org.eclipse.jetty.server.Server.doStart(Server.java:387)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
        at com.google.appengine.tools.development.jetty9.JettyContainerService.startContainer(JettyContainerService.java:357)
        at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:283)
        at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
        at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:87)
        at com.google.appengine.tools.development.Modules.startup(Modules.java:105)
        at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:270)
        at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:44)
        at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:219)
        at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
        at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:390)
        at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
        at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:243)
        at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:234)

An easy fix would be to remove the lines in groovyx.gaelyk.GaelykBindingEnhancer

        // New in GAE SDK 1.2.5: XMPP support
        binding.setVariable("xmpp", XMPPServiceFactory.XMPPService)

or at least wrap them in a try-catch.

@musketyr
Copy link
Contributor

@leonard84 I guess this is an issue for Spock Web Console? @glaforge were you dealing with something similar? maybe now is the time to migrate to Micronaut Console ?

@leonard84
Copy link
Author

This is going a bit off-topic, but yes I ran into it while updating the spock web console for 2.0.

@musketyr does GAE support running micronaut/netty now? #225 said this was an issue back then.
Also, does micronaut console offer any isolation/security support, a quick look in the docs didn't show anything?

The current implementation is quite open, but even if you kill it with System.exit(0) it comes back in 1-2 seconds.

@musketyr
Copy link
Contributor

Things changed a lot since than. @glaforge would know more because I've totally lost the track with the Google Cloud ecosystem.

here's the article from him I have found:

https://glaforge.appspot.com/article/getting-started-with-micronaut-on-google-app-engine-java-11

Of course, you can reuse and attach your own compilation customizers:

https://agorapulse.github.io/micronaut-console/#_compilation_customizers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants