1

我正在尝试将我的 gwt 应用程序部署到 ubuntu 9.10 下的 tomcat6 并得到(我想你们很多人都知道)“java.security.AccessControlException:访问被拒绝”错误(可以在最后找到完整的异常)。我一般搜索了网络,发现 Java 默认安全权限阻止序列化程序访问我的类私有成员(它们确实有 getter 和 setter),我应该使用 /etc/tomcat6/ 的文件添加到 tomcat 策略policy.d/60gwt.policy 如下: grant codeBase "file:/var/lib/tomcat6/webapps/-" { permission java.security.AllPermission; }

尽管我已经这样做了(并且我理解其中的含义),但无论我重新启动服务器多少次,我仍然会遇到相同的错误。下一步可能是完全禁用 tomcats 安全管理器,但这个应用程序最终会投入生产,我想知道这里发生了什么。另外,我宁愿不公开任何成员变量......有什么想法吗?干杯

严重:调度传入的 RPC 调用时出现异常 java.security.AccessControlException:在 java.security.AccessController.checkPermission 的 java.security.AccessControlContext.checkPermission (AccessControlContext.java:323) 的访问被拒绝 (java.lang.reflect.ReflectPermission suppressAccessChecks) ( AccessController.java:546) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java: 532) 在 java.lang.reflect.AccessibleObject.setAccessible (AccessibleObject.java:107) 在 com.google.gwt.user.server.rpc .impl.ServerSerializationStreamWriter.seriali zeClass (ServerSerializationStreamWriter.java:694) 在 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.seriali zeImpl (ServerSerializationStreamWriter.java:730) 在 com.google.gwt.user.server .rpc.impl。ServerSerializationStreamWriter.seriali zeClass (ServerSerializationStreamWriter.java:712) 位于 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.seriali zeImpl (ServerSerializationStreamWriter.java:730) 位于 com.google.gwt.user.server.rpc。 impl.ServerSerializationStreamWriter.seriali ze (ServerSerializationStreamWriter.java:612) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.write Object (AbstractSerializationStreamWriter.java:129) at com.google.gwt.user.server。 rpc.impl.ServerSerializationStreamWriter $ValueWriter$8.write(ServerSerializationStreamWriter.java:152) 在 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.seriali zeValue (ServerSerializationStreamWriter.java:534) 在 com.google.gwt。用户.server.rpc.RPC。com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure 上的 encodeResponse(RPC.java:609) (RPC.java:383) 上 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse (RPC. java:581) 在 com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:188) 在 com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost (RemoteServiceServlet.java:224)在 com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost (AbstractRemoteServiceServlet.java:62) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:717) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil. java: 269) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAsPrivileged(Subject.java:517) 在 org.apache.catalina.security.SecurityUtil.execute (SecurityUtil.java: 301) org.apache.catalina.security.SecurityUtil.doAsPrivilege (SecurityUtil.java:162) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:283) org.apache.catalina.core.ApplicationFilterChain .access$000 (ApplicationFilterChain.java:56) 在 org.apache.catalina.core.ApplicationFilterChain$1。在 org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:185) 在 org.apache.catalina.core.StandardWrapperValve 的 java.security.AccessController.doPrivileged(Native Method) 运行 (ApplicationFilterChain.java:189)。在 org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) 在 org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) 调用 (StandardWrapperValve.java:233) .catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) 在 org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java :293) 在 org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:849) 在 org.apache.coyote.http11.Http11Protocol $Http11ConnectionHandler.process(Http11Protocol.java:583) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java: 454) 在 java .lang.Thread.run(Thread.java:619)

4

2 回答 2

0

没关系,我解决了这个问题。我实际上使用的是 file:$ {catalina.base}webapps/- 而不是我之前写的 file:/var/lib/tomcat6/webapps 。 /etc/default/tomcat 中的Tomcat配置说如果你不设置 catalina .base 然后 /var/lib/tomcat6/ 默认使用但是...

于 2010-01-22T11:16:55.580 回答
0

无论如何:GWT 无法序列化这种异常,因为该类型在模拟的 JRE 库中不可用。因此,您要么通过超级资源自己定义它,要么在服务器上处理异常并确保只抛出受支持的异常。

于 2010-01-22T12:24:28.633 回答