2015-05-01 5 views
0

Я пытаюсь использовать спящий режим в своем приложении, но он бросает исключение. Ниже приведен стек, когда я пытаюсь запустить его. Когда я пытаюсь подключиться в простой java, он отлично работает.AccessControlException при использовании спящего режима в облаке приложений wso2

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); 

ответ

0

По этой линии:

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

Ваш процесс Java имеет некоторые Security-политики включены. Это один по крайней мере, точно:

permission java.lang.RuntimePermission "createClassLoader"; 

Вы должны отключить эту настройку, в противном случае приложение не будет разрешено создавать новый загрузчик классов, и это, очевидно, нуждается в этом.

+0

как сделать это на wso2 сервер. облако приложений – rehan

0

Действительно, диспетчер безопасности предотвращает нагрузку. WSO2 Cloud должен быть в состоянии включить Hibernate для вас, если вы отправите запрос: просто войдите в приложение WSO2 App Cloud и нажмите Support/Свяжитесь с нами, чтобы отправить запрос.