Search in sources :

Example 26 with Domain

use of com.sun.enterprise.config.serverbeans.Domain in project Payara by payara.

the class DomainDiscoveryService method discoverNodes.

@Override
public Iterable<DiscoveryNode> discoverNodes() {
    logger.fine("Starting Domain Node Discovery");
    List<DiscoveryNode> nodes = new LinkedList<>();
    Domain domain = Globals.getDefaultHabitat().getService(Domain.class);
    ServerContext ctxt = Globals.getDefaultHabitat().getService(ServerContext.class);
    ServerEnvironment env = Globals.getDefaultHabitat().getService(ServerEnvironment.class);
    // add the DAS
    HazelcastRuntimeConfiguration hzConfig = domain.getExtensionByType(HazelcastRuntimeConfiguration.class);
    if (!env.isDas()) {
        try {
            // first get hold of the DAS host
            logger.fine("This is a Standalone Instance");
            String dasHost = hzConfig.getDASPublicAddress();
            if (dasHost == null || dasHost.isEmpty()) {
                dasHost = hzConfig.getDASBindAddress();
            }
            dasHost = Optional.ofNullable(initAddress(dasHost, 0)).map(InetSocketAddress::getHostString).orElse("");
            if (dasHost.isEmpty()) {
                // ok drag it off the properties file
                logger.fine("Neither DAS Public Address or Bind Address is set in the configuration");
                InstanceDirs instance = new InstanceDirs(env.getInstanceRoot());
                Properties dasProps = new Properties();
                dasProps.load(new FileInputStream(instance.getDasPropertiesFile()));
                logger.fine("Loaded the das.properties file from the agent directory");
                dasHost = dasProps.getProperty("agent.das.host");
                // then do an IP lookup
                dasHost = InetAddress.getByName(dasHost).getHostAddress();
                logger.log(Level.FINE, "Loaded the das.properties file from the agent directory and found DAS IP {0}", dasHost);
            }
            if (dasHost.isEmpty() || dasHost.equals("127.0.0.1") || dasHost.equals("localhost")) {
                logger.fine("Looks like the DAS IP is loopback or empty let's find the actual IP of this machine as that is where the DAS is");
                nodes.add(new SimpleDiscoveryNode(new Address(chosenAddress.get(), Integer.parseInt(hzConfig.getDasPort()))));
            } else {
                logger.log(Level.FINE, "DAS should be listening on {0}", dasHost);
                nodes.add(new SimpleDiscoveryNode(new Address(dasHost, Integer.valueOf(hzConfig.getDasPort()))));
            }
            // also add all nodes we are aware of in the domain to see if we can get in using start port
            logger.fine("Also adding all known domain nodes and start ports in case the DAS is down");
            for (Node node : domain.getNodes().getNode()) {
                InetAddress address = InetAddress.getByName(node.getNodeHost());
                if (!address.isLoopbackAddress()) {
                    logger.log(Level.FINE, "Adding Node {0}", address);
                    nodes.add(new SimpleDiscoveryNode(new Address(address.getHostAddress(), Integer.valueOf(hzConfig.getStartPort()))));
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(DomainDiscoveryService.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else if (env.isMicro()) {
        try {
            logger.log(Level.FINE, "We are Payara Micro therefore adding DAS {0}", hzConfig.getDASPublicAddress());
            // check if user has added locahost as unlikely to work
            String dasHost = Optional.ofNullable(initAddress(hzConfig.getDASPublicAddress(), 0)).map(InetSocketAddress::getHostString).orElse("");
            if (hzConfig.getDasPort().equals("4848")) {
                logger.log(Level.WARNING, "You have specified 4848 as the datagrid domain port however this is the default DAS admin port, the default domain datagrid port is 4900");
            }
            if (dasHost.isEmpty() || dasHost.equals("127.0.0.1") || dasHost.equals("localhost")) {
                nodes.add(new SimpleDiscoveryNode(new Address(chosenAddress.get(), Integer.parseInt(hzConfig.getDasPort()))));
            } else {
                nodes.add(new SimpleDiscoveryNode(new Address(InetAddress.getByName(dasHost), Integer.valueOf(hzConfig.getDasPort()))));
            }
        } catch (UnknownHostException | NumberFormatException ex) {
            Logger.getLogger(DomainDiscoveryService.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else {
        // ok this is the DAS
        logger.fine("We are the DAS therefore we will add all known nodes with start port as IP addresses to connect to");
        // Embedded runtimese don't have nodes
        if (domain.getNodes() == null) {
            nodes.add(new SimpleDiscoveryNode(new Address(chosenAddress.get(), Integer.parseInt(hzConfig.getStartPort()))));
        } else {
            for (Node node : domain.getNodes().getNode()) {
                try {
                    InetAddress address = InetAddress.getByName(node.getNodeHost());
                    if (!address.isLoopbackAddress()) {
                        logger.log(Level.FINE, "Adding Node {0}", address);
                        nodes.add(new SimpleDiscoveryNode(new Address(address.getHostAddress(), Integer.valueOf(hzConfig.getStartPort()))));
                    } else {
                        // we need to add our IP address so add each interface address with the start port
                        nodes.add(new SimpleDiscoveryNode(new Address(chosenAddress.get(), Integer.parseInt(hzConfig.getStartPort()))));
                    }
                } catch (IOException ex) {
                    Logger.getLogger(DomainDiscoveryService.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
    return nodes;
}
Also used : DiscoveryNode(com.hazelcast.spi.discovery.DiscoveryNode) SimpleDiscoveryNode(com.hazelcast.spi.discovery.SimpleDiscoveryNode) Address(com.hazelcast.cluster.Address) InetAddress(java.net.InetAddress) InetSocketAddress(java.net.InetSocketAddress) MemberAddressPicker.initAddress(fish.payara.nucleus.hazelcast.MemberAddressPicker.initAddress) InetSocketAddress(java.net.InetSocketAddress) Node(com.sun.enterprise.config.serverbeans.Node) DiscoveryNode(com.hazelcast.spi.discovery.DiscoveryNode) SimpleDiscoveryNode(com.hazelcast.spi.discovery.SimpleDiscoveryNode) IOException(java.io.IOException) Properties(java.util.Properties) LinkedList(java.util.LinkedList) FileInputStream(java.io.FileInputStream) ServerContext(org.glassfish.internal.api.ServerContext) ServerEnvironment(org.glassfish.api.admin.ServerEnvironment) InstanceDirs(com.sun.enterprise.util.io.InstanceDirs) SimpleDiscoveryNode(com.hazelcast.spi.discovery.SimpleDiscoveryNode) Domain(com.sun.enterprise.config.serverbeans.Domain) InetAddress(java.net.InetAddress)

Example 27 with Domain

use of com.sun.enterprise.config.serverbeans.Domain in project Payara by payara.

the class JmsHandlers method getMBeanServerConnection.

private static MBeanServerConnection getMBeanServerConnection(String target) throws ConnectorRuntimeException, Exception {
    ServiceLocator habitat = GuiUtil.getHabitat();
    Domain domain = habitat.getService(Domain.class);
    Cluster cluster = domain.getClusterNamed(target);
    String configRef = null;
    if (cluster == null) {
        Server server = domain.getServerNamed(target);
        configRef = server.getConfigRef();
    } else {
        configRef = cluster.getConfigRef();
    }
    PhysicalDestinations pd = new PhysicalDestinations();
    MQJMXConnectorInfo mqInfo = pd.getConnectorInfo(target, configRef, habitat, domain);
    return mqInfo.getMQMBeanServerConnection();
}
Also used : ServiceLocator(org.glassfish.hk2.api.ServiceLocator) MBeanServer(javax.management.MBeanServer) Server(com.sun.enterprise.config.serverbeans.Server) Cluster(com.sun.enterprise.config.serverbeans.Cluster) Domain(com.sun.enterprise.config.serverbeans.Domain) MQJMXConnectorInfo(org.glassfish.jms.admin.cli.MQJMXConnectorInfo)

Example 28 with Domain

use of com.sun.enterprise.config.serverbeans.Domain in project Payara by payara.

the class WebHandlers method resolveDynamicPort.

@Handler(id = "py.resolveDynamicPort", input = { @HandlerInput(name = "listenerName", type = String.class, required = true), @HandlerInput(name = "configName", type = String.class, required = false, defaultValue = "server-config") }, output = { @HandlerOutput(name = "result", type = String.class) })
public static void resolveDynamicPort(HandlerContext handlerCtx) {
    String listenerName = (String) handlerCtx.getInputValue("listenerName");
    String configName = (String) handlerCtx.getInputValue("configName");
    GrizzlyService grizzlyService = GuiUtil.getHabitat().getService(GrizzlyService.class);
    Domain domain = GuiUtil.getHabitat().getService(Domain.class);
    Config config = domain.getConfigNamed(configName);
    NetworkListener listener = config.getNetworkConfig().getNetworkListener(listenerName);
    // if DAS
    if (listener != null && configName.equals("server-config")) {
        handlerCtx.setOutputValue("result", grizzlyService.getRealPort(listener));
    } else if (listener != null) {
        handlerCtx.setOutputValue("result", listener.getPort());
    }
}
Also used : GrizzlyService(com.sun.enterprise.v3.services.impl.GrizzlyService) Config(com.sun.enterprise.config.serverbeans.Config) Domain(com.sun.enterprise.config.serverbeans.Domain) NetworkListener(org.glassfish.grizzly.config.dom.NetworkListener) Handler(com.sun.jsftemplating.annotation.Handler)

Example 29 with Domain

use of com.sun.enterprise.config.serverbeans.Domain in project Payara by payara.

the class OSGIConsoleHandlers method getConsoleUrl.

@Handler(id = "getConsoleUrl", input = { @HandlerInput(name = "instanceName", type = String.class, required = true) }, output = { @HandlerOutput(name = "consoleUrl", type = String.class) })
public static void getConsoleUrl(HandlerContext handlerCtx) {
    String instanceName = (String) handlerCtx.getInputValue("instanceName");
    Domain domain = Globals.get(Domain.class);
    Server server = domain.getServerNamed(instanceName);
    String port = null;
    SystemProperty httpPort = server.getSystemProperty(http_port);
    if (httpPort != null) {
        port = httpPort.getValue();
    } else {
        // if port is not set as system property, get it from config
        Config cfg = server.getConfig();
        SystemProperty httpConfigPort = cfg.getSystemProperty(http_port);
        if (httpConfigPort != null) {
            port = httpConfigPort.getValue();
        }
    }
    if (port == null) {
        throw new RuntimeException("Not able to get HTTP_LISTENER_PORT " + "for instance : " + instanceName);
    }
    Node node = domain.getNodeNamed(server.getNodeRef());
    String host = node.getNodeHost();
    String consoleUrl = "http://" + host + ":" + port + consolePath;
    handlerCtx.setOutputValue("consoleUrl", consoleUrl);
}
Also used : Server(com.sun.enterprise.config.serverbeans.Server) Config(com.sun.enterprise.config.serverbeans.Config) Node(com.sun.enterprise.config.serverbeans.Node) Domain(com.sun.enterprise.config.serverbeans.Domain) SystemProperty(com.sun.enterprise.config.serverbeans.SystemProperty) Handler(com.sun.jsftemplating.annotation.Handler)

Example 30 with Domain

use of com.sun.enterprise.config.serverbeans.Domain in project Payara by payara.

the class ListCustomResourcesTest method setUp.

@Before
public void setUp() {
    parameters = new ParameterMap();
    cr = habitat.getService(CommandRunner.class);
    context = new AdminCommandContextImpl(LogDomains.getLogger(ListCustomResourcesTest.class, LogDomains.ADMIN_LOGGER), new PropsFileActionReporter());
    Resources resources = habitat.<Domain>getService(Domain.class).getResources();
    assertTrue(resources != null);
    for (Resource resource : resources.getResources()) {
        if (resource instanceof org.glassfish.resources.config.CustomResource) {
            origNum = origNum + 1;
        }
    }
}
Also used : AdminCommandContextImpl(org.glassfish.api.admin.AdminCommandContextImpl) Resource(com.sun.enterprise.config.serverbeans.Resource) ParameterMap(org.glassfish.api.admin.ParameterMap) Resources(com.sun.enterprise.config.serverbeans.Resources) PropsFileActionReporter(com.sun.enterprise.admin.report.PropsFileActionReporter) Domain(com.sun.enterprise.config.serverbeans.Domain) CommandRunner(org.glassfish.api.admin.CommandRunner) Before(org.junit.Before)

Aggregations

Domain (com.sun.enterprise.config.serverbeans.Domain)70 Test (org.junit.Test)21 Server (com.sun.enterprise.config.serverbeans.Server)15 ConfigApiTest (com.sun.enterprise.configapi.tests.ConfigApiTest)12 Dom (org.jvnet.hk2.config.Dom)11 PropertyVetoException (java.beans.PropertyVetoException)10 Cluster (com.sun.enterprise.config.serverbeans.Cluster)7 Resources (com.sun.enterprise.config.serverbeans.Resources)7 ServiceLocator (org.glassfish.hk2.api.ServiceLocator)7 ServerContext (org.glassfish.internal.api.ServerContext)7 Config (com.sun.enterprise.config.serverbeans.Config)6 Resource (com.sun.enterprise.config.serverbeans.Resource)6 ParameterMap (org.glassfish.api.admin.ParameterMap)6 TransactionFailure (org.jvnet.hk2.config.TransactionFailure)6 DeploymentGroup (fish.payara.enterprise.config.serverbeans.DeploymentGroup)5 HashMap (java.util.HashMap)5 Map (java.util.Map)5 Before (org.junit.Before)5 ConfigModel (org.jvnet.hk2.config.ConfigModel)5 PropsFileActionReporter (com.sun.enterprise.admin.report.PropsFileActionReporter)4