1

我试图遵循 mbeans for weblogic 的文档并创建一个 Web 应用程序来访问在服务器中部署的另一个应用程序中运行的已经创建的自定义 bean。我正在使用此代码

   InitialContext ctx = new InitialContext();
    MBeanServer    server = (MBeanServer)ctx.lookup("java:comp/env/jmx/runtime");
    String serverName = System.getProperty("weblogic.Name");



         ObjectName on =new ObjectName("com.myCompanyName:Name=MyCutomBean,Type=MyCutomBean");
         boolean boolresult=(Boolean)server.invoke(on, "myMethod",
         new Object[]{"a","b","c"}
         ,new String[]{"java.lang.String","java.lang.String","java.lang.String"}); //throw exception
          out.print(result);
         out.print(boolresult);

当我尝试访问我们的自定义 bean 时,我得到了这个异常:

不允许访问主题:principals=[],在 ResourceType:名称操作:执行,目标:myMethod

可能是什么问题呢 ?

4

1 回答 1

2

我终于找到了避免此异常的解决方案,您需要使用以下方法对您的上下文进行身份验证:

Hashtable props = new Hashtable();
      props.put(Context.INITIAL_CONTEXT_FACTORY,
                "weblogic.jndi.WLInitialContextFactory");

      props.put(Context.SECURITY_PRINCIPAL,   "<userName>");
      props.put(Context.SECURITY_CREDENTIALS, "<password>");
      Context ctx = new InitialContext(props);  MBeanServer    server = (MBeanServer)ctx.lookup("java:comp/env/jmx/runtime");

希望这会对某人有所帮助

于 2012-01-13T08:54:22.617 回答