简体   繁体   English

Google App Engine-Web Service Jersey 2.xx

[英]Google App Engine - Web Service Jersey 2.xx

I am currently trying to develop a webservice and host it on GAE. 我目前正在尝试开发网络服务并将其托管在GAE上。 I proceed with the below steps: 我继续以下步骤:

  1. Create new Web Application Project for Google App Engine 为Google App Engine创建新的Web应用程序项目

Below is my class Book: 以下是我的课本:

*import javax.ws.rs.*;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
@Path("/book")
public class Book {
@GET
@Produces(MediaType.TEXT_XML)
public String sayHello()
{
    String response = "<?xml version='1.0' ?>" +
                    "<hello> Hello xml </hello>";
    return response;
}


@GET
@Produces(MediaType.APPLICATION_JSON)
public String sayHelloJSON()
{
    String response = null;
    return response;
    }
}*

When I run the application as Web Application locally, I get the below error. 当我在本地将应用程序作为Web应用程序运行时,出现以下错误。 Has anyone ever come across this, and also, does anyone have any direction/hints to create a simple Java webservice? 有没有人遇到过这种情况,并且还有人有任何指导/提示来创建简单的Java Web服务吗?

java.lang.IllegalArgumentException: INVOKESPECIAL/STATIC on interfaces require ASM 5
    at com.google.appengine.repackaged.org.objectweb.asm.MethodVisitor.visitMethodInsn(MethodVisitor.java:478)
    at com.google.appengine.repackaged.org.objectweb.asm.ClassReader.readCode(ClassReader.java:1429)
    at com.google.appengine.repackaged.org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1017)
    at com.google.appengine.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:693)
    at com.google.appengine.repackaged.org.objectweb.asm.ClassReader.accept(ClassReader.java:506)
    at com.google.appengine.tools.development.agent.impl.Transformer.rewrite(Transformer.java:146)
    at com.google.appengine.tools.development.agent.impl.Transformer.transform(Transformer.java:113)
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:199)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
    at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
    at org.glassfish.jersey.model.internal.ComponentBag.modelFor(ComponentBag.java:518)
    at org.glassfish.jersey.model.internal.ComponentBag.lambda$registerModel$10(ComponentBag.java:477)
    at org.glassfish.jersey.model.internal.ComponentBag$$Lambda$14/32117050.call(Unknown Source)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.model.internal.ComponentBag.registerModel(ComponentBag.java:469)
    at org.glassfish.jersey.model.internal.ComponentBag.register(ComponentBag.java:380)
    at org.glassfish.jersey.model.internal.CommonConfig.register(CommonConfig.java:454)
    at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:450)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:330)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:273)
    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:258)
    at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:213)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:211)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:211)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:225)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:216)

Jun 10, 2017 1:22:14 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed JAVA WS: java.lang.NoClassDefFoundError: java.util.stream.Collectors is a restricted class. Please see the Google  App Engine developer's guide for more details.
Jun 10, 2017 1:22:14 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@194fad1{/,C:\Users\Avi\workspace\WsDemo\war}: java.lang.NoClassDefFoundError: java.util.stream.Collectors is a restricted class. Please see the Google  App Engine developer's guide for more details.
Jun 10, 2017 1:22:14 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed JettyContainerService$ApiProxyHandler@1f0a4cb: java.lang.NoClassDefFoundError: java.util.stream.Collectors is a restricted class. Please see the Google  App Engine developer's guide for more details.
Jun 10, 2017 1:22:14 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Error starting handlers
java.lang.NoClassDefFoundError: java.util.stream.Collectors is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:52)
    at org.glassfish.jersey.model.ContractProvider$Builder.build(ContractProvider.java:242)
    at org.glassfish.jersey.server.ResourceConfig$State.lambda$getModelEnhancer$0(ResourceConfig.java:158)
    at org.glassfish.jersey.server.ResourceConfig$State$$Lambda$13/32826375.apply(Unknown Source)
    at org.glassfish.jersey.model.internal.ComponentBag.modelFor(ComponentBag.java:567)
    at org.glassfish.jersey.model.internal.ComponentBag.lambda$registerModel$10(ComponentBag.java:477)
    at org.glassfish.jersey.model.internal.ComponentBag$$Lambda$14/32117050.call(Unknown Source)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.model.internal.ComponentBag.registerModel(ComponentBag.java:469)
    at org.glassfish.jersey.model.internal.ComponentBag.register(ComponentBag.java:380)
    at org.glassfish.jersey.model.internal.CommonConfig.register(CommonConfig.java:454)
    at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:450)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:330)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:273)
    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:258)
    at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:213)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:211)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:211)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:225)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:216)

Jun 10, 2017 1:22:14 AM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Started SelectChannelConnector@127.0.0.1:8888
Jun 10, 2017 1:22:14 AM com.google.appengine.tools.development.AbstractModule startup
INFO: Module instance default is running at http://localhost:8888/
Jun 10, 2017 1:22:14 AM com.google.appengine.tools.development.AbstractModule startup
INFO: The admin console is running at http://localhost:8888/_ah/admin
Jun 10, 2017 1:22:14 AM com.google.appengine.tools.development.DevAppServerImpl doStart
INFO: Dev App Server is now running

Stream API is a Java8 feature, so make sure your GAE application is configured to use Java8 as the runtime: https://cloud.google.com/appengine/docs/standard/java/migrating-to-java8 流API是Java8的功能,因此请确保将您的GAE应用程序配置为使用Java8作为运行时: https ://cloud.google.com/appengine/docs/standard/java/migrating-to-java8

In essence edit the appengine-web.xml file: 本质上,编辑appengine-web.xml文件:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <runtime>java8</runtime>
    <threadsafe>true</threadsafe>
</appengine-web-app>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM