【发布时间】:2012-10-05 06:24:59
【问题描述】:
我需要开发一个应用程序来管理 WebSphere Application Server v7.0.0.11。我探索了一下,发现我们可以使用 Mbeans。实际上我需要创建类似于 Web-sphere 的 Web 控制台的东西。
我的问题是应用程序应该在 C# .net 中,所以是否有任何连接器/适配器来调用 web-sphere 的管理 API。请指出正确的方向。
我是 C#.net 开发人员和 java/websphere 的新手,我尝试使用 IBM/Webshpere/Cimrepos 目录中的包从 IBM 站点创建管理客户端示例。 Jar 文件的名称是 com.ibm.wplc.was_7.0.0.11.jar 我将那个 jar 文件解压缩到同一个文件夹中。
所以现在我的应用程序已启动,成功连接到 websphere 并在 nodeAgent 上找到 mbean。我在调用 mbean 时遇到的问题。我收到以下错误消息。
exception invoking launchProcess : javax.management.ReflectionExcetion: Target Method not found com.ibm.ws.management.nodeagent.NodeAgent.launchProcess
我正在使用以下 url 获取 mbean 列表
我尝试使用 nodeAgent mbean 中的不同方法,但没有任何乐趣,我总是遇到同样的异常 "method not found"。
以下是调用启动过程的代码
private void invokeLaunchProcess(String serverName)
{
// Use the launchProcess operation on the NodeAgent MBean to start
// the given server
String opName = "launchProcess";
String signature[] = { "java.lang.String" };
String params[] = { serverName };
boolean launched = false;
try
{
Boolean b = (Boolean)adminClient.invoke(nodeAgent, opName, params, null);
launched = b.booleanValue();
if (launched)
System.out.println(serverName + " was launched");
else
System.out.println(serverName + " was not launched");
}
catch (Exception e)
{
System.out.println("Exception invoking launchProcess: " + e);
}
}
完整代码见以下链接
请让我知道我做错了什么,我需要包含一些其他包吗?我浏览了com.ibm.wplc.was_7.0.0.11.jar,com\ibm\ws\managemnt 中没有任何名为 nodeagent 的文件夹。我在 Appserver\runtimes 库中找到了相同的 jar 文件。
非常感谢任何帮助,在此先感谢。
获取 Mbean
private void getNodeAgentMBean(String nodeName)
{
// Query for the ObjectName of the NodeAgent MBean on the given node
try
{
String query = "WebSphere:type=NodeAgent,node=" + nodeName + ",*";
ObjectName queryName = new ObjectName(query);
Set s = adminClient.queryNames(queryName, null);
if (!s.isEmpty())
nodeAgent = (ObjectName)s.iterator().next();
else
{
System.out.println("Node agent MBean was not found");
System.exit(-1);
}
}
catch (MalformedObjectNameException e)
{
System.out.println(e);
System.exit(-1);
}
catch (ConnectorException e)
{
System.out.println(e);
System.exit(-1);
}catch (Exception e){
e.printStackTrace();
System.exit(-1);
}
System.out.println("Found NodeAgent MBean for node " + nodeName);
}
【问题讨论】:
-
能否给出获取节点代理时正在使用的查询,能否获取 ObjectName (NodeAgent) 的 Sysout 并给出结果?
-
感谢您回复添加获取节点代理的查询。添加获取nodeAgentmbean的代码sn-p
-
能否提供system.out.println("NodeAgent : "+nodeAgent);的结果
-
@sgpalit Follwoing 是 system.out.println("Node Agent:" +nodeAgent) Node Agent: WebSphere:name=NodeAgent,process=nodeagent,platform= 的结果common,node=node02,diagnosticProvider=true,version=7.0.0.11,type=NodeAgent,mbeanIdentifier=NodeAgent,Cell=MBcell_1,spec=1.0
-
我没有解决方案,但我可以建议一些其他方法来检查它是否有效。您可以尝试运行 wsadmin 工具并尝试从中启动服务器吗?是你的JDK,IBM JDK?
标签: java jmx websphere-7 mbeans