通过JMX调用操作会产生NoAccessRuntimeException

时间:2017-09-28 13:45:45

标签: java weblogic jndi jmx

我通过JMX远程调用WebLogic中的操作,我正在发送用户和密码,我已在服务器策略中设置了与用户访问JMX操作,但我收到了

Error creating bean with name 'httpJmxConnector': Invocation of init method failed; nested exception is weblogic.management.NoAccessRuntimeException: Access not allowed for subject: principals=[], on Resource weblogic.management.configuration.AppDeploymentMBean Operation: invoke , Target: lookupSubDeployment

这是我的代码:我错过了什么?

    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://theServerAddress:1004/jmxrmi");

    // set JMX Server credentials
    HashMap environment = new HashMap();
    String[]  credentials = new String[] {"theUserName", "thePassword"};
    environment.put (JMXConnector.CREDENTIALS, credentials);

    // connect and get connection to Server
    JMXConnector c = JMXConnectorFactory.connect(url, environment);
    MBeanServerConnection mbsc = c.getMBeanServerConnection();

    //  Create object name
    ObjectName serviceConfigName = new ObjectName("com.bea:Name=deployedApplication-ear,Type=AppDeployment");

    //  Invoke operation
    mbsc.invoke(serviceConfigName, "lookupSubDeployment", null, null);

    c.close();

1 个答案:

答案 0 :(得分:0)

请参阅以下网址以正确创建用户

http://weblogic-wonders.com/weblogic/2010/11/30/mbean-authorization-and-creating-jmx-policies/

  1. 登录WebLogic管理控制台。
  2. 导航至Security Realms。
  3. 选择要控制MBean访问权限的域名(例如,myrealm)
  4. 导航至配置>一般
  5. 选中“使用授权提供程序保护JMX Access”框。
  6. 重新启动所有托管服务器,包括AdminServer。
  7. 重新登录WebLogic管理控制台。
  8. 导航到角色和政策>领域政策。
  9. 点击链接JMX Policy Editor。
  10. 选择单选按钮GLOBAL SCOPE,然后单击“下一步”。
  11. 选择单选按钮ALL MBEAN TYPES,然后单击Next。
  12. 选择“操作:调用权限”,然后单击“创建策略”。
  13. 点击添加条件。
  14. 点击“下一步”。
  15. 在“角色参数名称”字段中添加管理员和监控角色。
  16. 单击“完成”,然后单击“保存”。
  17. 退出并重新登录,然后重试。