【问题标题】:AccessControlException when using hibernate in wso2 app cloud在 wso2 应用程序云中使用休眠时出现 AccessControlException
【发布时间】:2015-05-01 06:38:23
【问题描述】:

我试图在我的应用程序中使用休眠,但是它抛出了一个异常。以下是我尝试运行它时的堆栈跟踪。当我尝试用简单的 java 连接时,它工作正常。

java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
java.security.AccessController.checkPermission(AccessController.java:559)
java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:611)
java.lang.ClassLoader.checkCreateClassLoader(ClassLoader.java:275)
java.lang.ClassLoader.<init>(ClassLoader.java:317)
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.<init>(ClassLoaderServiceImpl.java:179)
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.<init>(ClassLoaderServiceImpl.java:175)
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.<init>(ClassLoaderServiceImpl.java:109)
org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:241)
org.hibernate.boot.registry.StandardServiceRegistryBuilder.<init>(StandardServiceRegistryBuilder.java:73)
   org.geeksngeeks.database.ConnectionManager.init(ConnectionManager.java:43)
org.geeksngeeks.config.InitConfig.triggerAppStartup(InitConfig.java:252)

以下是我连接数据库的代码。

Properties props = new Properties();

try {
  ResourceBundle rb = ResourceBundle.getBundle("hibernate");
  for (final Object name : rb.keySet()) {
    final String sName = String.valueOf(name);
    props.setProperty(sName.toLowerCase(), rb.getString(sName));
  }
} catch (Exception ex) {
  props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
  props.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
  props.setProperty("hibernate.connection.url", "jdbc:mysql://mysql-dev-01.cloud.wso2.com:3306/my_db_name");
  props.setProperty("hibernate.connection.username", "user");
  props.setProperty("hibernate.connection.password", "paswd");
  props.setProperty("hibernate.hbm2ddl.auto", "update");
}
Configuration configuration = new Configuration();
configuration.configure(new URL(Config.getWebserver() + "hibernate.cfg.xml"));
//configuration.setProperties(props);
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    applySettings(configuration.getProperties()).build();

factory = configuration.buildSessionFactory(serviceRegistry);

【问题讨论】:

    标签: java hibernate wso2 accesscontrolexception wso2cloud


    【解决方案1】:

    根据这一行:

    java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:611)
    

    您的 Java 进程启用了一些安全策略。这个至少是肯定的:

    permission java.lang.RuntimePermission "createClassLoader";
    

    您需要禁用此设置,否则将不允许您的应用程序实例化新的类加载器,而它显然需要这样做。

    【讨论】:

    • 如何在 wso2 服务器上执行此操作。它的应用云
    【解决方案2】:

    确实,安全管理器正在阻止加载。如果您提交请求,WSO2 Cloud 应该能够为您启用 Hibernate:只需登录 WSO2 App Cloud 并单击支持/联系我们发送请求。

    【讨论】:

      猜你喜欢
      • 2023-02-17
      • 2023-04-04
      • 2022-11-03
      • 1970-01-01
      • 2011-07-09
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多