2

我一直在将 Jersey v2.19 与 Google Appengine v1.9.22 一起使用,它在本地开发服务器中运行良好,没有任何问题,但是当我尝试将应用程序部署到 appengine 时。我得到多个例外

使用的框架:

AppEngine Java 1.9.22

泽西 2.19

物化 5.1.5

Guice 3.x

摇篮

以下是我在日志中得到的异常:

org.glassfish.jersey.internal.Errors logErrors:检测到以下警告:警告:检测到未知的 HK2 故障:

多异常堆栈 1 of 4

java.security.AccessControlException:访问被拒绝(“java.lang.RuntimePermission”“getClassLoader”) 在 com.google.appengine.runtime.Request.process-84bc59f0ba240851(Request.java) 在 java.security.AccessControlContext.checkPermission(AccessControlContext.java:382) 在 java.security.AccessController.checkPermission(AccessController.java:572) 在java.lang.SecurityManager.checkPermission(SecurityManager.java:549) at java.lang.ClassLoader.checkClassLoaderPermission(ClassLoader.java:1606) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1525) at org.jvnet.hk2 .internal.ProxyUtilities$1.run(ProxyUtilities.java:95) at org.jvnet.hk2.internal.ProxyUtilities$1.run(ProxyUtilities.java:90) at java.security.AccessController.doPrivileged(AccessController.java:34) at org.jvnet.hk2.internal.ProxyUtilities.secureCreate(ProxyUtilities.java:90) 在 org.jvnet.hk2.internal.ProxyUtilities。generateProxy(ProxyUtilities.java:206) 在 org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2038) 在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:105) 在 org.jvnet .hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87) at org.glassfish.jersey.internal.inject.ContextInjectionResolver.resolve(ContextInjectionResolver.java:126) at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator .java:214) 在 org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:237) 在 org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:360) 在 org.jvnet.hk2。 internal.SystemDescriptor.create(SystemDescriptor.java:470) 在 org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:82) 在 org.jvnet.hk2.internal.SingletonContext$1。org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:97) 在 java.util.concurrent.FutureTask.run(FutureTask.java:260) 的计算(SingletonContext.java:70) org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:154) 在 org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199) 在 org.jvnet.hk2。 internal.SingletonContext.findOrCreate(SingletonContext.java:121) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2065) at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:105)在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87) 在 org.glassfish.jersey.internal.inject.Providers.getAllRankedProviders(Providers.java:247) 在 org.glassfish.jersey.server.ApplicationHandler .getProcessingProviders(ApplicationHandler.java:758) at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:536) at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:183) at org. glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:349) at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:346) at org.glassfish.jersey.internal.Errors.process( Errors.java:315) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:297) 在 org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) 在 org.glassfish.jersey .server.ApplicationHandler.(ApplicationHandler.java:346) 在 org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:339) 在 org.glassfish.jersey.servlet.ServletContainer。init(ServletContainer.java:170) 在 org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:393) 在 org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) 在 org.mortbay .component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140 ) 在 org.mortbay.jetty.webapp.WebAppContext 的 org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 的 org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)。 doStart(WebAppContext.java:467) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437) 在 com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444) 在 com.google.tracing.CurrentContext.runInContext(CurrentContext.java:230) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java :308) 在 com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300) 在 com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441) 在 java.lang.Thread.run(线程.java:745)TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441) at java.lang.Thread.run(Thread.java:745)TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300) at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441) at java.lang.Thread.run(Thread.java:745)

多异常堆栈 2 of 4

java.lang.IllegalArgumentException:尝试在 org.glassfish.jersey.process.internal.RequestScoped 范围内为 javax.servlet.http.HttpServletRequest 创建代理时,在 org.jvnet.hk2.internal.ProxyUtilities创建代理时出错.generateProxy(ProxyUtilities.java:212) 在 org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2038) 在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:105) 在 org. jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:87) 在 org.glassfish.jersey.internal.inject.ContextInjectionResolver.resolve(ContextInjectionResolver.java:126)

...修剪

多异常堆栈 3 of 4

java.lang.IllegalArgumentException:在尝试解决 com.app.webapp.filters.WebApiAuthFilter 的依赖项时发现错误

多异常堆栈 4 of 4

java.lang.IllegalStateException:无法执行操作:在 com.app.webapp.filters.WebApiAuthFilter 上解析

我已经搜索了可能的修复程序,但找不到与我的问题相关的任何内容,我使用 JDO 或 JPA,所以 asm jar 不兼容不是原因。

关于如何解决这个问题的任何想法?

更新 :

我试图找出这个异常的原因,我有一个过滤器,我在其中注入了 HttpServletRequest ,因此引发了异常,但不知道为什么。

@Provider
@WebApiAuth
public class AuthFilter implements ContainerRequestFilter {

 // problem is because of injecting this 
  @Context
  protected HttpServletRequest servletRequest;
}
4

1 回答 1

2

这对您来说可能为时已晚,但为了帮助他人 - 我在尝试访问 request.getRemoteAddr() 时遇到了同样的问题。注入 HttpServletRequest 在运行时抛出此错误,并且环境变量、请求属性或标头都不包含远程地址。

https://stackoverflow.com/a/23590606/3037408

提供一个可行的解决方案,将“remote_addr”标头添加到 jersey/jaxrs 标头中。如果您需要从 HttpServletRequest 访问 remote_addr 以外的其他内容,您可能也可以将相关数据插入到标头或其他属性中以供以后访问。

于 2016-02-16T20:17:44.467 回答