当前位置: 首页 > 知识库问答 >
问题:

使用WebSphere MBeans更改JVM属性

笪健
2023-03-14

我试图创建一个java程序,它将在WebSphere上编辑JVM的类路径属性。我现在能够将程序连接到服务器,也能找到节点,但我不知道下一步该做什么。我应该使用哪个MBean来找到JVM类路径并对其进行配置?我知道我可以在管理控制台上编辑它,但是对于这个任务,我真的必须使用Java程序来完成。

我也不允许使用wsadmin和jacl/jython脚本。

这是我目前的代码:

public class Expi 
{
    private AdminClient adminClient;
    private ObjectName nodeAgent;
    private AdminService adminSF;

    String hostName = "localhost";
    String hostPort = "8880";
    String nodeName = "node1";
    String servName = "server1";

    public static void main(String [] args) throws NamingException, AdminException
    {
        Expi xp = new Expi();

        xp.createAdminClient();
        xp.getNodeAgentMBean(nodeName);
        xp.testMB();
    }

    private void createAdminClient()
    {
         // Set properties for the connection 
        Properties connectProps = new Properties();
        connectProps.setProperty(
        AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
        connectProps.setProperty(AdminClient.CONNECTOR_HOST, hostName);
        connectProps.setProperty(AdminClient.CONNECTOR_PORT, hostPort);
        connectProps.setProperty(AdminClient.USERNAME, hostName);
        connectProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "false");
        // Connection Status Update
        try
        {
            adminClient = AdminClientFactory.createAdminClient(connectProps);
            System.out.println("Connected to SOAP Connection!");
        }
        catch (java.lang.Exception e)
        {
            System.out.println("Exception creating admin client: " + e);
            System.exit(-1);
        }       
    }

     private void getNodeAgentMBean(String nodeName) throws NamingException
        {
            // Finding the specified node
            try
            {
                String query = "WebSphere:type=Server,node="+ nodeName + ",*";
                ObjectName queryName = new ObjectName(query);
                Set s = adminClient.queryNames(queryName, null);
                if (!s.isEmpty())
                {
                    nodeAgent = (ObjectName)s.iterator().next();   
                    System.out.println("Specified Node Found:" + nodeName);
                }
                else
                {
                    System.out.println("Node agent MBean was not found");
                    System.exit(-1);
                }
            }
            catch (MalformedObjectNameException e)
            {
                System.out.println(e);
                System.exit(-1);
            }
            catch (java.lang.Exception e)
            {
                System.out.println(e);
                System.exit(-1);
            }
        }

    private void testMB() //find the correct MBean and use it to edit the values
    {
        AdminServiceFactory.getAdminService();
        AdminServiceFactory.getMBeanFactory();

    }

}

任何帮助都将不胜感激。非常感谢。

共有1个答案

东郭骁
2023-03-14

您可以使用AdminClient API执行管理命令。由于没有像JACL或JYTHON那样很好的文档记录,所以很难找到具体的操作。

下面提供了简单的“列表节点”命令的示例。您可以对“列表服务器”使用相同的方法,并获取要修改的特定服务器对象。获取服务器对象后,您可以查看下面的相同文档,了解如何对特定目标对象执行命令。

AdminCommand cmd = cmdMgr.createCommand("listNodes");
cmd.setConfigSession(session);

AsyncCommandClient  asyncCmdClientHelper = 
new AsyncCommandClient(session, null);
asyncCmdClientHelper.execute(cmd);

CommandResult result = cmd.getCommandResult(); 
if (result.isSuccessful()) {
    System.out.println("Successfully executed the command");
    System.out.println("Result: ");
    Object resultData = result.getResult();
    if (resultData instanceof Object[]) {
        Object[] resDataArr = (Object[])resultData;
        for (Object resData : resDataArr) {
            System.out.println(resData);
        }   
    } else {
        System.out.println(resultData);
    }
 } else {
    System.out.println("Failed to execute the command");
    result.getException().printStackTrace();
}

文档链接 : https://www.ibm.com/developerworks/websphere/techjournal/1303_samantary/1303_samantary.html

 类似资料:
  • 问题内容: 有没有一种方法可以使用jQuery更改CSS类的属性,而不是元素属性? 这是一个实际的例子: 我上课有一个div 我想更改类背景属性,而不是已分配类背景的元素。 如果我使用jQuery .css()方法做到这一点: 它会影响现在具有class的元素。到这里为止一切都很好。但是,如果我进行Ajax调用,并在class中插入更多div ,则这些背景将不会具有绿色背景,而它们将具有初始背景。

  • 问题内容: 我需要找到一种使用JavaScript更改CSS:hover属性的方法。 例如,假设我有以下HTML代码: 以及以下CSS代码: 我想使用JavaScript将悬停属性更改为例如background:#00ff00。知道我可以使用JavaScript通过以下方式访问样式背景属性: 但是我不知道:hover的JavaScript等效项。如何使用JavaScript更改这些的:hover背

  • 问题内容: 我使用FlexJson进行序列化,唯一的问题是它会生成小写的字段名,而我需要它们以大写开头: 当序列化时,字段被序列化为,而我需要它被序列化。 如何指定输出字段名称?我可以使用一些属性来指定所需的序列化名称吗? 问题答案: 您可以使用“ 自定义变压器” 来实现。根据Flexjson页面转换器是: 负责确定如何将传入的对象转换为JSON,对JSONContext对象进行适当的调用以输出J

  • 问题内容: 我想使用PHP DOMDocument更改标签属性的值。 例如,假设我们有以下这行HTML: 我将上述代码加载到PHP中,如下所示: 我想使用PHP的DOMDocument扩展名将“ href”值更改为“ http://google.com/”。这可能吗? 与往常一样感谢您的帮助! 问题答案:

  • 问题内容: 我喜欢引导程序示例的外观 但是我需要在 .bs-docs-example:之后 动态更改 内容 ,如下所示: __ 这有可能吗?怎么样? 问题答案: 实际上,我发现了一个不涉及的解决方案:之后(我对CSS太不好了,所以我没有早就考虑过…)我也对CSS有所了解。开始 : 并像这样使用它: 我希望能有所帮助。

  • 我正在用selenium自动化一个应用程序。没有像id这样的普通标签,我可以通过它找到元素。所以我使用的是xpath[driver.findElement(By.xpath())]。但是现在我发现WebElement的一些XPath在运行时动态变化,所以我的测试用例失败了。甚至相对xpath选项也不适用于HTML。我正在粘贴AUT的html的一部分。请让我知道如何处理这种情况。