java.security.AccessControlException: доступ запрещен (java.lang.RuntimePermission accessClassInPackage.sun.misc) - PullRequest
2 голосов
/ 30 мая 2011

Таким образом, моя хостинговая компания изменила свой сервис на tomcat 7 с менеджером безопасности, и с тех пор я получаю это исключение каждый раз, когда мое приложение пытается подключиться к базе данных MySQL с помощью Hibernate. Я не знаю, что делать, они спрашивают у меня разрешения для Tomcat, но я ничего особенного не определил.

Может ли кто-нибудь мне помочь?

Это моя трассировка стека:

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)

Ответы [ 3 ]

3 голосов
/ 30 мая 2011

В вашей конфигурации безопасности Tomcat есть проблема.Проверьте, существует ли в $ {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.*";
};

и добавьте в $ {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;
};

это обходной путь, но он небезопасен.

2 голосов
/ 30 мая 2011

Кажется, что класс ir.omicc.utilBox.PasswordService пытается использовать какой-то класс в пакете sun.misc. Если этот класс является одним из ваших классов, вы должны переопределить его, не обращаясь к классам sun.misc. Если нет, то попросите разработчика / компанию, которая внедрила этот класс, исправить это. Использование sun.misc классов - очень плохая практика, которая всегда не поощрялась.

1 голос
/ 31 мая 2011

Я предполагаю, что трассировка стека была отредактирована. Теперь вам нужно предоставить вашей кодовой базе следующее разрешение:

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

или более вероятно "hibernate. *", "Read, write";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...