Weblogic:Java调用Weblogic API创建用户和修改密码

来源:互联网 发布:cs算法 编辑:程序博客网 时间:2024/05/22 03:32

介绍

如果要使用Weblogic内嵌的LDAP来做验证,普通用户无法直接修改自己的密码,需要管理员登录weblogic console才能进行修改。weblogic提供api使用java代码来修改。

代码

import java.io.IOException;import java.net.MalformedURLException;import java.util.Hashtable;import javax.management.InstanceNotFoundException;import javax.management.MBeanException;import javax.management.MBeanServerConnection;import javax.management.MalformedObjectNameException;import javax.management.ObjectName;import javax.management.ReflectionException;import javax.management.remote.JMXConnector;import javax.management.remote.JMXConnectorFactory;import javax.management.remote.JMXServiceURL;import javax.naming.Context;public class DefaultAuthenticatorAdapter {    private static MBeanServerConnection connection;    private static JMXConnector connector;    private static ObjectName service;    static {        try {            service =                    new ObjectName("Security:Name=myrealmDefaultAuthenticator");        } catch (MalformedObjectNameException e) {            e.printStackTrace();        }    }    public void connection(String hostname, String portString,                                      String username,                                      String password) throws IOException,                                                              MalformedURLException {        String protocol = "t3";        Integer portInteger = Integer.valueOf(portString);        int port = portInteger.intValue();        String jndiroot = "/jndi/";        String mserver = "weblogic.management.mbeanservers.domainruntime";        JMXServiceURL serviceURL =            new JMXServiceURL(protocol, hostname, port, jndiroot + mserver);        Hashtable h = new Hashtable();        h.put(Context.SECURITY_PRINCIPAL, username);        h.put(Context.SECURITY_CREDENTIALS, password);        h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,              "weblogic.management.remote");        h.put("jmx.remote.x.request.waiting.timeout", new Long(10000));        connector = JMXConnectorFactory.connect(serviceURL, h);        connection = connector.getMBeanServerConnection();    }    public void createUser(String username, String password,                           String description) throws InstanceNotFoundException,                                                      MBeanException,                                                      ReflectionException,                                                      IOException {        Object[] params = { username, password, description };        String[] signature = { "java.lang.String", "java.lang.String", "java.lang.String" };        connection.invoke(service, "createUser", params, signature);    }        public void changeUserPassword(String username, String oldPassword, String newPassword) {        try {            Object[] params = { username, oldPassword, newPassword };            String[] signature = { "java.lang.String", "java.lang.String", "java.lang.String" };            connection.invoke(service, "changeUserPassword", params, signature);        } catch (InstanceNotFoundException e) {            e.printStackTrace();        } catch (MBeanException e) {            String message = e.getMessage();            System.out.println("message = " + message);        } catch (ReflectionException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }        public static void main(String[] args) throws Exception {        String hostname = "10.1.36.47";        String portString = "7101";        String username = "weblogic";        String password = "welcome1";        DefaultAuthenticatorAdapter c = new DefaultAuthenticatorAdapter();        c.connection(hostname, portString, username, password);        c.createUser("test1", "welcome1", "dddddddddddddddddd");        //c.changeUserPassword("test1", "welcome3", "welcome4");        connector.close();    }}


原创粉丝点击