简体   繁体   English

java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission accessClassInPackage.sun.misc)

[英]java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.misc)

So my hosting company changed their service to tomcat 7 with security manager, and from that time on I am getting this exception every time my application tries to connect to MySQL database with Hibernate.因此,我的托管公司将其服务更改为带有安全管理器的 tomcat 7,从那时起,每次我的应用程序尝试使用 Hibernate 连接到 MySQL 数据库时,我都会遇到此异常。 I don't know what to do, they ask me for my Tomcat permissions, but I have not defined anything special.我不知道该怎么办,他们要求我提供 Tomcat 权限,但我没有定义任何特别的东西。

Can any one help me?谁能帮我?

This is my stack trace:这是我的堆栈跟踪:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    sun.reflect.GeneratedMethodAccessor134.invoke(Unknown Source)
       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)

root cause

javax.servlet.ServletException: java.lang.ExceptionInInitializerError
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
    org.apache.jasper.runtime.PageContextImpl.access$1100(PageContextImpl.java:71)
    org.apache.jasper.runtime.PageContextImpl$12.run(PageContextImpl.java:778)
    java.security.AccessController.doPrivileged(Native Method)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
    org.apache.jsp.news_jsp._jspService(news_jsp.java:285)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    sun.reflect.GeneratedMethodAccessor134.invoke(Unknown Source)
    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)


root cause

java.lang.ExceptionInInitializerError
    ir.omicc.hibernate.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16)
    ir.omicc.hibernate.util.HibernateUtil.getSessionFactory(HibernateUtil.java:24)
    ir.omicc.classes.Publisher.getNews(Publisher.java:126)
    org.apache.jsp.news_jsp._jspService(news_jsp.java:221)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    sun.reflect.GeneratedMethodAccessor134.invoke(Unknown Source)
    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)

root cause



java.security.AccessControlException: access denied (java.util.PropertyPermission hibernate.enable_specj_proprietary_syntax read)
    java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    java.security.AccessController.checkPermission(AccessController.java:546)
    java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
    java.lang.System.getProperty(System.java:650)
    org.hibernate.cfg.Configuration.reset(Configuration.java:362)
    org.hibernate.cfg.Configuration.<init>(Configuration.java:296)
    org.hibernate.cfg.Configuration.<init>(Configuration.java:300)
    ir.omicc.hibernate.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:12)
    ir.omicc.hibernate.util.HibernateUtil.getSessionFactory(HibernateUtil.java:24)
    ir.omicc.classes.Publisher.getNews(Publisher.java:126)
    org.apache.jsp.news_jsp._jspService(news_jsp.java:221)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    sun.reflect.GeneratedMethodAccessor134.invoke(Unknown Source)
    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)

There's a problem in your tomcat security configuration.您的 tomcat 安全配置存在问题。 Check if exists in ${catalina.home}/conf/catalina.policy the following lines:检查 ${catalina.home}/conf/catalina.policy 中是否存在以下行:

grant {

    // Precompiled JSPs need access to this package.
    permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
    permission java.lang.RuntimePermission "accessClassInPackage.sun.misc.*";
};

and add in ${catalina.home}/conf/policy.d/03.catalina.policy并添加 ${catalina.home}/conf/policy.d/03.catalina.policy

// The permissions granted to your jar (ir.omicc ??)
grant codeBase "file:/path/to/the/ir.omicc.utilBox/your.jar" {
  permission java.security.AllPermission;
};

it's a workaround but it's not secure.这是一种解决方法,但不安全。

It seems that the class ir.omicc.utilBox.PasswordService tries to use some class in the sun.misc package.似乎 class ir.omicc.utilBox.PasswordService试图在sun.misc package 中使用一些 class。 If this class is one of your classes, then you should reimplement it without accessing the sun.misc classes.如果这个 class 是您的类之一,那么您应该在不访问 sun.misc 类的情况下重新实现它。 If not, then ask the developer/company who implemented this class to fix it.如果没有,请询问实现此 class 的开发人员/公司来修复它。 Using sun.misc classes is a very bad practice, which has always been discouraged.使用sun.misc类是一种非常糟糕的做法,一直不鼓励这样做。

I asssume the stack trace has been edited.我假设堆栈跟踪已被编辑。 You now need to grant your codebase the following permission:您现在需要授予您的代码库以下权限:

java.util.PropertyPermission "hibernate.enable_specj_proprietary_syntax", "read";

or more probably "hibernate.*", "read, write";或者更可能是“休眠。*”、“读、写”;

暂无
暂无

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

相关问题 java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission accessClassInPackage.sun.security.pkcs11) - java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.security.pkcs11) java.security.AccessControlException:access denied(“java.lang.RuntimePermission”“accessClassInPackage.sun.reflect.annotation”)Spring - java.security.AccessControlException: access denied (“java.lang.RuntimePermission” “accessClassInPackage.sun.reflect.annotation”) Spring 获取java.security.AccessControlException:使用JDK8拒绝访问(“ java.lang.RuntimePermission”“ accessClassInPackage.sun.swing”)吗? - Getting java.security.AccessControlException: access denied (“java.lang.RuntimePermission” “accessClassInPackage.sun.swing”) with JDK8? appengine spring aop java.security.AccessControlException:access denied(“java.lang.RuntimePermission”“accessClassInPackage.sun.reflect”) - appengine spring aop java.security.AccessControlException: access denied (“java.lang.RuntimePermission” “accessClassInPackage.sun.reflect”) java.security.AccessControlException:访问被拒绝(“ java.lang.RuntimePermission”“ modifyThreadGroup”) - java.security.AccessControlException: access denied (“java.lang.RuntimePermission” “modifyThreadGroup”) Appengine DevMode:访问被拒绝(“java.lang.RuntimePermission”“accessClassInPackage.sun.security.util”) - Appengine DevMode : access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.security.util") 带有Hibernate java.security.AccessControlException的Google App Engine:访问被拒绝(“ java.lang.RuntimePermission”“ modifyThreadGroup”) - Google App Engine with Hibernate java.security.AccessControlException: access denied (“java.lang.RuntimePermission” “modifyThreadGroup”) java.security.AccessControlException:访问被拒绝(“ java.lang.RuntimePermission”“ loadLibrary.jpcap”) - java.security.AccessControlException: access denied (“java.lang.RuntimePermission” “loadLibrary.jpcap”) java.security.AccessControlException:拒绝访问(java.lang.RuntimePermission modifyThreadGroup) - java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission createSecurityManager) - java.security.AccessControlException: access denied (java.lang.RuntimePermission createSecurityManager)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM