Java

jconsole で WebLogic 9.x に接続すると " User does not have permission on weblogic.management.mbeanservers"

JDK1.5付属の jconsole で WebLogic 9.2 に接続しようとしたら以下の様な警告がでました。
—–
<2007/03/18 0時03分06秒 JST> org.omg.CORBA.NO_PERMISSION: User does not have permission on weblogic.management.mbeanservers to perform lookup operation. vmcid: 0x0 minor code
—–

管理コンソールを見るとデフォルトで IIOP の有効化にチェックがついているし、ユーザID/パスワードは指定しているのになんか変。
調べてみると同じ現象に遭遇している人がいましたが、解決策は出ていませんでした。
Weblogic integration problem

簡単に再現するけども確認済みおよび解決済みの問題にも挙がっていないのでバグではなさそう。

ちょっとドキュメントを見てみると、IIOP 接続を使うには詳細オプションからデフォルトのユーザ名、パスワードを設定する必要があることが分かりました。

管理コンソール > 環境 > サーバ > プロトコル > IIOP

設定後は再起動が必要です。
無事 WLS 内の MBean を覗くことができました。

Mac で動いてる jconsole

しかし、この設定をするとユーザID、パスワードなしにも接続ができてしまうようです。
jconsole自体リソースの消費が激しいので、ローカルの監視には使わないようにとのことですがリモートの監視目的でも WebLogic には向いていなさそうです。
なんとユーザID/パスワードなしでサーバのシャットダウンも行えてしまいました。

どうしても jconsole を使って IIOP で監視したい場合はMonitorグループにだけ所属するユーザをデフォルトユーザに割り当てれば良いですね。
認証無しで MBeans にアクセス出来てしまうことに変わりはありませんが。

以下検索用にフルスタックトレース。
・jconsole側
——-
Exception in thread “JConsole.addUrl” org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:897)
at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:99)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:430)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
at org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:244)
at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:440)
at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:492)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1817)
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1787)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:259)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
at sun.tools.jconsole.ProxyClient.(ProxyClient.java:117)
at sun.tools.jconsole.ProxyClient.getProxyClient(ProxyClient.java:87)
at sun.tools.jconsole.JConsole$2.run(JConsole.java:410)
Exception in thread “JConsole.addUrl” org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:897)
at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:99)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:430)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
at org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:244)
at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:440)
at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:492)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1817)
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1787)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:259)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
at sun.tools.jconsole.ProxyClient.(ProxyClient.java:117)
at sun.tools.jconsole.ProxyClient.getProxyClient(ProxyClient.java:87)
at sun.tools.jconsole.JConsole$2.run(JConsole.java:410)
Exception in thread “JConsole.addUrl” org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at java.lang.Class.newInstance0(Class.java:350)
at java.lang.Class.newInstance(Class.java:303)
at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:897)
at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:99)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:430)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
at org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:244)
at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:440)
at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:492)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1817)
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1787)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:259)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
at sun.tools.jconsole.ProxyClient.(ProxyClient.java:117)
at sun.tools.jconsole.ProxyClient.getProxyClient(ProxyClient.java:87)
at sun.tools.jconsole.JConsole$2.run(JConsole.java:410)
——-

・サーバ側
——-
<2007/03/18 0時03分06秒 JST> org.omg.CORBA.NO_PERMISSION: User does not have permission on weblogic.management.mbeanservers to perform lookup operation. vmcid: 0x0 minor code
: 0 completed: No。org.omg.CORBA.NO_PERMISSION: User does not have permission on weblogic.management.mbeanservers to perform lookup operation. vmcid: 0x0 minor code: 0 completed: No
at weblogic.corba.cos.naming.NamingContextImpl.throwNamingException(NamingContextImpl.java:509)
at weblogic.corba.cos.naming.NamingContextImpl.resolve(NamingContextImpl.java:169)
at weblogic.corba.cos.naming._NamingContextAnyImplBase._invoke(_NamingContextAnyImplBase.java:306)
at weblogic.corba.idl.CorbaServerRef.invoke(CorbaServerRef.java:244)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
Truncated. see log file for complete stacktrace
javax.naming.NoPermissionException: User does not have permission on weblogic.management.mbeanservers to perform lookup operation.
at weblogic.jndi.internal.ServerNamingNode.checkPermission(ServerNamingNode.java:415)
at weblogic.jndi.internal.ServerNamingNode.checkLookup(ServerNamingNode.java:394)
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:169)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
Truncated. see log file for complete stacktrace
>
——-